본문 바로가기
오라클

[오라클] DELETE vs DROP vs TRUNCATE 완벽 정리

by devlog93 2026. 1. 16.

오라클에서 데이터를 삭제하거나 테이블을 정리할 때 가장 많이 사용되는 명령어가 DELETE, DROP, TRUNCATE이다. 보기에는 모두 지운다라고 생각할 수 있지만 동작방식이나 복구가능 여부 용도는 정말 다르다. 이 차이를 명확하게 이해하고자 작성을 해본다. 이해하지 못하면 진짜... 치명적인 사고로 이어질 수 있으니 알아보자...!


1. DELETE 문

DELETE문은 테이블 구조는 그대로 유지하고 데이터만 삭제하는 DML명령어이다.

DELETE
  FROM EMP;
  
DELETE 
  FROM EMP
 WHERE DEPTNO = 10;

◆ 특징

  • WHERE절 사용 가능.
  • ROLLBACK이 가능.
  • 삭제 시 UNDO로그 생성.
  • 한생씩 삭제. 
  • 트리거 실행.

◆ 언제 사용 하는지?

  • 특정 조건의 데이터만 삭제하고 싶을 때
  • 실수했을 경우 되돌릴 가능성이 있을 때
  • 운영 DB에 가장 안전한 삭제 방식이다.

2. DROP 문

DROP문은 테이블 자체를 완전히 삭제하는 DDL문이다.

DROP TABLE EMP;

◆ 특징

  • 데이터 + 테이블구조 + 인덱스 + 제약조건 모두 삭제.
  • ROLLBACK불가능.
  • RECYCLEBIN으로 이동
  • 참조 객체까지 영향이 갈 수 있음.

◆ 언제 사용하는지?

  • 더 이상 사용하지 않는 테이블을 제거할 때
  • 설계 변경으로 테이블 자체가 필요 없을 때

3. TRUNCATE 문

TRUNCATE문은 테이블의 모든 데이터를 한 번에 삭제하는 DDL문이다.

TRUNCATE TABLE EMP;

◆ 특징

  • WHERE절 사용 불가능.
  • ROLLBACK 불가능.
  • UNDO 로그 생성 거의 안 함.
  • DELETE보다 압도적으로 빠름.
  • 트리거 실행 안됨.

◆ 언제 사용하는지?

  • 테이스 데이터를 전체 초기화할 때
  • 대량 데이터를 정리할 때
  • 운영보다는 개발서버 검증에 적합하다.

4. 핵심 차이 한눈에 정리

구분 DELETE DROP TRUNCATE
삭제대상 데이터 테이블 자체 데이터 전체
WHERE 사용 O X X
ROLLBACK O X X
속도 느림 빠름 빠름
로그 생성 많음 없음 거의 없음
복구 가능성 높음 매우 낮음 거의 없음

마무리

DELETE, DROP, TRUNCATE문 모두 삭제라는 공통된 목적을 가지고 있다. 하지만 실제로는 동작 방식과 어느 때에 사용해야 하는지 다르다. 이 차이를 제대로 알지 못하고 사용하면 아주 큰일이 발생한다... 정말 생각만 해도 무섭다. 그러므로 완벽하게 차이에 대해 이해하고 사용하도록 하자...! 삭제라는 것은 진짜 중요한 것 같다. 되돌릴 수 없을 때도 있으니 주의해서 사용하도록 하자...! 감사합니다. (_ _)