2020040906 / [7] Check 제약 조건 설정

- [7] Check 제약 조건 설정


정의 : 저장 가능한 데이터 값의 범위나 조건을 지정하여 설정한 값만을 허용한다

- 입력 값이 조건에 맞지 않으면 DB 에서 받지 않는다. 즉 오류를 일으킵니다

- 입력 값의 범위를 지정 할 수 있다

- CHECK은 입력할수 있는 값의 범위를 설정해 주는것입니다


- ALTER TABLE [테이블명] ADD CONSTRAINT [제약조건명] [제약조건](범위)



실습

1) 급여 컬럼을 생성하고 값은 500 ~ 5000 사이의 값만 저장 가능하다

2) 성별 컬럼은 gender로 정의하고 'M' / 'F' 둘 중 하나의 값만 저장 가능하다


create table emp07(
     empno    number(4) constraint emp07_empno_pk primary key,
     ename    varchar2(20) constraint emp07_ename_nn not null,
     sal          number(7, 2) constraint emp07_sal_ck check(sal between 500 and 5000),
     gender    varchar2(1) constraint emp07_gender_ck check(gender in ('M', 'F'))  -- in 명령어가 or 역할을 한다
);

insert into emp07 values(1234, '홍길동', 6000, 'M'); -- error
명령의 125 행에서 시작하는 중 오류 발생 -
insert into emp07 values(1234, '홍길동', 6000, 'M') -- error 500~5000 사이의 값만 기입 가능하다
오류 보고 -
ORA-02290: check constraint (SCOTT.EMP07_SAL_CK) violated

insert into emp07 values(1234, '홍길동', 3500, 'M'); -- 성공

insert into emp07 values(1235, '홍길동', 3000, 'A'); -- error
명령의 127 행에서 시작하는 중 오류 발생 -
insert into emp07 values(1235, '홍길동', 3000, 'A') -- M과F만 기입 가능하다  
오류 보고 -
ORA-02290: check constraint (SCOTT.EMP07_GENDER_CK) violated


insert into emp07 values(1234, '홍길동', 3500, 'm'); -- error

명령의 128 행에서 시작하는 중 오류 발생 -

insert into emp07 values(1234, '홍길동', 3500, 'm') -- 문자열에서는 영문자의 대문자와 소문자를 구별한다

오류 보고 -

ORA-02290: check constraint (SCOTT.EMP07_GENDER_CK) violated

댓글

Designed by JB FACTORY