Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Xóa tất cả bản ghi trong bảng MySQL (TRUNCATE)


Sử dụng TRUNCATE TABLE để xóa nhanh toàn bộ dữ liệu, reset AUTO_INCREMENT.

Cú pháp

TRUNCATE TABLE table_name;

Ví dụ minh họa

mysql> CREATE TABLE DeleteAllFromTable (
  PersonId INT, PersonName VARCHAR(200)
);
Query OK, 0 rows affected (0.67 sec)

mysql> INSERT INTO DeleteAllFromTable VALUES
(100,'Johnson'), (101,'John'), (102,'Carol'), (103,'Sam');
Query OK, 4 rows affected

Dữ liệu trước khi xóa:

+----------+------------+
| PersonId | PersonName |
+----------+------------+
| 100      | Johnson    |
| 101      | John       |
| 102      | Carol      |
| 103      | Sam        |
+----------+------------+

Thực hiện TRUNCATE:

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

mysql> SELECT * FROM DeleteAllFromTable;
Empty set (0.00 sec)

TRUNCATE vs DELETE

Đặc điểm TRUNCATE TABLE DELETE FROM table
Tốc độ Rất nhanh (deallocate pages) Chậm (xóa từng dòng, log từng dòng)
AUTO_INCREMENT Reset về 1 Giữ nguyên
Trigger Không kích hoạt Kích hoạt ON DELETE
Rollback Không thể (DDL) Có thể (DML, trong transaction)
WHERE clause Không hỗ trợ Hỗ trợ
Foreign Key Lỗi nếu bị tham chiếu Kiểm tra FK

Lưu ý

  • TRUNCATE là DDL (Data Definition Language), tự commit, không rollback được.
  • Nếu bảng bị FOREIGN KEY tham chiếu, TRUNCATE sẽ báo lỗi. Cần disable FK check hoặc dùng DELETE.
  • Để xóa có điều kiện: phải dùng DELETE WHERE ....