Oracle/SQL

제약조건

psys 2020. 6. 2. 19:41
728x90

제약조건

CREATE TABLE(
	... 
    , CONSTRAINTS 제약조건명 CHECK (컬럼명 in (조건1, 조건2)
)

 

 

create table ex2_9 (
    name varchar2(30) not null,
    age number(3),
    gender char(1),
    constraints ck_ex2_9_age check (age between 1 and 150),
    constraints ck_ex2_9_gender check (gender in ('F','M'))
);

constraints로 나이가 1에서 150사이, 성별이 F, M만 들어올 수 있도록 설정했다.

insert into ex2_9 (name, age, gender) values('malja', 150, 'G'); --CK_EX2_9_GENDER
insert into ex2_9 (name, age, gender) values('malja', 200, 'F'); --CK_EX2_9_AGE
insert into ex2_9 (name, age, gender) values('malja', 10, 'F'); --OK

첫번째 라인은 성별에 설정하지 않은 G가 들어가있기에 나는 오류
두번째 라인은 나이에 설정한 범위를 초과하는 값이 들어가있기에 나는 오류

세번째 라인은 제약조건을 만족해 오류가 나지 않고 들어갔다.

 

CREATE TABLE ex2_10(
    name varchar2(30) not null,
    point number(5) default 0,
    gender char(1) default 'F',
    reg_date date default sysdate,
    constraints ck_ex2_10_gender check (gender in('F', 'M'))
);

insert into ex2_10 (name) values ('sunja');
insert into ex2_10 (name, point) values ('nolja', 250);
insert into ex2_10 (name, point, gender, reg_date) values('nolja', 250,'M', '1988-08-03');
select * from ex2_10;

 

 

 

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

수식연산자  (0) 2020.06.03
DML(Data Manipulation Language, 데이터조작어)  (0) 2020.06.03
시간타입과 NOTNULL  (0) 2020.06.02
오라클 제약조건 SQL  (0) 2020.06.02
숫자데이터타입  (0) 2020.06.02