본문 바로가기
BackEnd/DB, SQL

SQL 18편: 제약 조건

by summer_light 2022. 1. 15.

제약 조건

제약조건을 지정한 열에는 제약 조건에 부합하지 않는 데이터를 저장할 수 없도록 한다. 제약 조건 지정 방식에 따라 기존 데이터의 수정이나 삭제 가능 여부도 영향을 받는다.

 

제약 조건의 종류

NOT NULL NULL 불가
UNIQUE 중복 불가 
PRIMARY KEY 중복 불가, NULL 불가 
FOREIGN KEY 다른 테이블의 열을 참조하여 존재하는 값만 입력 가능 
CHECK( ) 괄호 안의 조건식을 만족하는 데이터만 입력 가능
DEFAULT A 값이 지정되지 않을 경우 A로 지정, 제약 조건은 아니지만 같은 위치에 지정

 

데이터 무결성

DB에 저장되는 데이터의 정확성과 일관성을 보장한다는 의미. 이를 위해 항상 유지해야 하는 기본 규칙을 가지고 있다. 

영역 무결성 열에 저장되는 값의 적정 여부. 자료형, 적절한 형식, NULL 여부 등 정해 놓은 범위를 만족하는 데이터임을 규정
개체 무결성 유일하게 식별할 수 있는 기본키는 반드시 값을 가지고 있어야 하고 NULL이 될 수 없고 중복도 불가능하다는 것을 규정
참조 무결성 참조 테이블의 외래키 값은 참조 테이블의 기본키로서 존재해야 하며 NULL이 가능

 

 

 

 

제약 조건 확인하기

USER_CONSTRAINT 데이터 사전을 활용한다.

 

USER_CONSTRAINT 데이터 사전에서 CONSTRAINT_TYPE 값의 의미

C CHECK, NOT NULL
U UNIQUE
P PRIMARY KEY
R FOREIGN KEY

 

 

 

제약 조건 이름 직접 지정

1. 인라인 제약 조건 정의 방법(=열 레벨 제약 조건 정의 방법)

 

CREATE TABLE  테이블이름(

열이름 자료형 CONSTRAINT 제약조건이름 제약조건종류,

...

);

 

*FOREIGN KEY의 경우는

열이름 자료형 CONSTRAINT 제약조건이름 REFERENCES 참조테이블(참조할열) 추가옵션

 

가능한 추가옵션

ON DELETE CASCADE 열 데이터를 삭제할 때 이 데이터를 참조하고 있는 데이터도 함께 삭제
ON DELETE SET NULL: 열데이터를 삭제할 때 이 데이터를 참조하는 데이터를 NULL로 수정

 

 

2. 아웃오브라인 제약 조건 정의 방법(=테이블 레벨 제약 조건 정의 방법)

 

CREATE TABLE 테이블이름(

열이름 자료형,

...,

...,

CONSTRAINT 제약조건이름 제약조건종류 (열이름)

);

 

*FOREIGN KEY의 경우는

CONSTRAINT 제약조건이름 FOREIGN KEY(열) REFERENCES 참조테이블(참조할열)

 

 

 

 

이미 생성된 테이블에 제약 조건 지정

 

ALTER TABLE 테이블이름

MODIFY(열이름 CONSTRAINT 제약조건이름 제약조건종류);

 

 

 

 

이미 생성된 테이블의 제약 조건 이름 변경

 

ALTER TABLE 테이블이름

RENAME CONSTRAINT 변경전이름1 TO 변경후이름2

 

 

 

 

제약 조건 삭제

ALTER TABLE 테이블이름

DROP CONSTRAINT 제약조건이름;

 

 

 

 

제약 조건 비활성화, 활성화

1. 비활성화

 

ALTER TABLE 테이블이름

DISABLE [NOVALIDATE / VALIDATE(선택)] CONSTRAINT 제약조건이름;

 

 

2. 활성화

 

ALTER TABLE  TABLE 테이블이름

ENABLE [NOVALIDATE / VALIDATE(선택)] CONSTRAINT 제약조건이름;

 

 

 

 

 

 

댓글