테이블에 제약을 설정함으로써 저장될 데이터를 제한할 수 있다.
CREATE TABLE로 작성할 때 제약을 같이 정의한다.
ALTER TABLE로 제약을 지정하거나 변경이 가능하다.
NOT NULL 제약 등 하나의 열에 대해 설정하는 제약은 열을 정의할 때 지정한다.
CREATE TABLE sample631 (
a INTEGER NOT NULL,
b INTEGER NOT NULL UNIQUE,
c VARCHAR(30)
);
열에 대한 제약을 열 제약
이라 부른다.
한 개의 제약으로 복수의 열에 제약을 설명하는 경우 테이블 제약
이라 부른다.
CREATE TABLE sample631 (
no INTEGER NOT NULL,
sub_no INTEGER NOT NULL UNIQUE,
name VARCHAR(30)
PRIMARY KEY(no, sub_no)
);
CREATE TABLE sample631 (
no INTEGER NOT NULL,
sub_no INTEGER NOT NULL UNIQUE,
name VARCHAR(30)
CONSTRAINT pkey_sample PRIMARY KEY(no, sub_no)
);
기존 테이블에도 나중에 제약을 추가할 수 있다.
열 제약 추가 시 ALTER TABLE로 열 정의를 변경할 수 있다. 기존 테이블 변경 시 제약을 위반하는 데이터 먼저 검사한다.
ALTER TABLE sample631 MODIFY c VARCHAR (30) NOT NULL;
ALTER TABLE의 ADD 하부 명령으로 추가 가능
열 제약 추가와 마찬가지로 기존의 행 검사하여 추가할 제약 위반 데이터 존재시 에러 발생
ALTER TABLE sample631 ADD CONSTRAINT pkey_sample PRIMARY KEY(a);
열 제약 삭제: 제약 추가와 동일하게 열 정의 변경
ALTER TABLE sample631 MODIFY c VARCHAR(30);
테이블 제약 삭제: DROP 하부 명령 사용 (제약명 지정)
ALTER TABLE smaple631 DROP CONSTRAINT pkey_sample631;
기본키 삭제인 경우
ALTER TABLE sample631 DROP PRIMARY KEY;
기본키로 지정할 열은 NOT NULL 제약이 설정되어 있어야 한다.
UPDATE 명령 실행시에도 제약 위반 값 검사 수행
기본키로 지정해 유일한 값을 가지도록 하는 구조가 기본키 제약 (유일성 제약)
기본키 구성 열은 복수라도 상관 없다. 복수의 열로 기본키로 지정했을 경우 키를 구성하는 모든 열을 사용해서 중복하는 값이 있는지 없는지를 검사한다.