SQL การใช้งาน DELETE Statement

คำสั่ง DELETE ใน SQL ใช้สำหรับการลบข้อมูลจากตารางในฐานข้อมูล การลบนี้จะทำในระดับของแถว (row) ไม่ได้ทำการลบโครงสร้างของตารางหรือฟิลด์ในตาราง การใช้งานหลัก ๆ ของคำสั่ง DELETE จะต้องระบุเงื่อนไข (WHERE clause) ว่าต้องการลบข้อมูลแถวไหน หากไม่มีการระบุเงื่อนไข คำสั่ง DELETE จะทำการลบทุกแถวในตารางนั้น

รูปแบบของคำสั่ง DELETE

DELETE FROM table_name WHERE condition;
  • table_name คือ ชื่อตารางที่เราต้องการลบข้อมูลออก
  • condition คือเงื่อนไขที่ใช้ระบุแถวที่จะลบ หากไม่มีเงื่อนไขจะลบทุกแถว

ตัวอย่างที่ 1: ลบข้อมูลที่มีเงื่อนไข

สมมติว่าเรามีตาราง Customers ที่มีข้อมูลดังนี้

SQL
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” คำสั่งจะเป็นดังนี้

SQL
DELETE FROM Customers WHERE City = 'Chicago';

หลังจากรันคำสั่งนี้ ข้อมูลของ Mary Jones จะถูกลบออกจากตาราง

ตัวอย่างที่ 2: ลบข้อมูลทุกแถวในตาราง

หากต้องการลบข้อมูลทุกแถวในตาราง Customers (แต่ยังคงตารางไว้) คำสั่งจะเป็นดังนี้

SQL
DELETE FROM Customers;

คำสั่งนี้จะลบข้อมูลทุกแถวออกจากตาราง Customers

ตัวอย่างที่ 3: ลบข้อมูลที่สัมพันธ์กัน

สมมติว่ามีความสัมพันธ์ระหว่างตาราง เช่น ตาราง Orders ที่เชื่อมโยงกับตาราง Customers ด้วย CustomerID การลบข้อมูลจากตาราง Customers โดยที่ต้องการให้ข้อมูลใน Orders ถูกลบไปด้วยอาจใช้คำสั่ง DELETE พร้อมการตั้งค่าความสัมพันธ์แบบ ON DELETE CASCADE ใน Foreign Key แต่ต้องกำหนดตั้งแต่ตอนสร้างตาราง

ตัวอย่างการสร้างตารางพร้อมความสัมพันธ์

SQL
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) เช่น

SQL
DELETE FROM Customers LIMIT 2;

คำสั่งนี้จะลบข้อมูลลูกค้าเพียง 2 แถวแรกในตาราง Customers

ตัวอย่างที่ 5: ลบข้อมูลโดยใช้เงื่อนไขที่ซับซ้อน

เราสามารถใช้เงื่อนไขที่ซับซ้อนในคำสั่ง DELETE ได้โดยใช้ AND, OR หรือแม้แต่การทำ Subquery เช่น

SQL
DELETE FROM Customers WHERE CustomerID IN (SELECT CustomerID FROM Orders WHERE OrderDate < '2023-01-01');

คำสั่งนี้จะลบลูกค้าที่มีการสั่งซื้อก่อนวันที่ 1 มกราคม 2023

แชร์เรื่องนี้