본문 바로가기

자격증/SQLD

[SQLD][아이리포]32. 참조 무결성 제약조건 | CASECADE | SET NULL | MODIFY

반응형
목차

5. 관리구문

5-2. DDL
5-2-1. 참조 무결성 제약조건
5-2-2. DELETE / MODIFY ACTION

5-2-3. INSERT ACTION
5-2-4. DROP / TRUNCATE / DELETE 차이

5. 관리구문

5-2. DDL

1️⃣ 참조 무결성 제약조건

참조 무결성이란 부모 테이블과 자식 테이블 간의 관계를 유지하여 데이터의 일관성과 무결성을 보장하기 위한 제약조건이다.

 

즉, 데이터의 입력 / 수정 / 삭제 과정에서 잘못된 참조가 발생하지 않도록 DBMS가 관리한다.

💡 일반적으로 참조되는 테이블을 부모, 참조하는 테이블을 자식이라고 한다.

2️⃣ DELETE / MODIFY ACTION

부모 테이블의 데이터를 삭제(DELETE)하거나 수정(UPDATE)할 때 자식 테이블을 어떻게 처리할 것인지 지정하는 옵션이다.

제약조건 설명
CASCADE 부모 데이터가 삭제(또는 수정)되면 자식 데이터도 함께 삭제(또는 수정)된다.
SET NULL 부모 데이터가 삭제(또는 수정)되면 자식의 외래키(FK)를 NULL로 변경한다.
SET DEFAULT 부모 데이터가 삭제(또는 수정)되면 자식의 외래키를 기본값(DEFAULT)으로 변경한다.
RESTRICT 자식 테이블에서 참조 중인 데이터가 있으면 부모 데이터를 삭제하거나 수정할 수 있다.
NO ACTION 참조 무결성을 위반하면 작업이 실패하며 아무런 변경도 수행하지 않는다.

 

💡 SQLD에서는 CASECADE와 RESTRICT의 차이를 자주 묻는다.

3️⃣ INSERT ACTION

부모 테이블에 해당 PK가 존재하지 않을 경우 자식 테이블의 INSERT를 어떻게 처리할 것인지 지정하는 옵션이다.

제약조건 설명
AUTOMATIC 부모 테이블에 PK를 자동 생성한 후 자식 테이블에 데이터를 입력한다.
SET NULL 부모 테이블에 PK가 없으면 자식 테이블의 외래키(FK)에 NULL 값이 입력된다
SET DEFAULT 부모 테이블에 PK가 없는 경우 자식 테이블의 외래키를 기본값(DEFAULT)으로 입력한다.
DEPENDENT 부모 테이블에 PK가 존재할 때만 자식 테이블에 값 입력을 허용한다.
NO ACTION 참조 무결성을 위반하면 작업이 실패하며 아무런 변경도 수행하지 않는다.

4️⃣ DROP / TRUNCATE / DELETE 차이

구분 DROP TRUNCATE DELETE
문법 DROP TABLE 테이블명 TRUNCATE TABLE 테이블명 DELETE FROM 테이블명
SQL 종류 DDL DDL DML
동작 테이블 자체를 삭제
(스키마 포함)
테이블 구조는 유지하되, 모든 데이터를 삭제하여 초기 상태로 리셋 테이블 구조는 유지하되, 데이터만 삭제한다.
(WHERE 절을 사용하여 특정 행만 삭제 가능)
WHERE 사용 불가능 불가능 가능
자동커밋 여부 O O X
디스크 공간 릴리즈 O O X
작업취소(UNDO)를 위한
로그 데이터 생성 여부
X X O

 


🔗 출처

[SQLD 모든 것]

 

반응형