Search

제약조건

제약조건

제약조건(constraint)이란 데이터의 무결성을 지키기 위해 데이터를 입력 받을 때 실행되는 검사 규칙을 의미합니다.
이러한 제약 조건은 CREATE문으로 테이블을 생성할 때나 ALTER문으로 필드를 추가할 때도 설정할 수 있습니다.

 NOT NULL

-- CREATE문으로 NOT NULL 설정 CREATE TABLE [테이블이름] ( [컬럼이름] [컬럼타입] NOT NULL ); -- ALTER문으로 NOT NULL 설정 ALTER TABLE [테이블이름] ADD [컬럼이름] [컬럼타입] NOT NULL; -- 새로운 컬럼 추가 ALTER TABLE [테이블이름] MODIFY [컬럼이름] [컬럼타입] NOT NULL; -- 기존 컬럼 변경
SQL
복사
NULL 비허용, 중복 허용

 UNIQUE

-- CREATE문으로 UNIQUE 설정 CREATE TABLE [테이블이름] ( [컬럼이름] [컬럽타입] UNIQUE ); CREATE TABLE [테이블이름] ( [컬럼이름] [컬럼타입], UNIQUE ([컬럼이름]) ); CREATE TABLE [테이블이름] ( [컬럼이름] [컬럼타입], ..., CONSTRAINT [제약조건이름] UNIQUE ([컬럼이름]) ); -- ALTER문으로 UNIQUE 설정 ALTER TABLE [테이블이름] ADD UNIQUE ([컬럼이름]); ALTER TABLE [테이블이름] ADD CONSTRAINT [제약조건이름] UNIQUE ([컬럼이름]);
SQL
복사
NULL 허용, 중복 비허용
UNIQUE 제약조건을 설정하면 해당 필드는 자동으로 보조 인덱스(INDEX)로 만들어집니다.
만약 제약조건에 이름을 설정하면 ALTER-DROP문을 이용해 해당 제약조건을 삭제할 수 있습니다.

 PRIMARY KEY

-- CREATE문으로 PRIMARY KEY 설정 CREATE TABLE [테이블이름] ( [컬럼이름] [컬럽타입] PRIMARY KEY ); CREATE TABLE [테이블이름] ( [컬럼이름] [컬럼타입], PRIMARY KEY ([컬럼이름]) ); CREATE TABLE [테이블이름] ( [컬럼이름] [컬럼타입], ..., CONSTRAINT [제약조건이름] PRIMARY KEY ([컬럼이름]) ); -- ALTER문으로 PRIMARY KEY 설정 ALTER TABLE [테이블이름] ADD PRIMARY KEY ([컬럼이름]); ALTER TABLE [테이블이름] ADD CONSTRAINT [제약조건이름] PRIMARY KEY ([컬럼이름]); -- 기본키 삭제ALTER TABLE [테이블이름] DROP PRIMARY KEY;
SQL
복사
NULL 비허용, 중복 비허용, 테이블당 하나
NOT NULL과 UNIQUE의 특징을 모두 가지고 테이블 당 오직 하나의 컬럼에만 설정할 수 있습니다.
테이블의 데이터를 쉽고 빠르게 찾도록 도와주는 역할을 합니다.

 FOREIGN KEY

-- CREATE문으로 FOREIGN KEY 설정 CREATE TABLE [테이블이름] ( [컬럼이름] [컬럼타입], ..., CONSTRAINT [제약조건이름] FOREIGN KEY [컬럼이름] REFERENCES [테이블이름2(컬럼이름) ); -- ALTER문으로 FOREIGN KEY 설정 ALTER TABLE [자식 테이블이름] ADD CONSTRAINT [제약조건이름] FOREIGN KEY [자식 기본키] REFERENCES [부모 테이블이름(부모 기본키)] ON UPDATE [동작] ON DELETE [동작]; -- 외래키 삭제 ALTER TABLE [자식 테이블이름] DROP FOREIGN KEY [자식 외래키];
SQL
복사
한 테이블을 다른 테이블과 연결해주는 역할을 합니다.
FOREIGN KEY를 설정하려는 컬럼은 UNIQUE나 PRIMARY KEY가 설정되어 있어야 합니다.

 ON DELETE / ON UPDATE

CREATE TABLE [테이블이름] ( [컬럼이름] [컬럼타입], ..., FOREIGN KEY [컬럼이름] REFERENCES [테이블이름2(컬럼이름)] ON UPDATE [동작] ON DELETE [동작] );
SQL
복사
FOREIGN KEY에 의해 참조되는 테이블에서 데이터의 수정/삭제가 발생하면 참조하고 있는 테이블의 데이터도 같이 영향을 받습니다.
이 때 참조하고 있는 테이블의 동작은 다음 키워드를 사용하여 미리 설정할 수 있습니다.
ON DELETE : 참조되는 테이블의 값이 삭제될 경우의 동작
ON UPDATE : 참조되는 테이블의 값이 수정될 경우의 동작
설정할 수 있는 동작
CASCADE : 참조하는 테이블에서도 데이터의 삭제와 수정이 같이 이루어집니다.
SET NULL : 참조하는 테이블의 데이터가 NULL로 변경됩니다.
NO ACTION : 참조하는 테이블의 데이터가 변경되지 않습니다.
SET DEFAULT : 참조하는 테이블의 데이터는 컬럼의 기본값으로 설정됩니다.
RESTRICT : 참조하는 테이블에 데이터가 남아 있으면 참조되는 테이블의 데이터를 삭제하거나 수정할 수 없습니다.

 DEFAULT

-- CREATE문에서 DEFAULT 설정 CREATE TABLE [테이블이름] ( [컬럼이름] [컬럼타입] DEFAULT [기본값] ); -- ALTER문에서 DEFAULT 설정 ALTER TABLE [테이블이름] ADD or MODIFY [컬럼이름] [컬럼타입] DEFAULT [기본값]; ALTER TABLE [테이블이름] ALTER [컬럼이름] SET DEFAULT [기본값];
SQL
복사
데이터를 추가할 때 해당 컬럼 값을 전달하지 않으면 자동으로 설정된 기본값을 저장하도록 설정합니다.