Tiny Bunny [SQL] CHECK 제약조건 - 솜님의 블로그
솜님의 블로그
카테고리
작성일
2024. 9. 29. 15:53
작성자
겨울솜사탕

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