Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> SQL Server

คำสั่ง DELETE ใน SQL Server

คำสั่ง DELETE ใน SQL Server (Transact-SQL) ใช้เพื่อลบระเบียนอย่างน้อยหนึ่งรายการออกจากตารางใน SQL Server

ลบไวยากรณ์คำสั่งใน SQL Server

ไวยากรณ์ง่ายๆ ของคำสั่ง DELETE มีดังนี้

  DELETE FRO M bang 
[WHERE dieu_kien];

ไวยากรณ์ทั้งหมดของคำสั่ง DELETE มีดังต่อไปนี้

  DELETE [TOP (g iatri_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 nh anvien 
WHERE ten = 'Sarah';

คำสั่งนี้จะลบระเบียนทั้งหมดในตารางที่มีชื่อพนักงานว่า Sarah

หากคุณต้องการตรวจสอบจำนวนรายการที่ถูกลบ ให้รันคำสั่ง SELECT ก่อนดำเนินการคำสั่ง delete

  SELECT has un (*) 
FROM nhanvien
WHERE ten = 'Sar ah';

ตัวอย่างเช่น - ใช้ 2 เงื่อนไข

  DELETE FROM  nhanvien 
WHERE ho = 'Johnson'
AND nhanvien_id > = 80;

คำสั่งนี้จะลบระเบียนทั้งหมดในตารางหากชื่อพนักงานคือ Johnson และ nhanvien_id มากกว่าหรือเท่ากับ 80

หากต้องการทราบจำนวนแถวที่ถูกลบ ให้รันคำสั่ง SELECT ด้านล่างก่อนที่จะรันคำสั่ง DELETE

  SELECT coun t (*) 
FROM nhanvien
WHERE ho = 'Johnson'
AND nhanvien_id > = 80;

ตัวอย่างเช่น - ใช้คำหลัก TOP

  DELETE  TOP(3) 
FROM nhanvien
WHERE ho = 'Johnson';

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

ตัวอย่างเช่น - ใช้ประโยค EXISTS

คุณสามารถดำเนินการคำสั่งลบที่ซับซ้อนมากขึ้นได้ เช่น การลบระเบียนในตารางตามค่าในตารางอื่น เป็นต้น เนื่องจากเป็นไปไม่ได้ที่จะแสดงผลมากกว่าหนึ่งตารางในส่วนคำสั่ง FROM ในคำสั่ง DELETE จึงสามารถใช้คำสั่งย่อย EXISTS ได้ดังต่อไปนี้

  DELETE FROM nhanvien 
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 ก่อนทำการลบ

  SELECT count (*) 
FROM nhanvien
WHERE EXITS
(SELECT *
FROM danhba
WHERE danhba.danhba_id = nhanvien.nhanvien_id
AND danhba.da nhba_id <100);