Search

제약 조건

대분류
DB
소분류
MySQL
주요 레퍼런스
https://dev-coco.tistory.com/55
수준
기초
태그
NOT NULL
UNIQUE
DEFAULT
최종 편집 일시
2024/10/27 15:32
생성 일시
2024/07/17 01:32
13 more properties

제약 조건(constraint)

데이터의 무결성을 지키기 위해, 데이터를 입력받을 때 실행되는 검사 규칙을 의미
이러한 제약 조건은 CREATE 문으로 테이블을 생성할 때나 ALTER 문으로 컬럼을 추가할 때도 설정할 수 있음.

NOT NULL

해당 필드는 NULL 값을 저장할 수 없다.
해당 제약 조건이 설정된 필드는 무조건 데이터를 소유하고 있어야 한다.

문법

CREATE TABLE 테이블이름 ( 필드이름 필드타입 NOT NULL, ... )
SQL
복사

간단한 예

CREATE TABLE Test ( ID INT NOT NULL, Name VARCHAR(30), ReserveDate DATE, RoomNum INT );
SQL
복사

UNIQUE

해당 필드는 서로 다른 값을 가져야 한다. (유니크함)
해당 제약 조건이 설정된 필드는 중복된 값을 저장할 수 없다.

문법

CREATE TABLE 테이블이름 ( 필드명 필드타입 UNIQUE, ... ) CREATE TABLE 테이블이름 ( 필드이름 필드타입, ..., [CONSTRAINT 제약조건이름] UNIQUE (필드이름) )
SQL
복사

간단한 예

CREATE TABLE Test ( ID INT UNIQUE, Name VARCHAR(30), ReserveDate DATE, RoomNum INT );
SQL
복사

PRIMARY KEY (기본 키)

기본 키
해당 필드는 NOT NULL과 UNIQUE 제약 조건 특징을 모두 가진다.
해당 제약 조건이 설정된 필드는 NULL값 및 중복된 값을 가질 수 없다.

문법

CREATE TABLE 테이블이름 ( 필드명 필드타입 UNIQUE, ... ) CREATE TABLE 테이블이름 ( 필드이름 필드타입, ..., [CONSTRAINT 제약조건이름] UNIQUE (필드이름) )
SQL
복사

간단한 예

CREATE TABLE Test ( ID INT PRIMARY KEY, Name VARCHAR(30), ReserveDate DATE, RoomNum INT );
SQL
복사

FOREIGN KEY (외래 키)

한 테이블을 다른 테이블과 연결해주는 역할
해당 필드는 하나의 테이블을 다른 테이블에 의존하게 만든다.
해당 제약 조건이 설정된 테이블에 레코드를 입력하면, 기준이 되는 테이블의 내용을 참조해서 레코드가 입력된다.
해당 키를 설정할 때 참조되는 테이블의 필드는 반드시 UNIQUE나 PRIMARY KEY가 설정되어 있어야 한다.

문법

CREATE TABLE 테이블이름( 필드이름 필드타입, ..., [CONSTRAINT 제약조건이름] FOREIGN KEY (필드이름) REFERENCES 테이블이름 (필드이름) )
SQL
복사

간단한 예

CREATE TABLE Test2( ID INT, ParentID INT, FOREIGN KEY (ParentID) REFERENCES Test1(ID) ON UPDATE CASCADE );
SQL
복사

구문

1.
ON DELETE : 참조되는 테이블의값이 삭제될 경우의 동작을 ON DELETE 구문으로 설정
2.
ON UPDATE : 참조되는 테이블의값이 수정될 경우의 동작을 ON UPDATE 구문으로 설정

설정 동작

1.
CASCADE : 참조되는 테이블에서 데이터를 삭제하거나 수정하면 참조하는 테이블에서도삭제와 수정이 같이 이루어짐
2.
SET NULL : 참조되는 테이블에서 데이터를 삭제하거나 수정하면 참조하는 테이블의 데이터는 NULL로 변경됨
3.
NO ACTION : 참조되는 테이블에서 데이터를 삭제하거나 수정하면 참조하는 테이블의데이터는 변경되지 않음
4.
SET DEFAULT : 참조되는 테이블에서 데이터를 삭제하거나 수정하면 참조하는 테이블의 데이터는필드의 기본값으로 설정
5.
RESTRICT : 참조하는 테이블에 데이터가 남아 있으면 참조되는 테이블의 데이터를삭제하거나 수정할 수 없음

DEFAULT

해당 필드의 기본값으로 설정하게 해준다.
레코드를 입력할 때 해당 필드 값을 전달하지 않으면, 자동으로 설정된 기본 값을 저장

문법

CREATE TABLE 테이블이름 ( 필드이름 필드타입 DEFAULT 기본값, ... )
SQL
복사

간단한 예

CREATE TABLE Test ( ID INT, Name VARCHAR(30) DEFAULT 'Anonymous', ReserveDate DATE, RoomNum INT );
SQL
복사