Lệnh DELETE trong SQL Server

Lệnh DELETE trong SQL Server (Transact-SQL) được dùng để xóa một hoặc nhiều bản ghi từ một 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ư dưới đây.

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

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

bang

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

WHERE dieu_kien

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

TOP (giatri_dau)

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

PERCENT

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

Lưu ý

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

Ví dụ - dùng 1 điều kiện

DELETE FROM nhanvien
WHERE ten = ‘Sarah’;

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

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

SELECT coun (*)
FROM nhanvien
WHERE ten = ‘Sarah’;

Ví dụ - 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ả bản ghi trong bảng nhanvien nếu họ 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, chạy lệnh SELECT dưới đây trước khi chạy lệnh DELETE.

SELECT count (*) 
FROM nhanvien
WHERE ho = ‘Johnson’
AND nhanvien_id >= 80;

Ví dụ - dùng từ khóa TOP

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

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

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

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

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

Lệnh DELETE này sẽ xóa tất cả bản ghi trong bảng nhanvien khi có bản ghi trong bảng danhba mà danhba_id nhỏ hơn 100 và danhba_id khớp với nhanvien_id.

Nếu muốn xác định số dòng bị xóa, 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.danhba_id < 100);

Bài trước: Lệnh UPDATE trong SQL Server

Bài sau: Lệnh TRUNCATE TABLE trong SQL Server

Thứ Sáu, 10/05/2019 09:39
41 👨 18.857