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_INCREMENT | Trigger |
|---|---|---|---|---|
| DROP TABLE | หาย | หาย | รีเซ็ต | ไม่ยิง |
| TRUNCATE TABLE | หาย | คงอยู่ | รีเซ็ต | ไม่ยิง |
| DELETE FROM | หาย | คงอยู่ | ไม่รีเซ็ต | ยิง (row-level) |