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 FROM bang
[WHERE dieu_kien];
Cú pháp đầy đủ của lệnh DELETE như sau.
DELETE [TOP (giatri_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 nhanvien
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 hasun (*)
FROM nhanvien
WHERE ten = 'Sar
ah';
Ví dụ:sử dụng 2 điều kiện
DELETE FROMnhanvien
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 count (*)
FROM nhanvien
WHERE ho = 'Johnson'
AND nhanvien_id
> = 80;
Ví dụ:sử dụng từ khóa TOP
DELETETOP(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 FROMnhanvien
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.
SELECTcount (*)
FROM nhanvien
WHERE EXITS
(SELECT *
FROM danhba
WHERE danhba.danhba_id = nhanvien.nhanvien_id
AND danhba.da
nhba_id <100);