[MySQL]제약조건(Constraint)개념 및 종류

윤재열·2022년 4월 7일
0

Mysql

목록 보기
6/8

제약조건(Constratin)

  • 제약조건이란 데이터의 무결성을 지키기 위해, 데이터를 입력받을 때 실행되는 검사 규칙을 의미합니다.

    무결성 : 정확성,일관성,유효성이 유지 되는것

  • 이러한 제약 조건은 CREATE문으로 테이블을 생성할 때 ALTER문으로 컬럼을 추가할 떄도 설정할 수 있습니다.

MySQL에서 사용할 수 있는 제약 조건

  1. NOT NULL
  2. UNIQUE
  3. PRIMARY KEY
  4. FOREIGN KEY
  5. DEFAULT

1. NOT NULL

  • NOT NULL제약 조건을 설정하면, 해당 필드는 NULL값을 저장할 수 없습니다.

  • 즉, 이 제약 조건이 설정된 필드는 무조건 데이터를 가지고 있어합니다.

  • 문법

CREATE TABLE 테이블이름
(
	필드이름 필드 타입 NOT NULL,
    .....
    )
  • 간단한 예
CREATE TABLE Test
(
	ID INT NOT NULL,
    Name VARCHAR(30),
    ReserveDate DATE,
    RoomNum INT
    );

2. UNIQUE

  • UNIQUE 제약 조건을 설정하면, 해당 필드는 서로 다른 값을 가져야 합니다.

  • 즉, 이 제약 조건이 설정된 필드는 중복된 값을 저장할 수 없습니다.

  • 문법

1. CREATE TABLE 테이블이름
(
	필드명 필드타입 UNIQUE,
    .....
    )
2. CREATE TABLE 테이블이름
(
	필드이름 필드타입,
    ....,
    [CONSTRAINT 제약조건이름]UNIQUE(필드이름)
)    
  • 위의 두문 법은 모두 해당 필드에 UNIQUE제약 조건을 설정 합니다.

  • 두번째 문법을 사용하면, 해당 제약 조건에 이름을 설정할 수 있습니다.

  • 간단한 예

CREATE TABLE Test
(
	ID INT UNIQUE,
    Name VARCHAR(30),
    ReserveDate DATE,
    RoomNum INT
)    

3. PRIMARY KEY(PK)

  • PRIMARY KEY제약 조건을 설정하면, 해당 필드는 NOT NULL과 UNIQUE 제약 조건의 특징을 모두 가집니다.

  • 따라서 이 제약조건이 설정된 필드는 NULL값을 가질 수 없으며, 또한 중복된 값을 가질 수 없습니다.

  • 이러한 PRIMARY KEY 제약 조건을 기본 키라고 한다.

  • 테이블의 데이터를 쉽고 빠르게 찾도록 도와주는 역할을 합니다.

  • 문법

1.CREATE TABLE 테이블이름
(
	필드이름 필드타입 PRIMARY KEY,
    ...
)

2. CREATE TABLE 테이블이름
(
	필드이름 필드타입,
    ....,
    [CONSTRAINT 제약조건 이름] PRIMARY KEY (필드이름)
)    
  • 간단한 예
CREATE TABLE Tests
(
	ID INT PRIMARY KEY,
    Name VARCHAR(30),
    ReserveDate DATE,
    RoomNum INT
);    

4. FOREIGN KEY

  • FOREIGN KEY 제약 조건을 설정한 필드르 외래 키라고 부르며, 한 테이블을 다른 테이블과 연결해주는 역할을 합니다.

  • 외래 키가 설정된 테이블에 레코드를 입력하면 , 기준이 되는 테이블의 내용을 참조해서 레코드가 입력됩니다.

  • 즉, FOREIGN KEY 제약 조건은 하나의 테이블을 다른 테이블에 의존하게 만듭니다.

  • FOREIGN KEY를 설정할 때 참조되는 테이블의 필드는 반드시 UNIQUE나 PRIMARY KEY가 설정되어 있어야 합니다.

  • 문법

CREATE TABLE 테이블이름
(
	필드이름 필드타입,
    ....,
    [CONSTRAINT 제약조건이름]
	FOREIGN KEY (필드이름)
    REGERENCES 테이블이름 (필드이름)
)    
  • 간단한 예
  • Test2 테이블의 ParentID필드에 Test1 테이블의 ID 필드를 참조하는 FOREIGN KEY제약 조건을 설정하는 예입니다.
CREATE TABLE Test2
(
	ID INT,
    Parent INT,
    FOREIGN KEY (ParentID)
    REFERENCES Tests1(ID) ON UPDATE CASCADE
  1. ON DELETE
    • 참조되는 테이블의 값이 삭제될 경우의 동작을 ON DELETE 구문으로 설정
  2. ON UPDATE
    • 참조되는 테이블의 값이 수정될 경우의 동작을 ON UPDATE구문으로 설정
  • 설정할 수 있는 동작
    1. CASCADE : 참조되는 테이블에서 데이터를 삭제하거나 수정하면 참조하는 테이블에서도 삭제와 수정이 같이 이루어짐.
    1. SET NULL : 참조되는 테이블에서 데이터를 삭제하거나 수정하면 참조하는 테이블의 데이터는 NULL로 변경됩니다.
    2. NO ACTION : 참조되는 테이블에서 데이터를 삭제하거나 수정하면 참조하는 테이블의 데이터는 변경되지 않습니다.
    3. SET DEFAULT : 참조되는 데이블에서 데이터를 삭제하거나 수정하면 참조하는 테이블의 데이터는 필드의 기본값으로 설정
    4. RESTRICT : 참조하는 테이블에 데이터가 남아 있으면 참조되는 데이터를 삭제하거나 수정 할 수 없습니다.

5. DEFAULT

  • DEFAULT 제약 조건은 해당 필드의 기본값을 설정할 수 있게 해줍니다.

  • 만약 레코드를 입력할 때 해당 필드 갑을 전달하지 않으면, 자동으로 설정된 기본 값을 저장합니다.

  • 문법

CREATE TABLE 테이블이름
(
	필드이름 필드타입 DEFAULT 기본값,
)    
  • 간단한 예
(
	ID INT<
    Name VARCHAR(30) DEFAULT 'Anonymous',
    ReserveDate DATE,
    RoomNum INT
);    
profile
블로그 이전합니다! https://jyyoun1022.tistory.com/

0개의 댓글