Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 테이블의 모든 행을 삭제하는 방법: TRUNCATE vs DELETE vs DROP

MySQL에서 테이블에 저장된 모든 행(레코드)을 한 번에 삭제해야 하는 경우가 종종 있습니다. 이때 활용할 수 있는 대표적인 방법은 TRUNCATE 문과 DROP 문입니다. 물론 DELETE 문으로도 전체 행을 삭제할 수 있지만, 이 경우 WHERE 절이 테이블의 모든 행을 식별하도록 조건을 작성해야 하므로 번거롭고 실수할 가능성도 높습니다.

TRUNCATE와 DELETE의 차이

TRUNCATE 문과 DELETE 문은 모두 테이블의 데이터만 삭제할 뿐, 테이블 자체의 구조(스키마)는 그대로 유지한다는 공통점이 있습니다. 다만 전체 행을 삭제하는 목적이라면 DELETE 문보다 TRUNCATE 문을 사용하는 것이 좋습니다.

  • TRUNCATE: 테이블의 모든 행을 빠르게 삭제하며, 내부적으로 테이블을 재생성하는 방식으로 동작하기 때문에 성능 면에서 유리합니다.
  • DELETE: 행 단위로 삭제를 처리하므로 대량의 데이터를 지울 때 상대적으로 느릴 수 있으며, WHERE 절 없이 실행하면 전체 행이 삭제됩니다.

반면 DROP 문은 단순히 행만 삭제하는 것이 아니라 테이블의 구조 자체까지 완전히 제거합니다. 따라서 데이터만 비우고 테이블 구조는 남겨야 하는 상황이라면 DROP 문을 사용해서는 안 됩니다.

TRUNCATE 문 기본 문법

TRUNCATE TABLE table_name;

DROP 문 기본 문법

DROP TABLE table_name;

정리하면, 테이블 구조를 유지한 채 모든 행만 삭제하고 싶다면 TRUNCATE 문을, 테이블 자체를 더 이상 사용하지 않고 완전히 제거하고 싶다면 DROP 문을 사용하는 것이 바람직합니다.