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

ลบข้อมูลทั้งหมดในตาราง MySQL ใช้ TRUNCATE TABLE


คำสั่ง TRUNCATE TABLE

TRUNCATE TABLE ลบข้อมูลทั้งหมดในตาราง เร็วกว่า DELETE มาก และ Reset Auto Increment:

TRUNCATE TABLE your_table_name;

ตัวอย่างการใช้งาน

สร้างตารางและเพิ่มข้อมูล

CREATE TABLE DeleteAllFromTable (
    PersonId INT,
    PersonName VARCHAR(200)
);
INSERT INTO DeleteAllFromTable VALUES
(100, 'Johnson'), (101, 'John'), (102, 'Carol'), (103, 'Sam');

ข้อมูลก่อนลบ

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

คำสั่ง TRUNCATE

TRUNCATE TABLE DeleteAllFromTable;

ตรวจสอบหลังลบ

SELECT * FROM DeleteAllFromTable;
-- Empty set (0.00 sec)

TRUNCATE vs DELETE

ข้อควรระวัง

  • ไม่สามารถ Rollback ได้ (ยกเว้นใน Transaction บาง Storage Engine)
  • ต้องมีสิทธิ์ DROP บนตาราง
  • Foreign Key Constraint อาจบล็อก TRUNCATE (ต้อง Disable FK Check ก่อน)

ปิด FK Check ชั่วคราว

SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE your_table;
SET FOREIGN_KEY_CHECKS = 1;

คุณสมบัติ TRUNCATE TABLE DELETE FROM table
ความเร็ว เร็วมาก (Drop & Recreate) ช้ากว่า (ลบแถวทีละแถว)
Auto Increment Reset เป็น 1 ไม่ Reset (ต่อจากค่าเดิม)
WHERE Clause ไม่รองรับ รองรับ
Trigger ไม่ยิง ON DELETE Trigger ยิง Trigger ทุกแถว
Rollback ไม่ได้ (Implicit Commit) ได้ (ใน Transaction)
Lock Table Lock Row Lock