Written by
최태열
on
on
Oracle DB 8
Integrity
Integrity
DB 자체적으로 강제적인 제약 사항 설정
제약 조건 종류
- primary key — 기본키, 중복불가, null불가, 데이터들 구분을 위한 핵심 데이터
- not null — null 불가
- unique — 중복 불가
- check — table 생성 시 규정한 범위의 데이터만 저장 가능
- default — 초기 값 부여
- foreign key — 다른 table의 pk를 참조하는 데이터 pk에 없는 값을 저장할 수 없음
user_constraints (제약 조건 정보 보유 table)
-- 제약 정보 보기
select constraint_name, constraint_type, table_name
from user_contraints;
/*
CO : constraint_type
P : PK
R : FK
C : 제약조건
*/
제약 조건 달기
-- table 생성하면서 달기
-- column명 데이터타입 제약조건
-- column명 데이터타입 constraint 제약조건주석 제약조건
create table emp02(
deptno number(4) constraint emp02_deptno_PK primary key,
empno number(4) constraint emp02_empno_nn not null,
ename varchar2(10) constraint emp02_ename_u unique,
age number(3) constraint emp01_age_ck check (age between 1 and 100),
gender char(1) constraint emp01_gender_ck check (gender='F' or gender='M'),
sal number(4) default 0
);
-- FK 달기
-- column명 데이터타입 constraint 제약조건주석 references 부모테이블(PK)
create table orders(
customer_id varchar2(4) constraint custromer_fk references customers(customer_id)
);
-- table 단위
create table emp02(
empno number(4),
ename varchar2(20) not null,
deptno number(2),
constraint emp02_empno_fk foreign key (deptno) references dept(deptno),
constraint emp02_empno_pk primary key (empno)
);
제약 조건 추가하기
create table dept01 as select * from dept;
create table emp01 as select * from emp;
-- 복제를 해도 제약조건은 복제 불가
select table_name, constraint_type, constraint_name
from user_constraints
where table_name='DEPT01';
-- dept와 emp처럼 제약조건 추가하기
alter table dept01
add constraint dept01_deptno_pk primary key(deptno);
alter table emp01
add constraint emp01_empno_pk primary key(empno);
--FK 추가하기
alter table emp01
add constraint fk_deptno_emp01
foreign key(deptno) references dept01(deptno);
제약 조건 삭제하기
alter table emp01
drop constraint emp01_empno_pk;
Foreign Key 무시하고 삭제
-- 자식이 사용하지 않는 데이터 삭제 (가능)
delete from dept01 where deptno=40;
-- 자식이 사용하고 있는 데이터 삭제 (불가능)
delete from dept01 where deptno=30;
-- 자식관계 끊고 테이블 삭제
-- 자식 테이블의 FK 제약조건도 사라짐
drop table dept01 cascade constraint;
Discussion and feedback