문제
DELETE, TRUNCATE, DROP 명령어에 대한 설명으로 가장 적절하지 않은 것은?
① 특정 테이블에 대하여 WHERE 조건절이 없는 DELETE 명령을 수행하면 DROP TABLE 명령을 수행했을 때와 똑같은 결과를 얻을 수 있다. ② DROP 명령어는 테이블 정의 자체를 삭제하고, TRUNCATE 명령어는 테이블을 초기 상태로 만든다. ③ TRUNCATE 명령어는 UNDO를 위한 데이터를 적게 생성하므로 동일 데이터량 삭제 시 DELETE보다 빠를 수 있다. ④ DROP과 TRUNCATE는 일반적으로 Auto Commit되고, DELETE는 사용자 Commit으로 수행된다.
정답
1번
해설
정답: 1. WHERE 없는 DELETE는 모든 행을 삭제하지만 테이블 구조는 남고, DROP TABLE은 테이블 정의 자체를 삭제하므로 결과가 같지 않다.
오답 풀이
- 1번: DELETE와 DROP의 결과를 같다고 했으므로 틀렸다.
- 2번: DROP과 TRUNCATE의 차이를 적절히 설명한다.
- 3번: TRUNCATE는 대량 삭제 시 DELETE보다 빠른 경우가 많다.
- 4번: DDL 성격의 DROP/TRUNCATE와 DML인 DELETE의 트랜잭션 처리 차이를 설명한다.
보충 개념 DELETE는 행 삭제, TRUNCATE는 테이블 데이터 초기화, DROP은 객체 삭제이다. 세 명령어는 롤백 가능성과 구조 유지 여부가 다르다.