본문 바로가기
DataBase/MySQL

MySQL TRUNCATE 명령어 (테이블 초기화)

by 코딩이라구 2022. 12. 21.

MySQL에서 TRUNCATE 명령어는 DELETE문과 비슷하게 데이터를 삭제하지만, 더 빠르고 완전하게 테이블을 초기화합니다. 이 글에서는 TRUNCATE의 개념과 사용법, DELETE와의 차이점까지 정리해드립니다.

 

MySQL DELETE 문 사용법 (레코드 삭제) →

 

MySQL 테이블 존재 여부 확인 방법 →


MySQL TRUNCATE 테이블 초기화

 

TRUNCATE란?

  • 테이블의 모든 레코드를 완전히 삭제하는 명령어입니다.
  • DELETE문과 달리 조건 지정 없이 전체 삭제만 가능하며, 복구 불가합니다.
  • 내부적으로는 테이블을 DROP한 뒤 다시 생성하는 방식이며, AUTO_INCREMENT 값도 초기화됩니다.
-- 'test' 테이블의 전체 데이터 삭제
TRUNCATE TABLE test;

 

📌 TRUNCATE는 DML이 아닌 DDL에 가까운 명령입니다.

 

TRUNCATE와 DELETE의 공통점과 차이점

공통점

  • 둘 다 테이블의 데이터를 삭제하는 데 사용됩니다.

차이점

  • TRUNCATE: 전체 삭제만 가능, 빠름, 복구 불가, AUTO_INCREMENT 초기화됨
  • DELETE: 조건 지정 가능, 복구 가능, AUTO_INCREMENT 유지됨
구분 TRUNCATE DELETE
삭제 범위 전체 삭제만 가능 조건 지정 가능
속도 빠름 상대적으로 느림
복구 ❌ 불가능 ✅ 가능 (InnoDB + 트랜잭션 사용 시)
AUTO_INCREMENT 초기화됨 유지됨

✅ 요약

  • TRUNCATE는 테이블을 완전히 초기화할 때 사용
  • 빠르지만 복구가 불가능하므로 주의 필요
  • DELETE는 부분 삭제와 조건 삭제에 적합

이 방법은 MySQL 5.x 이상 대부분의 환경에서 동일하게 사용할 수 있습니다.

 

 

MySQL 테이블 존재 여부

 

댓글