오라클에서 데이터를 삭제하거나 테이블을 정리할 때 가장 많이 사용되는 명령어가 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문 모두 삭제라는 공통된 목적을 가지고 있다. 하지만 실제로는 동작 방식과 어느 때에 사용해야 하는지 다르다. 이 차이를 제대로 알지 못하고 사용하면 아주 큰일이 발생한다... 정말 생각만 해도 무섭다. 그러므로 완벽하게 차이에 대해 이해하고 사용하도록 하자...! 삭제라는 것은 진짜 중요한 것 같다. 되돌릴 수 없을 때도 있으니 주의해서 사용하도록 하자...! 감사합니다. (_ _)
'오라클' 카테고리의 다른 글
| [오라클] UNION vs UNION ALL 차이 완벽 정리 (0) | 2026.01.19 |
|---|---|
| [오라클] PARTITION BY 완벽 정리 (0) | 2026.01.17 |
| [오라클] DROP 문 완벽 정리 (1) | 2026.01.15 |
| [오라클] ALTER 문 완벽 정리 (0) | 2026.01.14 |
| [오라클] CREATE 문 완벽 정리 (0) | 2026.01.13 |