본문 바로가기

IT/SQL

SQL 제약조건 Constraints - 체크 _ Check

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;