학습용 기출·복원자료 분류 확인SQLD · 2024년 53회 SQL 기본 및 활용 · 22번
DELETE, TRUNCATE, DROP을 비교한 설명으로 옳지 않은 것은?
1
특정 테이블에 대하여 WHERE 조건절이 없는 DELETE 명령을 수행하면 DROP TABLE 명령을 수행했을 때와 똑같은 결과를 얻을 수 있다.
정답 근거조건 없는 DELETE는 행만 삭제하고 테이블 구조는 남긴다. DROP TABLE은 테이블 객체 자체를 제거하므로 결과가 같다는 설명은 틀리다. 따라서 1번 보기 ‘특정 테이블에 대하여 WHERE 조건절이 없는 DELETE 명령을 수행하면 DROP TABLE 명령을 수행했을 때와 똑같은 결과를 얻을 수 있다.’의 적용 여부를 문제 조건과 대조해야 한다.
2
DROP 명령어는 테이블 정의 자체를 삭제하고, TRUNCATE 명령어는 테이블을 초기상태로 만든다.
오답 이유DROP은 테이블 정의까지 제거하고, TRUNCATE는 구조를 남긴 채 모든 행을 빠르게 제거한다. 따라서 2번 보기 ‘DROP 명령어는 테이블 정의 자체를 삭제하고, TRUNCATE 명령어는 테이블을 초기상태로 만든다.’의 적용 여부를 문제 조건과 대조해야 한다.
3
TRUNCATE 명령어는 UNDO를 위한 데이터를 생성하지 않기 때문에 동일 데이터량 삭제 시 DELETE보다 빠르다.
오답 이유TRUNCATE는 행별 UNDO를 생성하는 DELETE보다 대량 데이터 제거 비용이 일반적으로 작다. 따라서 3번 보기 ‘TRUNCATE 명령어는 UNDO를 위한 데이터를 생성하지 않기 때문에 동일 데이터량 삭제 시 DELETE보다 빠르다.’의 적용 여부를 문제 조건과 대조해야 한다.
4
DROP과 TRUNCATE는 Auto Commit되고, DELETE는 사용자 Commit 으로 수행된다.
오답 이유Oracle에서 DROP과 TRUNCATE는 DDL로 암시적 커밋을 수반하고, DELETE는 트랜잭션에서 COMMIT 또는 ROLLBACK할 수 있다. 따라서 4번 보기 ‘DROP과 TRUNCATE는 Auto Commit되고, DELETE는 사용자 Commit 으로 수행된다.’의 적용 여부를 문제 조건과 대조해야 한다.
ANSWER & EXPLANATION
정답 1번
이 문항에서 조건에 맞지 않는 보기는 1번 ‘특정 테이블에 대하여 WHERE 조건절이 없는 DELETE 명령을 수행하면 DROP TABLE 명령을 수행했을 때와 똑같은 결과를 얻을 수 있다.’입니다. 조건 없는 DELETE와 DROP TABLE은 같지 않다. DELETE는 데이터 행을 지우지만 테이블 구조를 유지하고, DROP은 테이블 정의와 관련 객체를 제거한다.