CHECK 제약조건
CHECK 제약조건은 해당 열에 들어갈 수 있는 데이터를 제한할 수 있는 제약조건이다.
CREATE TABLE RESERVATION( -- 예약
RESERVATION_NUM INT PRIMARY KEY, -- 예약 번호 PK
RESERVATION_PAYMENT_NUM INT NOT NULL, -- 결제 번호 FK
RESERVATION_REGISTRATION_DATE DATE NOT NULL, -- 예약 날짜
RESERVATION_STATUS VARCHAR(20) DEFAULT '예약완료' NOT NULL CHECK(RESERVATION_STATUS IN('예약완료','예약취소')) --예약 상태
);
위의 컬럼 중 RESERVATION_STATUS는 예약 상태를 나타내는 컬럼으로, '예약완료' 혹은 '예약취소' 만 들어갈 수 있다.
원하지 않는 데이터가 삽입되는 것을 막기 위해 CHECK 제약조건을 사용해 제한을 두었다.
RESERVATION_STATUS를 INSERT/UPDATE할 때
CHECK 제약조건에 명시한 값이 아니라면 오류가 발생하게 된다.
다른 예제를 하나 더 확인해보겠다.
CREATE TABLE REVIEW( -- 리뷰
REVIEW_NUM INT PRIMARY KEY, -- 리뷰 번호 PK
REVIEW_CONTENT VARCHAR(100), -- 리뷰 내용
REVIEW_PRODUCT_NUM INT NOT NULL, -- 리뷰 상품 번호 FK
REVIEW_WRITER_ID VARCHAR(50), -- 작성자 FK
-- FK 제약조건 ON DELETE SET NULL 조건으로 인하여 NOT NULL 제약조건 삭제
REVIEW_REGISTRATION_DATE DATE DEFAULT SYSDATE, -- 작성 날짜
REVIEW_STAR INT NOT NULL CHECK (REVIEW_STAR BETWEEN 1 AND 5) -- 별점 남기기 // 별점은 무조건 있고 1~5 사이 (1~5만 받을 수 있도록 CHECK 제약조건 사용)
);
리뷰 테이블의 별점 컬럼에는 BETWEEN AND를 함께 사용하여,
1에서 5 사이의 데이터만 들어올 수 있도록 CHECK 제약조건을 사용해 주었다.
'SQL > SQL' 카테고리의 다른 글
[DBeaver] 디비버 설치 (1) | 2024.10.01 |
---|---|
[MySQL] MySQL 다운로드 / CLC 로 DATABASE, TABLE 생성 (0) | 2024.10.01 |
[SQL] NOT NULL 제약조건과 FK제약조건 (0) | 2024.09.29 |
[SQL] JOIN (0) | 2024.08.12 |
[SQL] FK (0) | 2024.08.12 |