테이블을 생성할 때 여러가지 제한사항을 둘 수 있다. 제약조건을 거는 방법에 대해 알아보자.


◆ 제약조건(Constraint)

테이블 생성 시 설정할 수 있는 옵션 - 제약조건을 설정할 수 있음.

▶ not null

해당 컬럼 값에 null 값을 허용하지 않음.
따라서 해당 컬럼에 null값을 넣거나, 미 입력할 시 오류

name varchar2(12) not null,


▶ default

데이터 삽입 시에 입력하지 않은 값들에 대한 디폴트 값 설정

gender number(1) default '1',

=> gender 컬럼 미 입력 시 1이 자동으로 삽입( 단, null값을 입력할 시에는 null이 삽입됨 )


▶ constraint

컬럼에 대한 제약조건을 따로 설정.

constraint 제약조건명 제약조건 (컬럼 또는 제약조건)

( 제약 조건 명은 다른 테이블에 있을 시라도 중복이 불가하다. )


◆ constraint에서 설정할 수 있는 제약조건

▶ PRIMARY KEY (기본키)

null불가, 중복 불가

constraint rule_01 primary key (name)

=> name 을 기본 키로하는 rule_01 제약조건을 설정


▶ UNIQUE (유일키)

null가능, 중복 불가

constraint rule_02 unique (report)

=> report 를 유일키로하는 rule_02 제약조건을 설정


▶ FOREIGN KEY (외래키)

다른 테이블을 참조하기 위한 컬럼, references뒤에는 참조하는 테이블(컬럼)을 적어준다.

constraint rule_03 foreign key (gender) references gender(code)

=> gender를 외래키로 하는 rule_03 제약조건을 설정

외래키가 참조하는 테이블의 키는 references 테이블(컬럼) 으로 설정한다.
=> gender값을 삽입하고자 할 때, gender테이블에 code데이터 안에 삽입하고자 하는 gender값과 일치하는 값이 있어야 삽입이 가능하다.


▶ CHECK

삽입 전 조건검사

constraint rule_04 check (weight > '0' )

=> weight 삽입 시 0 이상인지 체크하는 rule_04 제약조건을 설정

▶ 예시

create table baby(
    name varchar2(12) not null, 
    -- 컬럼 설정  필수 항목을 지정할  있음 ( name컬럼에 null 값을 넣을  없다. )
    gender number(1) default '1',
     -- 컬럼 설정  기본 벨류를 설정할  있음 ( 입력된 값이 없으면 기본 '1' 으로 설정 )
    weight number(3,2),
    birth date,
    report varchar(300),
    constraint babyrule_01 primary key (name),
    -- name null값이 있을  없고, 중복 데이터도 허용하지 않는다.
    constraint babyrule_02 unique (report),
    -- report에는 null값은 있을  있지만, 중복 데이터는 허용하지 않는다.
    constraint babyrule_03 foreign key (gender) references gender(code),
    -- gender 삽입  gender테이블에 code값이 gender값과 일치하는 값이 있어야 삽입이 가능
    constraint babyrule_04 check (weight > '0' )
    -- weight 값은 양수일때만 삽입 가능하다.
)