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

MySQL TRUNCATE와 DROP 명령의 핵심 차이점 완벽 정리

MySQL TRUNCATE와 DROP의 핵심 차이점

MySQL에서 TRUNCATEDROP 명령의 가장 중요한 차이점은 다음과 같습니다. TRUNCATE 명령은 테이블에 저장된 모든 데이터를 삭제하지만 테이블의 구조(스키마)는 그대로 유지합니다. 반면 DROP 명령은 테이블의 데이터뿐만 아니라 테이블 구조 자체까지 데이터베이스에서 완전히 제거합니다.

또한 TRUNCATE 실행 시 AUTO_INCREMENT로 설정된 PRIMARY KEY 값도 함께 초기화되어, 이후 새로 삽입되는 데이터는 다시 1번부터 번호가 부여됩니다.

예제

먼저 'testing'이라는 테이블을 생성하고 샘플 데이터를 삽입해 보겠습니다.

mysql> Create table testing(id int PRIMARY KEY NOT NULL AUTO_INCREMENT,Name Varchar(20));
Query OK, 0 rows affected (0.24 sec)

mysql> Insert into testing(Name) Values('Ram'),('Mohan'),('John');
Query OK, 3 rows affected (0.12 sec)
Records: 3 Duplicates: 0 Warnings: 0

mysql> Select * from testing;
+----+-------+
| id | Name |
+----+-------+
| 1 | Ram |
| 2 | Mohan |
| 3 | John |
+----+-------+
3 rows in set (0.00 sec)

TRUNCATE 사용 시

'testing' 테이블을 TRUNCATE하면 모든 데이터가 삭제되지만, 아래 결과처럼 테이블 구조는 여전히 데이터베이스에 남아 있으며 PRIMARY KEY(AUTO_INCREMENT) 값도 초기화된 것을 확인할 수 있습니다.

mysql> Truncate table testing;
Query OK, 0 rows affected (0.04 sec)

mysql> DESCRIBE testing;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| Name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.21 sec)

DROP 사용 시

반면 테이블에 DROP 명령을 적용하면 테이블 구조 자체가 데이터베이스에서 삭제됩니다. 따라서 이후 DESCRIBE 명령으로 테이블을 조회하려 하면 테이블이 존재하지 않는다는 오류가 발생합니다.

mysql> Drop table testing;
Query OK, 0 rows affected (0.08 sec)

mysql> DESCRIBE testing;
ERROR 1146 (42S02): Table 'query.testing' doesn't exist

정리

  • TRUNCATE: 테이블의 모든 데이터를 빠르게 삭제하며, 테이블 구조는 유지되고 AUTO_INCREMENT 값이 초기화됩니다.
  • DROP: 테이블의 데이터와 구조를 모두 완전히 삭제합니다. 다시 사용하려면 테이블을 새로 생성해야 합니다.