본문 바로가기
DBMS/ORACLE

[ORACLE]오라클_ 제약조건(CONSTRAINT) 종류 및 조회/추가/삭제

by 썸머워즈 2019. 2. 10.
반응형

제약조건(CONSTRAINT)

제약 조건이란 데이터의 무결성을 지키기 위해 제한된 조건을 의미한다.

쉽게 말해 테이블이나 속성에 부적절한 데이터가 들어오는 것을 사전에 차단하도록 정해 놓은 것이라 생각하면 된다.

 

우선 제약조건의 종류로는 다음과 같다.

각 제약조건의 상세한 내용은 링크를 통해 해당 내용을 살펴보는 것을 추천한다.

제약 조건 조회

제약조건을 조회하는 방법에는 여러가지가 존재하는데, 다 알 필요는 없지만 보통 다음과 같다.

  • all_constraints, dba_constraints 이 두 개가 비슷한 내용을 품고 있다.
  • user_constraints를 일반적으로 많이 사용한다.
SELECT * FROM user_constraints WHERE table_name = [테이블명] ;

위와 같은 방식으로 사용하면 해당 테이블의 제약조건을 조회할 수 있다.

제약 조건 추가

보통 제약조건의 경우 테이블을 생성할 때 선언해주기 마련인데, DB구조가 바뀌거나 누락될 때 나중에서야 제약조건을 추가해주기도 한다.

 

각각의 제약조건마다 사용할 수 있는 방법이 다른데, 우선 두 가지 방법에 대해 알아보자.

1. 제약조건명 지정

ALTER TABLE [테이블명] ADD CONSTRAINT [제약조건명] [제약조건](컬럼명)
ALTER TABLE board ADD CONSTRAINT PK_B_NUM PRIMARY KEY(b_num);
ALTER TABLE board ADD CONSTRAINT UQ_B_NUM UNIQUE(b_num);

일반적으로 이와 같은 방식을 많이 사용하고는 하는데, 다른 방식 또한 존재한다.

2. 제약조건명 비지정

ALTER TABLE [테이블명] ADD [제약조건](컬럼명)
ALTER TABLE [테이블명] MODIFY [컬럼명] [제약조건]

NOT NULL 같은 컬럼명 앞에 붙어 선언 해줘야 하는 것들은 MODIFY를 통해 선언해 줘야 한다.

ALTER TABLE board ADD UNIQUE(b_num);
ALTER TABLE board MODIFY b_id NOT NULL

 

제약조건을 추가하는 데 있어서 만약 해당 제약조건을 위반되어 있는 상태인 경우에는 안에 있는 데이터를 전부 제거한 다음에 제약조건을 추가해줘야 한다.

예를 들자면 NOT NULL을 걸어줄 때 해당 컬럼 데이터에 이미 NULL값이 들어가 있다면 제약조건을 걸 수 없다.

제약 조건 삭제

제약조건을 삭제하기 위해서는 제약조건명이 필요한데, 나중에 보면 알겠지만 컬럼 옆에 써주는 것보다 따로 추가해주는 방식을 선호한다. PK(기본키)나 FK(외래 키) 같은 경우에는 말이다.

ALTER TABLE [테이블명] DROP CONSTRAINT [제약조건명]
반응형


댓글

TOP