특정 열이 반드시 값을 가져야 하는 제약조건입니다.
CREATE TABLE dept_n1 (
deptno INT(2) NOT NULL,
dname VARCHAR(14),
loc VARCHAR(13)
);
-- 성공 케이스
INSERT INTO dept_n1 VALUES (10, '개발부', '서울');
-- 실패 케이스 (에러 발생)
INSERT INTO dept_n1 VALUES (NULL, '영업부', '부산');
-- ERROR 1048 (23000): Column 'deptno' cannot be null
열에 중복된 값이 입력되는 것을 방지합니다.
CREATE TABLE dept_u1 (
deptno INT(2) UNIQUE,
dname VARCHAR(14),
loc VARCHAR(13)
);
-- 성공 케이스
INSERT INTO dept_u1 VALUES (20, '인사부', '대전');
-- 실패 케이스 (에러 발생)
INSERT INTO dept_u1 VALUES (20, '재무부', '대구');
-- ERROR 1062 (23000): Duplicate entry '20' for key 'deptno'
테이블의 각 행을 고유하게 식별하는 키입니다.
CREATE TABLE dept_p1 (
deptno INT(2) PRIMARY KEY,
dname VARCHAR(14),
loc VARCHAR(13)
);
-- 실패 케이스들
INSERT INTO dept_p1 VALUES (10, '영업부', '부산'); -- 중복 키
INSERT INTO dept_p1 VALUES (NULL, '재무부', '대전'); -- NULL 값
자동으로 증가하는 값을 생성하는 제약조건입니다.
CREATE TABLE dept_a1 (
deptno INT(2) PRIMARY KEY AUTO_INCREMENT,
dname VARCHAR(14),
loc VARCHAR(13)
);
-- 자동 증가 예시
INSERT INTO dept_a1 (dname, loc) VALUES ('개발부', '서울'); -- deptno: 1
INSERT INTO dept_a1 (dname, loc) VALUES ('영업부', '부산'); -- deptno: 2
입력되는 데이터가 특정 조건을 만족하는지 검증합니다.
CREATE TABLE dept_c1 (
deptno INT(2) CHECK (deptno >= 30),
dname VARCHAR(14),
loc VARCHAR(13)
);
-- 성공 케이스
INSERT INTO dept_c1 VALUES (30, '개발부', '서울');
-- 실패 케이스
INSERT INTO dept_c1 VALUES (20, '영업부', '부산'); -- 조건 불만족
여러 열을 조합하여 고유성을 보장하는 제약조건입니다.
CREATE TABLE order_u1 (
pcode INT(4),
ccode INT(4),
orderdate DATE,
etc VARCHAR(20),
CONSTRAINT UNIQUE (pcode, ccode)
);
-- 성공 케이스들
INSERT INTO order_u1 VALUES (1000, 1000, NOW(), 'order1');
INSERT INTO order_u1 VALUES (1000, 2000, NOW(), 'order2');
INSERT INTO order_u1 VALUES (2000, 1000, NOW(), 'order3');
-- 실패 케이스
INSERT INTO order_u1 VALUES (1000, 1000, NOW(), 'order4'); -- 복합키 중복
성능 고려
데이터 정합성
유지보수