跳到主要内容

เนื้อหาภาษาไทย / 泰语内容

系统指南 内容已审核

การลบข้อมูล (DELETE)

บทนี้กล่าวถึงการใช้คำสั่ง `DELETE` ใน MySQL เพื่อลบข้อมูลออกจากตาราง โดยเน้นย้ำถึงความสำคัญของการใช้ `WHERE` Clause เพื่อระบุเงื่อนไขการลบข้อมูลเฉพาะแถวที่ต้องก...

การลบข้อมูล (DELETE)

สวัสดีครับ! ในบทที่แล้ว เราได้เรียนรู้วิธีการแก้ไขข้อมูลในตาราง MySQL ด้วยคำสั่ง UPDATE กันไปแล้ว ในบทนี้ เราจะมาเรียนรู้วิธีการลบข้อมูลที่ไม่ต้องการออกจากตารางของเราด้วยคำสั่ง DELETE ครับ

DELETE FROM table_name

คำสั่งพื้นฐานที่สุดในการลบข้อมูลคือ DELETE FROM table_name ซึ่งจะลบข้อมูลทั้งหมดออกจากตารางที่ระบุ หากไม่มีการระบุเงื่อนไขเพิ่มเติม นี่คือรูปแบบคำสั่ง:

DELETE FROM table_name;

คำเตือน: การใช้คำสั่งนี้โดยไม่มี WHERE Clause จะลบข้อมูลทั้งหมดออกจากตาราง ควรใช้ด้วยความระมัดระวังอย่างยิ่ง!

ตัวอย่าง: สมมติว่าเรามีตารางชื่อ customers และต้องการลบข้อมูลทั้งหมดออกจากตาราง เราจะใช้คำสั่งนี้:

DELETE FROM customers;

หลังจากรันคำสั่งนี้ ข้อมูลทั้งหมดในตาราง customers จะถูกลบออกไป

WHERE condition

เพื่อหลีกเลี่ยงการลบข้อมูลทั้งหมดออกจากตาราง เรามักจะใช้ WHERE Clause เพื่อระบุเงื่อนไขในการลบข้อมูลเฉพาะแถวที่ตรงตามเงื่อนไขนั้น นี่คือรูปแบบคำสั่ง:

DELETE FROM table_name WHERE condition;

condition คือเงื่อนไขที่เราต้องการใช้ในการเลือกแถวที่จะลบ เงื่อนไขนี้สามารถเป็นอะไรก็ได้ที่เราเคยเรียนรู้ในบทที่ 15 และ 16 เช่น การเปรียบเทียบค่า การใช้ Operators ต่างๆ (=, >, <, AND, OR, NOT)

ตัวอย่าง: สมมติว่าเรามีตาราง customers ที่มีคอลัมน์ customer_id, first_name, last_name, และ email หากเราต้องการลบข้อมูลลูกค้าที่มี customer_id เท่ากับ 5 เราจะใช้คำสั่งนี้:

DELETE FROM customers WHERE customer_id = 5;

คำสั่งนี้จะลบแถวในตาราง customers ที่มี customer_id เท่ากับ 5 เท่านั้น

ตัวอย่างเพิ่มเติม: หากเราต้องการลบข้อมูลลูกค้าที่มีชื่อ John และนามสกุล Doe เราจะใช้คำสั่งนี้:

DELETE FROM customers WHERE first_name = 'John' AND last_name = 'Doe';

คำสั่งนี้จะลบแถวในตาราง customers ที่มี first_name เท่ากับ 'John' และ last_name เท่ากับ 'Doe'

ตัวอย่างการใช้ Operators: หากเราต้องการลบข้อมูลลูกค้าที่มีอายุมากกว่า 60 ปี เราจะใช้คำสั่งนี้ (สมมติว่ามีคอลัมน์ age):

DELETE FROM customers WHERE age > 60;

ระวังการลบทั้งหมด

ดังที่กล่าวไว้ข้างต้น การใช้คำสั่ง DELETE FROM table_name; โดยไม่มี WHERE Clause จะลบข้อมูลทั้งหมดออกจากตาราง นี่เป็นข้อผิดพลาดที่พบบ่อยและอาจทำให้เกิดความเสียหายอย่างมาก หากไม่มีการสำรองข้อมูล (Backup) ไว้

ข้อควรระวัง:

  • ตรวจสอบเงื่อนไข WHERE Clause ให้ละเอียดก่อนรันคำสั่ง DELETE
  • หากไม่แน่ใจ ให้ลองใช้คำสั่ง SELECT ก่อนเพื่อตรวจสอบว่าเงื่อนไข WHERE Clause เลือกแถวที่ต้องการลบอย่างถูกต้อง
  • ทำการสำรองข้อมูล (Backup) ฐานข้อมูลเป็นประจำ เพื่อป้องกันข้อมูลสูญหาย

ตัวอย่างการป้องกัน: ก่อนที่จะรันคำสั่ง DELETE เราสามารถใช้คำสั่ง SELECT เพื่อตรวจสอบแถวที่จะถูกลบ:

SELECT * FROM customers WHERE customer_id = 5;

หากผลลัพธ์จากคำสั่ง SELECT แสดงแถวที่เราต้องการลบจริงๆ เราจึงค่อยรันคำสั่ง DELETE:

DELETE FROM customers WHERE customer_id = 5;

กรณีใช้งานจริง

กรณีที่ 1: การลบสินค้าที่หมดอายุ

สมมติว่าเรามีตาราง products ที่มีคอลัมน์ product_id, product_name, expiry_date หากเราต้องการลบสินค้าที่หมดอายุแล้ว เราจะใช้คำสั่งนี้:

DELETE FROM products WHERE expiry_date < CURDATE();

CURDATE() เป็นฟังก์ชันใน MySQL ที่คืนค่าวันที่ปัจจุบัน คำสั่งนี้จะลบสินค้าที่มี expiry_date น้อยกว่าวันที่ปัจจุบัน

กรณีที่ 2: การลบผู้ใช้ที่ไม่ได้ใช้งานนานเกิน 1 ปี

สมมติว่าเรามีตาราง users ที่มีคอลัมน์ user_id, username, last_login หากเราต้องการลบผู้ใช้ที่ไม่ได้ใช้งานนานเกิน 1 ปี เราจะใช้คำสั่งนี้:

DELETE FROM users WHERE last_login < DATE_SUB(CURDATE(), INTERVAL 1 YEAR);

DATE_SUB(CURDATE(), INTERVAL 1 YEAR) เป็นฟังก์ชันที่คืนค่าวันที่ปัจจุบันลบด้วย 1 ปี คำสั่งนี้จะลบผู้ใช้ที่มี last_login น้อยกว่าวันที่ปัจจุบันลบด้วย 1 ปี

ข้อผิดพลาดที่พบบ่อย

ข้อผิดพลาดที่ 1: ลืม WHERE Clause

ข้อผิดพลาดนี้เกิดขึ้นเมื่อเราใช้คำสั่ง DELETE FROM table_name; โดยไม่ได้ตั้งใจ ซึ่งจะลบข้อมูลทั้งหมดออกจากตาราง

วิธีแก้ไข: ตรวจสอบให้แน่ใจว่าเราได้ระบุ WHERE Clause ที่ถูกต้องก่อนรันคำสั่ง DELETE

ข้อผิดพลาดที่ 2: เงื่อนไข WHERE Clause ไม่ถูกต้อง

ข้อผิดพลาดนี้เกิดขึ้นเมื่อเงื่อนไข WHERE Clause ของเราไม่ถูกต้อง ทำให้ลบข้อมูลที่ไม่ต้องการ

วิธีแก้ไข: ลองใช้คำสั่ง SELECT ก่อนเพื่อตรวจสอบว่าเงื่อนไข WHERE Clause เลือกแถวที่ต้องการลบอย่างถูกต้อง

ข้อผิดพลาดที่ 3: การลบข้อมูลที่เกี่ยวข้องกับ Foreign Key

ข้อผิดพลาดนี้เกิดขึ้นเมื่อเราพยายามลบข้อมูลในตารางหนึ่ง ที่มี Foreign Key อ้างอิงไปยังตารางอื่น และตารางอื่นยังมีข้อมูลที่อ้างอิงถึงข้อมูลที่เรากำลังจะลบ

วิธีแก้ไข: เราต้องลบข้อมูลที่อ้างอิงถึง Foreign Key ก่อน หรือตั้งค่า Foreign Key Constraint ให้เป็น ON DELETE CASCADE ซึ่งจะทำให้ข้อมูลที่อ้างอิงถูกลบไปด้วยโดยอัตโนมัติ (แต่ควรระวังในการใช้งาน)

สรุป

ในบทนี้ เราได้เรียนรู้วิธีการลบข้อมูลออกจากตาราง MySQL ด้วยคำสั่ง DELETE โดยเน้นย้ำถึงความสำคัญของการใช้ WHERE Clause เพื่อป้องกันการลบข้อมูลที่ไม่พึงประสงค์ นอกจากนี้ เรายังได้เรียนรู้เกี่ยวกับข้อผิดพลาดที่พบบ่อยและวิธีแก้ไข หวังว่าบทนี้จะเป็นประโยชน์ในการจัดการข้อมูลในฐานข้อมูลของคุณนะครับ ในบทต่อไป เราจะมาเรียนรู้เกี่ยวกับ Clause ORDER BY ซึ่งใช้สำหรับการเรียงลำดับข้อมูลที่ดึงออกมาจากฐานข้อมูล แล้วพบกันใหม่ครับ!

Office.in.th Custom Service

想基于此结构开发或定制系统?

Office.in.th 承接企业级 Web Application、API Integration 以及政府/企业管理系统的设计与开发,并提供长期支持。

查看软件开发服务