Computer >> Máy Tính >  >> Lập trình >> SQL Server

Lệnh DELETE trong SQL Server

Câu lệnh DELETE trong SQL Server (Transact-SQL) được sử dụng để xóa một hoặc nhiều bản ghi khỏi bảng trong SQL Server.

Cú pháp lệnh DELETE trong SQL Server

Cú pháp đơn giản của lệnh DELETE như sau.

  DELETE FRO M bang 
[WHERE dieu_kien];

Cú pháp đầy đủ của lệnh DELETE như sau.

  DELETE [TOP (g iatri_dau) [PERCENT] ] 
FROM bang
[WHERE dieu_kien ];

Tên biến hoặc giá trị biến

trạng thái

Bảng cần xóa bản ghi.

WHERE dieu_kien

Tùy chọn. Các điều kiện mà bản ghi phải đáp ứng để được xóa.

TOP (giatri_dau)

Tùy chọn. Nếu cụ thể, nó sẽ chèn giá trị đầu tiên của hàng dựa trên giatri_dau. Ví dụ:TOP (10) sẽ chèn 10 hàng đầu tiên từ tập kết quả.

PERCENT

Tùy chọn. Nếu được chỉ định, các hàng đầu tiên dựa trên phần trăm giatri_dau của tập kết quả. Ví dụ:TOP (10) PERCENT sẽ chèn 10% giá trị đầu tiên trong tập kết quả.

Lưu ý

Không cần liệt kê các trường trong câu lệnh DELETE vì bạn sẽ xóa tất cả các hàng trong bảng.

Ví dụ:sử dụng 1 điều kiện

  DELETE FROM nh anvien 
WHERE ten = 'Sarah';

Lệnh này sẽ xóa tất cả các bản ghi trong bảng có tên nhân viên Sarah.

Nếu bạn muốn kiểm tra số lượng mục đã xóa, hãy chạy lệnh SELECT trước khi thực hiện lệnh xóa.

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

Ví dụ:sử dụng 2 điều kiện

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

Lệnh này sẽ xóa tất cả các bản ghi trong bảng nếu tên nhân viên là Johnson và nhanvien_id lớn hơn hoặc bằng 80.

Để biết số hàng đã bị xóa, hãy chạy câu lệnh SELECT bên dưới trước khi chạy lệnh DELETE.

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

Ví dụ:sử dụng từ khóa TOP

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

Thao tác này sẽ xóa 3 bản ghi đầu tiên trong bảng khi họ của nhân viên là Johnson. Nếu có các bản ghi khác trong bảng này có họ của Johnson, thì chúng không bị ảnh hưởng bởi DELETE này.

Ví dụ - sử dụng mệnh đề EXISTS

Bạn có thể thực hiện lệnh xóa phức tạp hơn, chẳng hạn như xóa các bản ghi trong bảng dựa trên các giá trị trong bảng khác chẳng hạn. Vì không thể hiển thị nhiều hơn một bảng trong mệnh đề FROM trong câu lệnh DELETE, mệnh đề EXISTS có thể được sử dụng như sau.

  DELETE FROM nhanvien 
WHERE EXISTS
(SELECT *
FROM danhba
WHERE danhba.danhba_id = nhanvien.nhanvien_id
AND danhba.danhba_id <100);

Câu lệnh DELETE này sẽ xóa tất cả các bản ghi trong bảng khi có một bản ghi trong danh sách tên mà List_id nhỏ hơn 100 và list_id khớp với nhanvien_id.

Nếu bạn muốn xác định số dòng bị xóa, hãy chạy lệnh SELECT trước khi xóa.

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