DB/오라클

CONSTRAINT(제약조건)

hubaek 2023. 4. 14. 11:05

Constraint란 데이터 무결성 유지를 위하여 사용자가 지정할 수 있는 성질.

- 모든 Constraint은 데이터 사전(Data Dictionary)에 저장된다.

- 의미있는 이름을 부여해야 Constraint를 참조하기 쉽게 된다.

- Constraint의 이름은 표준 객체 명명법을 따르는게 좋다.

- Constraint의 이름은 한 사용자 내에서 중복 될 수 없다.

- Constraint의 이름을 생략했다면 ORACLE은 SYS_Cn형식의 이름을 만든다.

 

Constraint 정의방법

- 컬럼 레벨(Column Level)과 테이블 레벨(Table Level) 두가지 방법이 있다.

1) 컬럼 레벨 제약 조건 - 어떤 유형의 제약조건도 정의가능

컬림 [CONSTRAINT 제약조건 이름] 제한조건 유형,

2) 테이블레벨 제약 조건 - 어떤 제약조건도 정의가능(NOT NULL제외), 여러 컬럼에 제약조건 정의할 때 사용

컬럼 , ... 

[CONSTRAINT 제약조건 이름] 제한조건 유형 (컬럼1, 컬럼2, ...)

 

Constraint 종류

PRIMARY KEY(PK) - 컬럼, 컬럼의 조합이 테이블의 각 행을 유일하게 구별시켜줌

FOREIGN KEY(FK) - 컬럼, 컬럼의 조합이 다른 테이블의 컬럼, 컬럼조합을 참조

Not Null - 컬럼이 NULL값 가질 수 없음

UNIQUE - 컬럼, 컬럼 조합이 테이블의 모든 행에서 고유한 값을 가져야 함

CHECK - 컬럼값이 반드시 참이어야 하는 조건 (조건식)

 

PK의 제약조건

테이블에 단 하나의 PK만 허용

NULL값 허용하지 않음

UNIQUE 인덱스를 자동 생성

 

FK 제약조건 주의사항

참조하고자 하는 컬럼이 PK or UNIQUE 제약조건이 있어야함

참조 컬럼의 데이터 타입 일치

ON DELETE CASCDE 옵션을 줄 수 잇음 - 참조 되는 테이블(parent)의 행을 삭제 가능, 참조하는 행들도 자동으로 삭제해주는 옵션