DROP vs TRUNCATE

DROP은 테이블을 없애고, TRUNCATE는 테이블을 비웁니다.

둘 다 위험한 DDL 계열 작업이지만 결과 상태가 다릅니다. DROP은 객체 자체를 제거하고, TRUNCATE는 객체 구조를 남긴 채 행을 빠르게 삭제합니다.

ROLLBACK 가능 여부는 DBMS마다 다릅니다.

Oracle, MySQL은 DDL 암묵 커밋을 조심해야 하고, PostgreSQL은 트랜잭션 안에서 TRUNCATE를 롤백할 수 있습니다.

DROP TABLE employees

구조와 데이터가 함께 사라집니다.

구조테이블 객체 제거
데이터테이블 안의 행도 함께 제거
이후 작업다시 쓰려면 복구하거나 새로 생성
예외Oracle은 recycle bin/flashback 경로가 있을 수 있음
TRUNCATE TABLE employees

구조는 남기고 모든 행만 비웁니다.

구조테이블, 컬럼, 인덱스 정의 유지
데이터모든 행을 빠르게 삭제
이후 작업같은 테이블에 다시 INSERT 가능
주의외래 키 참조와 트랜잭션 규칙을 확인
Oracle DDL 암묵 커밋 주의

TRUNCATE는 사용자 ROLLBACK으로 되돌릴 수 없습니다. DROP TABLE은 recycle bin을 거칠 수 있고, PURGE는 그 경로를 없앱니다.

MySQL DDL/암묵 커밋 성격

TRUNCATE도 DDL처럼 동작하며 암묵 커밋이 개입합니다. 운영에서는 사전 백업과 복구 계획이 중요합니다.

PostgreSQL 트랜잭션 롤백 가능

TRUNCATE와 일반 DROP TABLE은 트랜잭션 안에서 롤백할 수 있지만, 잠금과 참조 관계 위험은 그대로 확인해야 합니다.

운영 판단: “빠르게 비우기”가 목적이면 TRUNCATE, “테이블 자체 제거”가 목적이면 DROP입니다. 어느 쪽이든 권한, 참조 관계, 백업, 롤백 경로를 먼저 확인해야 합니다.