본문 바로가기
프로그래밍/데이터베이스 Oracle

Oracle database) 제약조건

by Cat Tool 2016. 1. 4.
반응형

1. 제약조건명

사용자 지정 : 테이블 명 약자 _컬럼명약자_제약조건유형약자(권장)

ex) emp_empid_pk

emp_lanme_nn

    _fk

    _uk

    _ck  

 

 

a)컬럼 level

b)테이블 level

 

 

 

사용자 생략 : Oracle 자동으로 부여 (sys_cxxxx)

고유하기만 할뿐 의미 없음

 

create table(테이블 생성시 생성)

alter table(테이블 수정시 생성)

 

 

 

2. 제약조건 종류

1)NOT_NULL 제약조건  : null값 들어오는거 막음, 컬럼 level 에서 밖에 사용 불가

(이름과 같이 꼭 들어가야하는곳에 줄수 있다.)

ex)

create table test1

(id number(5) constraint t1_id_nn not null,

name varchar2(10)  constraint t1_name_nn not null,

email varchar2(30),

phone varchar2(20) constraint t_ph_nn not null

start_date date default sysdate)

 

2) UNIQUE 제약조건  : 같은 이름으로 저장 되는것을 막는 제약 조건

ex)

create table test1

(id number(5) constraint t1_id_nn not null constraint t1_id_uk unique  ,

name varchar2(10)  constraint t1_name_nn not null,

email varchar2(30) ,

phone varchar2(20) constraint t_ph_nn not null,

start_date date default sysdate,

constraint t1_email_uk unique(email),

constraint t1_phone_uk unique(phone)

);

 

3) PRIMARY KEY 제약조건 : NOT_NULL, UNIQUE 둘다 적용, 테이블당 한번 밖에 적용 불가

(대표 컬럼 적용 즉 참조 시 사용)

create table test1

(id number(5) constraint t1_id_pk primary key,

name varchar2(10)  constraint t1_name_nn not null,

email varchar2(30) ,

phone varchar2(20) constraint t_ph_nn not null,

start_date date default sysdate,

constraint t1_email_uk unique(email),

constraint t1_phone_uk unique(phone)

);

 

 

 

 

 

 

4)FOREIGN KEY 제약조건 : 자기자신 테이블이나 다른 테이블의 특정 컬럼(primary,unique)을 참조시키는 제약조건

외래키!

*자식(primary. unique)이 있는한 부모(foreign) 삭제 불가능하게 된다.

ex)

컬럼 level(테이블 레벨과 다르게 foreign키 생략 가능 )

department_id NUMBER(4) CONSTRAINT emp_deptid_fk
REFERENCES departments(department_id),

테이블 levle

CONSTRAINT emp_dept_fk FOREIGN KEY (department_id)
REFERENCES departments(department_id)

 

*옵션

ON DELETE CASCADE : 부모 삭제시 자식도 같이 삭제

ON DELETE SET NULL : foreign key를 해도 널값으로 바꾸면서 삭제 가능

 

5)CKECK  제약 조건 : 해당 컬럼이 지켜야 되는 조건문을 지정하는 제약 조건

 

ex)

CONSTRAINT emp_salary_min
CHECK (salary > 0),

 

salary number(10)

......

constraint emp_sal_ck check (salary>2)

 

 

 

ex)

 

 

반응형