คำสั่ง DELETE ใน SQL Server (Transact-SQL) ใช้เพื่อลบระเบียนอย่างน้อยหนึ่งรายการออกจากตารางใน SQL Server
ลบไวยากรณ์คำสั่งใน SQL Server
ไวยากรณ์ง่ายๆ ของคำสั่ง DELETE มีดังนี้
DELETE FROM bang
[WHERE dieu_kien];
ไวยากรณ์ทั้งหมดของคำสั่ง DELETE มีดังต่อไปนี้
DELETE [TOP (giatri_dau) [PERCENT] ]
FROM bang
[WHERE dieu_kien
];
ชื่อตัวแปรหรือค่าตัวแปร
ระบุ
ตารางจำเป็นต้องลบเรกคอร์ด
WHERE dieu_kien
ตัวเลือก เงื่อนไขที่บันทึกต้องเป็นไปตามจะถูกลบ
TOP (giatri_dau)
ตัวเลือก หากเจาะจง มันจะแทรกค่าแรกของแถวตาม giatri_dau ตัวอย่างเช่น TOP (10) จะแทรก 10 แถวแรกจากชุดผลลัพธ์
PERCENT
ตัวเลือก หากระบุไว้ แถวแรกจะอิงตามเปอร์เซ็นต์ของ giatri_dau ของชุดผลลัพธ์ ตัวอย่างเช่น TOP (10) PERCENT จะแทรก 10% ของค่าแรกในชุดผลลัพธ์
หมายเหตุ
ไม่จำเป็นต้องแสดงรายการฟิลด์ในคำสั่ง DELETE เพราะคุณจะลบแถวทั้งหมดในตาราง
ตัวอย่างเช่น - ใช้ 1 เงื่อนไข
DELETE FROM nhanvien
WHERE ten = 'Sarah';
คำสั่งนี้จะลบระเบียนทั้งหมดในตารางที่มีชื่อพนักงานว่า Sarah
หากคุณต้องการตรวจสอบจำนวนรายการที่ถูกลบ ให้รันคำสั่ง SELECT ก่อนดำเนินการคำสั่ง delete
SELECT hasun (*)
FROM nhanvien
WHERE ten = 'Sar
ah';
ตัวอย่างเช่น - ใช้ 2 เงื่อนไข
DELETE FROMnhanvien
WHERE ho = 'Johnson'
AND nhanvien_id >
= 80;
คำสั่งนี้จะลบระเบียนทั้งหมดในตารางหากชื่อพนักงานคือ Johnson และ nhanvien_id มากกว่าหรือเท่ากับ 80
หากต้องการทราบจำนวนแถวที่ถูกลบ ให้รันคำสั่ง SELECT ด้านล่างก่อนที่จะรันคำสั่ง DELETE
SELECT count (*)
FROM nhanvien
WHERE ho = 'Johnson'
AND nhanvien_id
> = 80;
ตัวอย่างเช่น - ใช้คำหลัก TOP
DELETETOP(3)
FROM nhanvien
WHERE ho =
'Johnson';
การดำเนินการนี้จะลบระเบียน 3 รายการแรกในตารางเมื่อชื่อสกุลของพนักงานคือ Johnson หากมีระเบียนอื่นในตารางนี้ที่มีนามสกุลของ Johnson ข้อมูลดังกล่าวจะไม่ได้รับผลกระทบจากการลบนี้
ตัวอย่างเช่น - ใช้ประโยค EXISTS
คุณสามารถดำเนินการคำสั่งลบที่ซับซ้อนมากขึ้นได้ เช่น การลบระเบียนในตารางตามค่าในตารางอื่น เป็นต้น เนื่องจากเป็นไปไม่ได้ที่จะแสดงผลมากกว่าหนึ่งตารางในส่วนคำสั่ง FROM ในคำสั่ง DELETE จึงสามารถใช้คำสั่งย่อย EXISTS ได้ดังต่อไปนี้
DELETE FROMnhanvien
WHERE EXISTS
(SELECT *
FROM danhba
WHERE danhba.danhba_id = nhanvien.nhanvien_id
AND danhba.danhba_id
<100);
คำสั่ง DELETE นี้จะลบระเบียนทั้งหมดในตารางเมื่อมีบันทึกในรายการชื่อที่ listener_id น้อยกว่า 100 และ list_id ตรงกับ nhanvien_id
ถ้าคุณต้องการกำหนดจำนวนบรรทัดที่ถูกลบ ให้รันคำสั่ง SELECT ก่อนทำการลบ
SELECTcount (*)
FROM nhanvien
WHERE EXITS
(SELECT *
FROM danhba
WHERE danhba.danhba_id = nhanvien.nhanvien_id
AND danhba.da
nhba_id <100);