[mySQL] CONSTRAINT, 특정 컬럼에 제약사항 걸기

DB/mySQL 2023. 5. 22.

 

CONSTRAINT: 제약사항

테이블에 이상한 row가 추가되는 것을 막아준다.

 

 

제약사항 추가

ADD CONSTRAINT 제약사항 이름 CHECK 제약내용으로 제약사항을 추가할 수 있다.

기본구조
ALTER TABLE 테이블_이름
ADD CONSTRAINT 제약사항_이름 CHECK (제약내용);

 

 

(예시 SQL문) users 테이블의 registraion_number 컬럼은 10000000 미만이어야 하고, 이 제약사항의 이름은 st_rule이다.

ALTER TABLE users
    ADD CONSTRAINT st_rule CHECK (registration_number < 10000000);

 

 

 

제약사항 제거

DROP CONSTRAINT 제약사항_이름 으로 제거 가능하다.

기본구조
ALTER TABLE users
DROP CONSTRAINT st_rule;

 

 


여러 개의 제약사항 추가

AND를 사용해 여러 제약사항 추가가 가능하다.

ALTER TABLE Student
ADD CONSTRAINT CHK_Age CHECK (Age >= 10 AND Age <= 100);

 

더보기: 제약사항 사용 예시

더보기

제약사항 사용 예시

 

예시 1

이메일에 '@'이 포함되어 있는지 확인
ALTER TABLE student
ADD CONSTRAINT st_rule CHECK (email LIKE '%@%');

 

예시 2

gender컬럼에 m 또는 f 만 입력되어야함
ALTER TABLE student
ADD CONSTRAINT st_rule CHECK (gender IN ('m', 'f'));

 


제약사항을 거는 이유

제약사항을 세심하게 걸수록 더 제대로 된 데이터를 받을 수 있다.