คำสั่ง DELETE ใน SQL ใช้สำหรับการลบข้อมูลจากตารางในฐานข้อมูล การลบนี้จะทำในระดับของแถว (row) ไม่ได้ทำการลบโครงสร้างของตารางหรือฟิลด์ในตาราง การใช้งานหลัก ๆ ของคำสั่ง DELETE จะต้องระบุเงื่อนไข (WHERE clause) ว่าต้องการลบข้อมูลแถวไหน หากไม่มีการระบุเงื่อนไข คำสั่ง DELETE จะทำการลบทุกแถวในตารางนั้น
รูปแบบของคำสั่ง DELETE
DELETE FROM table_name WHERE condition;
table_nameคือ ชื่อตารางที่เราต้องการลบข้อมูลออกconditionคือเงื่อนไขที่ใช้ระบุแถวที่จะลบ หากไม่มีเงื่อนไขจะลบทุกแถว
ตัวอย่างที่ 1: ลบข้อมูลที่มีเงื่อนไข
สมมติว่าเรามีตาราง Customers ที่มีข้อมูลดังนี้
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY,
Name VARCHAR(255),
City VARCHAR(255)
);
INSERT INTO Customers (CustomerID, Name, City)
VALUES
(1, 'John Smith', 'New York'),
(2, 'Mary Jones', 'Chicago'),
(3, 'Mike Tyson', 'Los Angeles');
หากต้องการลบข้อมูลของลูกค้าที่อยู่ในเมือง “Chicago” คำสั่งจะเป็นดังนี้
DELETE FROM Customers WHERE City = 'Chicago';หลังจากรันคำสั่งนี้ ข้อมูลของ Mary Jones จะถูกลบออกจากตาราง
ตัวอย่างที่ 2: ลบข้อมูลทุกแถวในตาราง
หากต้องการลบข้อมูลทุกแถวในตาราง Customers (แต่ยังคงตารางไว้) คำสั่งจะเป็นดังนี้
DELETE FROM Customers;คำสั่งนี้จะลบข้อมูลทุกแถวออกจากตาราง Customers
ตัวอย่างที่ 3: ลบข้อมูลที่สัมพันธ์กัน
สมมติว่ามีความสัมพันธ์ระหว่างตาราง เช่น ตาราง Orders ที่เชื่อมโยงกับตาราง Customers ด้วย CustomerID การลบข้อมูลจากตาราง Customers โดยที่ต้องการให้ข้อมูลใน Orders ถูกลบไปด้วยอาจใช้คำสั่ง DELETE พร้อมการตั้งค่าความสัมพันธ์แบบ ON DELETE CASCADE ใน Foreign Key แต่ต้องกำหนดตั้งแต่ตอนสร้างตาราง
ตัวอย่างการสร้างตารางพร้อมความสัมพันธ์
CREATE TABLE Orders (
OrderID int,
CustomerID int,
OrderDate date,
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) ON DELETE CASCADE
);เมื่อสร้างตารางพร้อมเงื่อนไขนี้ หากลบข้อมูลใน Customers ที่มี CustomerID เท่ากับ 1 ข้อมูลที่สัมพันธ์กันใน Orders ก็จะถูกลบด้วย
ตัวอย่างที่ 4: ลบข้อมูลแบบจำกัดจำนวน
หากต้องการลบข้อมูลแค่บางส่วนของตาราง เช่น ลบเพียงแค่ 2 แถวแรก คำสั่งอาจใช้ร่วมกับคำสั่ง LIMIT (ในฐานข้อมูลบางประเภทเท่านั้น เช่น MySQL) เช่น
DELETE FROM Customers LIMIT 2;คำสั่งนี้จะลบข้อมูลลูกค้าเพียง 2 แถวแรกในตาราง Customers
ตัวอย่างที่ 5: ลบข้อมูลโดยใช้เงื่อนไขที่ซับซ้อน
เราสามารถใช้เงื่อนไขที่ซับซ้อนในคำสั่ง DELETE ได้โดยใช้ AND, OR หรือแม้แต่การทำ Subquery เช่น
DELETE FROM Customers WHERE CustomerID IN (SELECT CustomerID FROM Orders WHERE OrderDate < '2023-01-01');คำสั่งนี้จะลบลูกค้าที่มีการสั่งซื้อก่อนวันที่ 1 มกราคม 2023
