🧩 BE
home

테이블 제약 조건

Date
2024/08/02
Category
DB
Tag
Basic
Detail
제약 조건(constraint)이란 데이터의 무결성을 지키기 위해, 데이터를 입력받을 때 실행되는 검사 규칙을 의미한다. 이러한 제약 조건은 CREATE 문으로 테이블을 생성할 때나 ALTER 문으로 컬럼을 추가할 때 설정할 수 있다.
MySQL에서 사용할 수 있는 제약 조건들은 다음의 5가지이다.
1. NOT NULL 2. UNIQUE 3. PRIMARY KEY 4. FOREIGN KEY 5. DEFAULT
SQL
복사

NOT NULL

필드 값이 NULL 값을 가질 수 없게 설정한다. 즉, 이 조건이 설정된 필드는 무조건 데이터를 가지고 있어야한다.
CREATE TABLE Test ( ID INT NOT NULL, Name VARCHAR(30), ReserveDate DATE, RoomNum INT );
SQL
복사

UNIQUE

필드 값이 서로 다른 값을 가지도록 설정한다. 즉, 이 조건이 설정된 필드는 중복된 값을 저장할 수 없다.
CREATE TABLE Test ( ID INT UNIQUE, Name VARCHAR(30), ReserveDate DATE, RoomNum INT );
SQL
복사

PRIMARY KEY

필드는 NOT NULL과 UNIQUE 제약 조건의 특징을 모두 가진다. 즉, 이 조건이 설정된 필드는 NULL 값을 가질 수 없으며, 또한 중복된 값을 가질 수 없다.
INDEX : 검색 키로서 검색 속도를 향상시킨다. (UNIQUE, PRIMARY KEY 생성 시 자동으로 생긴다.)
CREATE TABLE Test ( ID INT PRIMARY KEY, Name VARCHAR(30), ReserveDate DATE, RoomNum INT );
SQL
복사

FOREIGN KEY

이 조건이 설정된 필드를 외래 키라고 부르며, 한 테이블을 다른 테이블과 연결해주는 역할을 한다. 외래 키가 설정된 테이블에 레코드를 입력하면, 기준이 되는 테이블의 내용을 참조해서 레코드가 입력된다.
즉, 이 조건은 하나의 테이블을 다른 테이블에 의존하게 만든다.
FOREIGN KEY를 설정할 때 참조되는 테이블의 필드는 반드시 UNIQUE나 PRIMARY KEY가 설정되어 있어야 한다.
아래는 Test2 테이블의 ParentID 필드를 Test1 테이블의 ID 필드를 참조하게하는 FOREIGN KEY 제약 조건의 예이다.
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 Test ( ID INT, Name VARCHAR(30) DEFAULT 'Anonymous', ReserveDate DATE, RoomNum INT );
SQL
복사

Reference