DELETE / TRUNCATE / DROP 정리

TJK·2025년 8월 22일
0

DELETE / TRUNCATE / DROP 정리

DELETE, TRUNCATE, DROP은 모두 데이터나 테이블을 삭제하는 명령어입니다. 하지만 각각의 기능과 특성이 매우 다르므로 SQLD 시험에서는 이 차이점을 명확히 구분하는 문제가 자주 출제됩니다.


1. DELETE / TRUNCATE / DROP 개념 비교

명령어개념대상분류ROLLBACK시험 핵심 포인트
DELETE데이터(행) 삭제테이블의 일부/전체 행DML가능WHERE 절로 조건 삭제 가능.
TRUNCATE모든 데이터 삭제테이블의 전체 행DDL불가조건 불가. 매우 빠르다.
DROP객체 자체 삭제테이블, 뷰, 인덱스 등DDL불가데이터 + 구조 모두 삭제.

2. 각 명령어 상세 정리

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

  • 특징: 표준 SQL에 존재하지 않는 명령어입니다.
  • SQLD 시험: REMOVE TABLE과 같은 형태로 함정 보기에 자주 등장합니다.

3. SQLD 시험 핵심 포인트

  • ROLLBACK 가능 여부가 가장 중요한 차이점입니다.
    • DELETE (DML) → 가능
    • TRUNCATE, DROP (DDL) → 불가
  • TRUNCATEDROP은 DDL이므로 실행 즉시 **AUTO COMMIT**이 발생합니다.
  • 테이블 구조 유지 여부:
    • DELETE / TRUNCATE유지
    • DROP삭제

4. 암기 팁

  • 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


정답 및 해설

  • 문제 1 정답: B
    • 해설: TRUNCATEDROP은 DDL이므로 실행 즉시 COMMIT되어 ROLLBACK이 불가능합니다.
  • 문제 2 정답: D
    • 해설: REMOVE는 SQL 표준에 없는 키워드이며, 시험에서 함정으로 자주 출제됩니다.
  • 문제 3 정답: C
    • 해설: TRUNCATE는 테이블의 모든 데이터만 삭제하고, 구조와 제약조건은 그대로 유지합니다.
  • 문제 4 정답: C
    • 해설: DROP은 테이블 자체를 삭제하므로, 데이터와 함께 테이블의 구조까지 모두 사라집니다.
profile
Hello world!

0개의 댓글