본문 바로가기

Oracle/SQL

SQL (4) 제약 CHECK

특정 컬럼에 지정된 데이터만 입력 될 수 있도록 제한 하는방법

예제 월급이 0~9000 사이로만 입력되게 CHECK 제약 거시오

alter table emp
add constrAInt emp_sal_ck check(sal between 0 and 9000);

체크 제약이 걸린후 확인을 해보자~

update emp
set sal =9500
where ename = 'KING';

→9500 은 9000 이상이라 제약조건에 위배되어 수정되지 않았다.

문제 576 emp14 table 에 체크 제약을 걸어라 (@ 이가 포함되지않으면 데이터가 입력되지않게)

ALTER TABLE EMP14
add constraint emp14_email_ck check(email like'%@%');

다시 제약조건 삭제하기

alter table emp14
drop constraint emp14_email_ck;

이번에는 이메일에 @ 와 . 이 포함되지 않으면 데이터 입력되지않게 check 제약 조건을 거시오

ALTER TABLE EMP14
add constraint emp14_email_ck check(email like'%@%.%');

→ . 없이 @ 만 들어갔더니 체크 제약조건에 위배 되어 삽입 되지않는다.

또는

ALTER TABLE EMP14
add constraint emp14_email_ck check(**email like'%@%' and email like '%.%'**);

→ and 연산자로 하여도 된다~ (or 은 안됨!)

문제 579 통신사 컬럼에 제약을 거는데 데이터가 kt , lg, sk 만 입력 되게 제약을 거시오

alter table emp14
add constraint emp14_telecom_ck check(telecom in ('sk','lg','kt'));
alter table emp14
add constraint emp14_telecom_ck check(telecom = 'sk' or telecom ='lg' or telecom = 'kt');

→ check 다음에 ( 괄호 안에 조건절을 입력하면 된다.)

 

'Oracle > SQL' 카테고리의 다른 글