DELETE
, TRUNCATE
, DROP
은 모두 데이터나 테이블을 삭제하는 명령어입니다. 하지만 각각의 기능과 특성이 매우 다르므로 SQLD 시험에서는 이 차이점을 명확히 구분하는 문제가 자주 출제됩니다.
명령어 | 개념 | 대상 | 분류 | ROLLBACK | 시험 핵심 포인트 |
---|---|---|---|---|---|
DELETE | 데이터(행) 삭제 | 테이블의 일부/전체 행 | DML | 가능 | WHERE 절로 조건 삭제 가능. |
TRUNCATE | 모든 데이터 삭제 | 테이블의 전체 행 | DDL | 불가 | 조건 불가. 매우 빠르다. |
DROP | 객체 자체 삭제 | 테이블, 뷰, 인덱스 등 | DDL | 불가 | 데이터 + 구조 모두 삭제. |
DELETE
WHERE
절을 사용하여 특정 조건을 만족하는 행만 삭제할 수 있습니다. WHERE
를 생략하면 모든 행을 삭제합니다.DML(Data Manipulation Language)
에 속하며, 트랜잭션 로그를 기록하므로 ROLLBACK
이 가능합니다.TRUNCATE
보다 속도가 느립니다.TRUNCATE
WHERE
절을 사용할 수 없습니다.DDL(Data Definition Language)
에 속하며, **자동으로 COMMIT
**됩니다. 따라서 ROLLBACK
이 불가능합니다.DELETE
보다 훨씬 빠릅니다.DROP
DDL
에 속하며, **자동으로 COMMIT
**됩니다. 따라서 ROLLBACK
이 불가능합니다.CREATE TABLE
명령어로 테이블을 재생성해야 합니다.REMOVE
REMOVE 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
은 테이블 자체를 삭제하므로, 데이터와 함께 테이블의 구조까지 모두 사라집니다.