[    ORACLE 무결성 제약조건    ]





[    Oracle DB 제약조건의 종류와 사용    ]



이번 포스팅에서는 Oracle DB에서 값을 넣을 때 제약사항을 거는 방법에 대해서 알아보겠습니다.


제약조건은 데이터의 무결성을 보장받기 위해서 사용하게 됩니다.


[종류]


1. Not Null

: 컬럼 생성시 지정하지 않으면 default로 Null이 허용가능하게 되어 있습니다. 따라서 해당 컬럼값을 입력하지 않고 튜플을 삽입시 Null이 들어가게 되는데 

  이를 방지하기 위해서는 Not Null을 기술해 주면 됩니다.


ex) name varchar2(10) NOT NULL;


2. UNIQUE

: 유일한 값만 들어가도록 하고 싶을 때 사용합니다. 즉, 중복이 허용되지 않도록 데이터를 넣어야하는 경우 사용합니다.


ex) bno number UNIQUE;


3. Primary Key

: 기본키입니다. 기본키란 해당 테이블을 대표하는 컬럼으로 Primary key로 지정된 컬럼은 Null값을 가지지 못하며, 중복된 값을 가질 수 없습니다.

 즉, 이 primary key에 의해 튜플들은 중복되지 않고 구분될 수 있게 됩니다.

 따라서 UNIQUE와 NOT NULL을 동시에 정의한 것과 효과가 같게 됩니다.


ex) bno number primary key;


4. Foreign Key

: 외래키를 의미하는 제약조건입니다. 외래키는 참조 무결성을 위해 사용되는데 

이 외래키로 지정된 컬럼은 반드시 다른 테이블의 "Primary key(기본키)"와 참조 관계를 가지게 되고

외래키로 지정된 컬럼은 참조관계를 가진 테이블의 기본키에 있는 값만을 가질 수 있습니다.

즉, Null 값은 허용하되, 참조하고 있는 테이블의 기본키에 있는 값만 입력될 수 있습니다.


사용법은 ) constraints 지정할외래키명 foreign key references 참조할테이블명(참조할기본키컬럼명)


ex) create table testTable(

bno number primary key,

title varchar2(200) not null,

cateId number not null,

constraints fk_cateId foreign key references cateTable(cateId)

)


5. CHECK

: Mysql enum 데이터 타입과 비슷한 효과를 내주는 거로서, 입력될 수 있는 데이터의 종류를 제한할 수 있습니다.

예를들어)

gender varchar2(8) CHECK ( gender IN ('남','여') ) 로 해서 만든다면 gender 필드에는 남, 여 둘 중 하나의 값만 들어갈 수 있게됩니다.

또한,

bno number primary key CHECK ( bno between 1 and 1000 ) 으로 한다면 bno값은 1부터 1000 사이의 값만을 가질 수 있습니다.




참고)

위와같이 constraints 키워드를 이용해서 제약조건을 걸어두면, 해당 제약조건을 확인하는 방법

constraint가 지정된 테이블을 확인하는 방법이 있습니다.


select * from user_constraints where table_name = '테이블명' 을 하면 해당 테이블에 제약조건으로 지정한 정보를 다 볼 수 있습니다.

+ Recent posts