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

MySQL 테이블의 전체 레코드 삭제 방법 – TRUNCATE 문 완벽 가이드

MySQL 테이블에 저장된 모든 레코드(데이터)를 한 번에 삭제하려면 TRUNCATE 문을 사용하는 것이 가장 간단하고 효율적인 방법입니다.

TRUNCATE 기본 문법

TRUNCATE TABLE yourTableName;

위 구문을 실행하면 해당 테이블의 모든 레코드가 즉시 삭제됩니다. 실제 동작 과정을 이해하기 위해 예제 테이블을 만들어 단계별로 살펴보겠습니다.

1. 예제 테이블 생성

먼저 다음 쿼리로 테이블을 생성합니다.

mysql> create table DeleteAllFromTable
   -> (
   -> PersonId int,
   -> PersonName varchar(200)
   -> );
Query OK, 0 rows affected (0.67 sec)

2. 샘플 데이터 삽입

INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into DeleteAllFromTable values(100,'Johnson');
Query OK, 1 row affected (0.10 sec)

mysql> insert into DeleteAllFromTable values(101,'John');
Query OK, 1 row affected (0.22 sec)

mysql> insert into DeleteAllFromTable values(102,'Carol');
Query OK, 1 row affected (0.47 sec)

mysql> insert into DeleteAllFromTable values(103,'Sam');
Query OK, 1 row affected (0.19 sec)

3. 현재 데이터 확인

SELECT 문으로 저장된 전체 레코드를 조회합니다.

mysql> select *from DeleteAllFromTable;

실행 결과는 다음과 같습니다.

+----------+------------+
| PersonId | PersonName |
+----------+------------+
|      100 | Johnson    |
|      101 | John       |
|      102 | Carol      |
|      103 | Sam        |
+----------+------------+
4 rows in set (0.00 sec)

4. TRUNCATE로 전체 레코드 삭제

이제 TRUNCATE 명령어를 사용해 테이블의 모든 레코드를 삭제합니다.

mysql> TRUNCATE TABLE DeleteAllFromTable;
Query OK, 0 rows affected (0.80 sec)

5. 삭제 결과 확인

모든 레코드가 삭제되었으므로 SELECT 문을 실행하면 아무 데이터도 조회되지 않습니다.

mysql> select *from DeleteAllFromTable;
Empty set (0.00 sec)

위 출력 결과에서 확인할 수 있듯이, 테이블에는 더 이상 어떤 레코드도 남아 있지 않습니다.

TRUNCATE와 DELETE의 차이점

참고로 TRUNCATE는 DELETE와 달리 WHERE 절 없이 테이블 전체를 빠르게 비우며, AUTO_INCREMENT 값도 초기화됩니다. 또한 개별 행을 로깅하지 않기 때문에 대용량 테이블을 초기화할 때 DELETE보다 훨씬 빠른 성능을 보입니다. 다만 한 번 실행하면 되돌릴 수 없으므로, 중요한 데이터가 있는 경우 반드시 백업 후 사용하는 것이 좋습니다.