DELETE, TRUNCATE, DROP은 모두 데이터나 테이블을 삭제하는 명령어입니다. 하지만 각각의 기능과 특성이 매우 다르므로 SQLD 시험에서는 이 차이점을 명확히 구분하는 문제가 자주 출제됩니다.
| 명령어 | 개념 | 대상 | 분류 | ROLLBACK | 시험 핵심 포인트 |
|---|---|---|---|---|---|
DELETE | 데이터(행) 삭제 | 테이블의 일부/전체 행 | DML | 가능 | WHERE 절로 조건 삭제 가능. |
TRUNCATE | 모든 데이터 삭제 | 테이블의 전체 행 | DDL | 불가 | 조건 불가. 매우 빠르다. |
DROP | 객체 자체 삭제 | 테이블, 뷰, 인덱스 등 | DDL | 불가 | 데이터 + 구조 모두 삭제. |
DELETEWHERE 절을 사용하여 특정 조건을 만족하는 행만 삭제할 수 있습니다. WHERE를 생략하면 모든 행을 삭제합니다.DML(Data Manipulation Language)에 속하며, 트랜잭션 로그를 기록하므로 ROLLBACK이 가능합니다.TRUNCATE보다 속도가 느립니다.TRUNCATEWHERE 절을 사용할 수 없습니다.DDL(Data Definition Language)에 속하며, **자동으로 COMMIT**됩니다. 따라서 ROLLBACK이 불가능합니다.DELETE보다 훨씬 빠릅니다.DROPDDL에 속하며, **자동으로 COMMIT**됩니다. 따라서 ROLLBACK이 불가능합니다.CREATE TABLE 명령어로 테이블을 재생성해야 합니다.REMOVEREMOVE TABLE과 같은 형태로 함정 보기에 자주 등장합니다.ROLLBACK 가능 여부가 가장 중요한 차이점입니다.DELETE (DML) → 가능TRUNCATE, DROP (DDL) → 불가TRUNCATE와 DROP은 DDL이므로 실행 즉시 **AUTO COMMIT**이 발생합니다.DELETE / TRUNCATE → 유지DROP → 삭제DELETE: **DEL**ete는 DELICATE (섬세하게) 원하는 데이터만 지우고, 되돌릴 수 있다.TRUNCATE: **TRUNC**는 TRUNCATE (싹뚝 자르다)처럼 테이블을 통째로 자르고, 되돌릴 수 없다.DROP: 테이블을 DROP (떨어뜨려) 산산조각 내서, 데이터도 구조도 모두 사라진다.1. 다음 중 ROLLBACK이 불가능한 명령어를 모두 고른 것은?
A. DELETE, UPDATE
B. TRUNCATE, DROP
C. TRUNCATE, UPDATE
D. DELETE, DROP
2. 다음 중 표준 SQL에서 지원하지 않는 명령어는?
A. DELETE
B. TRUNCATE
C. DROP
D. REMOVE
3. 아래 SQL 구문에 대한 설명으로 옳은 것은?
TRUNCATE TABLE Employee;
A. WHERE 절을 사용하여 특정 행만 삭제할 수 있다.
B. 테이블 자체와 관련된 모든 객체를 삭제한다.
C. 모든 데이터를 삭제하지만 테이블의 구조는 유지된다.
D. ROLLBACK 명령어로 취소할 수 있다.
4. 다음 중 테이블의 구조와 데이터가 모두 삭제되는 명령어는?
A. DELETE
B. TRUNCATE
C. DROP
D. REMOVE
TRUNCATE와 DROP은 DDL이므로 실행 즉시 COMMIT되어 ROLLBACK이 불가능합니다.REMOVE는 SQL 표준에 없는 키워드이며, 시험에서 함정으로 자주 출제됩니다.TRUNCATE는 테이블의 모든 데이터만 삭제하고, 구조와 제약조건은 그대로 유지합니다.DROP은 테이블 자체를 삭제하므로, 데이터와 함께 테이블의 구조까지 모두 사라집니다.