DB Table 제약조건

TopOfTheHead·2026년 4월 13일

데이터베이스

목록 보기
11/13

DB Table 제약조건
。각 column에 설정하여 저장되는 데이터가 임의의 규칙을 항상 만족하도록 강제하는 조건
▶ 여러 제약조건을 조합하여 부여가능

데이터 입력 / 수정 / 삭제 시 자동으로 검증
ex ) empno int unique not null

create 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 값으로 설정
profile
공부기록 블로그

0개의 댓글