Computer >> Máy Tính >  >> Lập trình >> MySQL

Sự khác biệt đáng kể giữa lệnh MySQL TRUNCATE và DROP là gì?

Sự khác biệt đáng kể nhất giữa lệnh MySQL TRUNCATE và lệnh DROP là lệnh TRUNCATE sẽ không phá hủy cấu trúc của bảng nhưng ngược lại lệnh DROP cũng sẽ phá hủy cấu trúc của bảng.

Ví dụ

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)

Bây giờ sau khi TRUNCATING bảng ‘testing’ như sau, cấu trúc của nó vẫn còn trong cơ sở dữ liệu và nó cũng khởi tạo PRIMARY KEY.

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)

Nhưng khi chúng ta áp dụng lệnh DROP trên một bảng thì cấu trúc cũng bị xóa khỏi cơ sở dữ liệu.

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

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