Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

DROP TABLE vs TRUNCATE TABLE ใน MySQL ต่างอย่างไร?

DROP TABLE — ลบทั้งตาราง โครงสร้าง และข้อมูล หายไปหมด

TRUNCATE TABLE — ลบข้อมูลทั้งหมด แต่โครงสร้างตารางยังคงอยู่

ตัวอย่าง DROP TABLE

mysql> CREATE TABLE DemoTable (Id INT PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(20));
mysql> INSERT INTO DemoTable(Name) VALUES ('Larry'), ('Chris');
mysql> SELECT * FROM DemoTable;
+----+-------+
| Id | Name  |
+----+-------+
|  1 | Larry |
|  2 | Chris |
+----+-------+
mysql> DROP TABLE DemoTable;
Query OK, 0 rows affected (0.18 sec)

พยายามดูข้อมูลหรือโครงสร้าง → Error: Table doesn't exist

mysql> SELECT * FROM DemoTable;  -- ERROR 1146
mysql> DESC DemoTable;         -- ERROR 1146

ตัวอย่าง TRUNCATE TABLE

mysql> CREATE TABLE DemoTable (Id INT PRIMARY KEY AUTO_INCREMENT, FirstName VARCHAR(20));
mysql> INSERT INTO DemoTable(FirstName) VALUES ('Chris'), ('Robert');
mysql> SELECT * FROM DemoTable;
+----+-----------+
| Id | FirstName |
+----+-----------+
|  1 | Chris     |
|  2 | Robert    |
+----+-----------+
mysql> TRUNCATE TABLE DemoTable;
Query OK, 0 rows affected (0.06 sec)

ข้อมูลหาย แต่โครงสร้างยังเหลือ:

mysql> SELECT * FROM DemoTable;  -- Empty set
mysql> DESC DemoTable;         -- โครงสร้างยังแสดงได้
+-----------+-------------+------+-----+---------+----------------+
| Field     | Type        | Null | Key | Default | Extra          |
+-----------+-------------+------+-----+---------+----------------+
| Id        | int(11)     | NO   | PRI | NULL    | auto_increment |
| FirstName | varchar(20) | YES  |     | NULL    |                |
+-----------+-------------+------+-----+---------+----------------+

สรุปความแตกต่าง

คำสั่งข้อมูลโครงสร้างAUTO_INCREMENTTrigger
DROP TABLEหายหายรีเซ็ตไม่ยิง
TRUNCATE TABLEหายคงอยู่รีเซ็ตไม่ยิง
DELETE FROMหายคงอยู่ไม่รีเซ็ตยิง (row-level)