아래는 DELETE, TRUNCATE, CASCADE, DROP 기능을 비교한 표입니다:
| 기능/특징 | DELETE | TRUNCATE | CASCADE | DROP |
|---|---|---|---|---|
| 설명 | 특정 조건에 맞는 데이터를 삭제 | 테이블의 모든 데이터를 삭제 | 연관된 데이터도 함께 삭제 | 테이블 또는 데이터베이스를 삭제 |
| 사용 대상 | 조건에 맞는 특정 행(row) | 테이블의 모든 행(row) | 외래 키(Foreign Key) 제약 조건에 따라 | 테이블, 뷰, 인덱스, 데이터베이스 등 |
| 조건 사용 가능 | WHERE 조건문 사용 가능 | 조건문 사용 불가능 | 조건문 사용 불가능 | 조건문 사용 불가능 |
| 속도 | 느림 (각 행마다 개별적으로 삭제) | 빠름 (전체 데이터 초기화) | 참조 테이블 삭제 시 자동 적용 | 빠름 (구조 자체 삭제) |
| 자동 증가 초기화 | 유지 (AUTO_INCREMENT 값 유지) | 초기화 (AUTO_INCREMENT 값 초기화) | N/A | 초기화 (테이블 삭제로 구조 제거) |
| 트랜잭션 롤백 | 가능 | 불가능 | 가능 (상황에 따라) | 불가능 |
| 제약 조건 | 테이블 및 제약 조건 유지 | 테이블 및 제약 조건 유지 | 연관된 제약 조건에 따라 작동 | 테이블 및 모든 제약 조건 삭제 |
| 테이블 존재 여부 | 테이블 유지 | 테이블 유지 | 테이블 유지 | 테이블 삭제 |
ON DELETE CASCADE, ON UPDATE CASCADE)에 따라 부모 테이블의 데이터 삭제/수정 시 참조된 자식 데이터도 함께 삭제/수정.사용 시 주의:
DROP은 데이터와 테이블 구조 모두 삭제하므로 복구가 어려움.TRUNCATE는 데이터만 삭제하고 테이블을 유지하므로 초기화 시 유용하지만, 외래 키 제약이 있을 경우 사용할 수 없습니다.