본문 바로가기
DB

[Oracle] 오라클 제약조건 - unique, not null, primary key, check, foreign key

by hongdor 2020. 6. 2.

- 오라클 11g XE 버전입니다

- 오라클 샘플 계정 HR에 접속한 후 진행했습니다 ( 아래 참고 )

https://hongdori2.tistory.com/4

 

 

 

1. 제약 조건

: 컬럼에 입력하는 값에 제한을 두는 것입니다

 

시스템 테이블 user_constraints 에서 제약조건 현황 정보를 알 수 있습니다

 

 

 

2. 제약 종류

 

- unique : 값 중복 불가

- not null : null 불가

- primary key : unique + not null

- check : 사용자 정의 조건식

- foreign key : 지정 테이블의 지정 컬럼에 있는 값만 입력 가능

 

 

 

3. 제약 생성 

 

- foreign key 제외 > 컬럼 데이터타입 constraint 제약조건이름 제약조건종류

- foreign key > 컬럼 데이터타입 constraint 제약조건이름 references 테이블(컬럼명)

  > foreign key 는 unique 또는 primary key 제약조건이 걸려있는 컬럼만 참조할 수 있다

 

예시)

> 제약 조건이 있는 테이블 생성

create table neighborhood ( neighborhood_name varchar2(300) constraint rule_neighborhoodname unique ) ;

create table friend

( friendname varchar2(30) constraint rule_friendname primary key,

  password varchar2(12) constraint rule_password not null,

  email varchar2(30) constraint rule_email check (email like '%@%'),

  parents varchar2(30) constraint rule_parents references neighborhood(neighborhood_name)

 )

 

 

 

4. 제약 삭제 

 

alter table 테이블명 drop constraint 제약조건명;

ex) alter table friend drop constraint rule_friendname;

 

 

 

5. 제약 추가

 

- alter table 테이블명 add constraint 제약조건명 종류(컬럼명);  

ex) alter table friend add constraint rule_friendname unique(friendname);

 

- not null 의 경우만 다르다

> alter table 테이블명 modify ( 컬럼명 데이터타입 constraint 제약조건명 not null )

ex) alter table friend drop constraint rule_friendname;

    alter table friend modify ( friendname varchar2(30) constraint rule_friendname not null );

 

 

 

6. foreign key 옵션

 

- on delete cascade 

> 참조하는 열의 값이 삭제되면 자기의 값도 삭제됩니다.

 

ex)

alter table friend drop constraint rule_friendname;

alter table friend add constraint rule_friendname foreign key(friendname) references neighborhood(neighborhood_name) on delete cascade;

 

on delete cascade 옵션으로 인해 neighborhood_name 값이 없어지면 friendname 값도 같이 삭제됩니다

댓글0