DB Table 제약조건
。각column에 설정하여 저장되는데이터가 임의의 규칙을 항상 만족하도록 강제하는 조건
▶ 여러제약조건을 조합하여 부여가능
。데이터 입력 / 수정 / 삭제시 자동으로 검증
ex )empno int unique not nullcreate table employee( empno int primary key, empname char(10) unique, title char(10) default '사원', salary int check(salary < 60000), cardno int check( cardno in (1,2,3,4) ), supervisor int not null, dno int references department(deptno) on delete restrict on update cascade );
PRIMARY KEY
。해당Column을기본키로 설정하는제약조건empno int primary key -- postgresql empno int primary key auto_increment -- mysql
AUTO_INCREMENT
。MySQL에서 사용되는 기능으로데이터 삽입시식별용도의숫자형 컬럼의고유한 값을 증가시키는 용도
NOT NULL
。해당Column의도메인에Null값을 허용하지 않도록 설정하는제약조건supervisor int not null
UNIQUE
。 해당Column이중복값을 갖지 않도록하는제약조건empname char(10) unique
DEFAULT
。Column에 값 입력시값을 지정하지않아null인 경우 특정 값을기본값으로 설정title char(10) default '사원'
CHECK
。Column이 가질 수 있는 값의 범위를 지정salary int check(salary < 60000) cardno int check( cardno in (1,2,3,4) )
FOREIGN KEY
。해당Column을동일테이블의기본키또는 다른테이블의기본키로 종속하는외래키로 지정CONSTRAINT fk_emp_dept FOREIGN KEY (dept_id) REFERENCES department(deptno) -- MySQL dno int references department(deptno) -- POSTGRESQL▶
ALTER로 추가하는것을 권고
외래키 무결성 제약 조건 옵션
RESTRICT
。테이블의 특정데이터를 삭제 시 해당데이터와외래키로 이어진 다른테이블의데이터의 삭제를 제한
CASCADE
。해당데이터와외래키로 이어진 다른테이블의데이터도 연쇄적으로 삭제
SET NULL
。해당데이터와외래키로 이어진 다른테이블의데이터를NULL로 설정
SET DEFAULT
。해당데이터와외래키로 이어진 다른테이블의데이터를DEFAULT 값으로 설정