SQL 제약조건 중 CHECK는 특정 컬럼의 입력 가능한 값의 범위를 지정할 때 사용한다.
만약 어느 한 컬럼에 CHECK 제약조건을 설정한다면, 그 컬럼은 특정한 범위 안에서의 값만 허용한다.
만약 어느 한 테이블에 CHECK 제약조건을 설정한다면, 그 레코드의 다른 컬럼을 기반으로 특정 컬럼의 값을 제한할 수도 있다.
▼ 테이블을 생성할 때 CHECK 제약조건 생성하기
Age라는 컬럼에 18세 이상만 데이터를 넣을 수 있도록 하는 CHECK 제약조건을 가진 Customer라는 테이블을 만들어 보자.
MySQL:
CREATE TABLE Customer (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CHECK (Age>=18)
);
SQL Server / Oracle / MS Access:
CREATE TABLE Customer (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int CHECK (Age>=18)
);
CHECK 제약조건에 이름을 설정하고, 두개 이상의 컬럼에 CHECK 제약조건을 적용할 경우, 다음의 쿼리를 이용한다.
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Customer (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
City varchar(255),
CONSTRAINT CHK_Person CHECK (Age>=18 AND City='Sandnes')
);
▼ 테이블을 수정할 때 CHECK 제약조건 생성하기
이미 생성되어 있는 Customer 테이블에서 Age라는 이름의 컬럼에 CHECK 제약조건 생성하기.
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Customer
ADD CHECK (Age>=18);
이미 생성되어 있는 테이블에 CHECK 제약조건의 이름을 생성하고, 두 개 이상의 컬럼을 생성할 때, 다음의 쿼리를 이용한다.
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Customer
ADD CONSTRAINT CHK_PersonAge CHECK (Age>=18 AND City='Sandnes');
▼ CHECK 제약조건 삭제하기
CHECK 제약조건을 삭제할 때는 다음의 쿼리를 이용한다.
SQL Server / Oracle / MS Access:
ALTER TABLE Customer
DROP CONSTRAINT CHK_PersonAge;
MySQL:
ALTER TABLE Customer
DROP CHECK CHK_PersonAge;
'IT > SQL' 카테고리의 다른 글
SQL 제약조건 Constraints - 외래키_Foreign key (0) | 2021.09.12 |
---|---|
SQL 제약조건 Constraints - Primary key (0) | 2021.09.03 |
[sql] 제약조건 constraints - NOT NULL (0) | 2021.09.02 |
[sql] alter table, 테이블의 컬럼명 변경하기 (0) | 2021.08.31 |
[sql] alter table, 테이블의 컬럼 정보 수정 및 컬럼 삭제 (0) | 2021.08.23 |