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)
'프로그래밍 > 데이터베이스 Oracle' 카테고리의 다른 글
Oracle Database ) DML. DDL. DCL 시스템권한 (0) | 2016.01.07 |
---|---|
Oracle Database) Data Dictinary 구성 (0) | 2016.01.07 |
Oracle Database) subquery, ALTER TABLE (0) | 2016.01.04 |
oracle database) transaction 트랜잭션 (0) | 2015.12.31 |
Olacle database) DML, DDL 차이점, delete, truncate 차이점 (0) | 2015.12.31 |