수업 내용/[DB] 오라클

12. 제약조건

프롯 2023. 4. 25. 17:47

데이터 무결성 제약 조건 (Data Integrity Constraint Rule)

테이블에 부적절한 자료가 입력되는 것을 방지하기 위해 테이블을 생성할 때 각 컬럼에 대해서 정의하는 여러가지 규칙

 

NOT NULL : NULL을 허용하지 않는다

UNIQUE : 중복된 값을 허용하지 않는다.

PRIMARY KEY : NULL을 허용하지 않고 중복된 값을 허용하지 않는다.

FOREIGN KEY : 참조되는 테이블의 컬럼의 값이 존재하면 허용한다.

CHECK : 저장 가능한 데이터 값의 범위나 조건을 지정하여 설정한 값만을 허용한다.

 

 

FOREIGN KEY란

참조되는 컬럼 (부모 컬럼) 에 존재하는 값만 참조하는 컬럼 (자식 컬럼) 에 사용할 수 있다.

그렇지 않은 경우는 에러

주의) 테이블 단위가 아닌 컬럼 단위로 제약

 

 

+)

DEFAULT : 이무것도 들어가지 않았을 때 default 값을 사용

 

 

 

제약조건 확인하기

desc table_name

select * from user_constraints;

비교해 가며 제약조건 확인 가능

 

- 의미

현재 저장되어 있는 테이블에 걸려있는 제약조건을 확인 할 수 있다.

P : PRIMARY KEY

R : FOREIGN KEY

U : UNIQUE

C : CKECK, NOT NULL

 

 

 

 

 

예제)

 

 

check 제약조건

들어갈 데이터에 제한을 설정한다

 

 

 

default 제약조건

loc 컬럼에 아무것도 들어가지 않는다면 '서울'을 저장

 

 

 

 

 

 

 

제약조건 지정하기

 

- 컬럼 레벨 제약 조건

하나의 컬럼에 제약 조건 지정

 

예제)

컬럼 지정시 바로 옆에 제약 조건 지정

 

 

- 테이블 레벨 제약 조건

테이블 정의시 생성된 모든 컬럼에 대해 지정하는 제약 조건

모든 컬럼을 생성하고 테이블 정의 직전에 제약 조건 지정

(NOT NULL은 테이블 레벨에서 지정 불가)

제약조건을 마지막에 한번에 지정하는 느낌이다

 

제약조건에 이름을 부여하는 방법. 나중에 오류 확인할 때 편하다.

 

 

 

 

casecade 옵션

cascade 옵션은 부모 테이블과 자식 테이블 간의 참조 설정이 되어 있ㅇ르 때 부모 테이블의 제약 조건을 비활성화 하면 이를 참조하고 있는 자식 테이블의 제약 조건까지 같이 비활성화 시켜 주는 옵션이다.

 

부모 테이블이 제약 조건을 삭제하면 참조하고 있는 자식 테이브르이 제약 조건도 같이 삭제된다.

 

쉽게 말해, 부모 자식 테이블 간의 제약조건의 연동을 뜻한다.