DELETE trong SQL Server

Trong hướng dẫn này, bạn sẽ tìm hiểu cách sử dụng câu lệnh DELETE trong SQL Server để xóa một hoặc nhiều bản ghi khỏi bảng.

Giới thiệu về lệnh DELETE trong SQL Server

Để xóa hoàn toàn một hoặc nhiều bản ghi khỏi bảng, bạn sử dụng câu lệnh DELETE. Sau đây minh họa cú pháp của nó:

DELETE [ TOP ( expression ) [ PERCENT ] ]  
FROM table_name
[WHERE search_condition];

Đầu tiên, bạn chỉ định tên của bảng cần xóa các bản ghi trong mệnh đề FROM.

Ví dụ: câu lệnh sau sẽ xóa tất cả các bản ghi khỏi bảng target_table:

DELETE FROM target_table;

Thứ hai, để chỉ định số lượng hoặc phần trăm của các bản ghi ngẫu nhiên sẽ bị xóa, bạn sử dụng mệnh đề TOP.

Ví dụ: câu lệnh DELETE sau sẽ xóa 10 bản ghi ngẫu nhiên khỏi bảng target_table:

DELETE TOP 10
FROM target_table;

Vì bảng lưu trữ các bản ghi theo thứ tự không xác định, chúng tôi không biết bản ghi nào sẽ bị xóa nhưng chúng tôi biết chắc chắn rằng số hàng sẽ bị xóa là 10.

Tương tự, bạn có thể xóa 10 phần trăm các hàng ngẫu nhiên bằng cách sử dụng DELETEcâu lệnh sau :

DELETE TOP 10 PERCENT
FROM target_table;

Thứ ba, thực tế mà nói, bạn sẽ hiếm khi xóa tất cả các bản ghi khỏi một bảng mà chỉ một hoặc một vài bản ghi mà thôi. Trong trường hợp này, bạn cần chỉ định  biểu thức search_condition trong mệnh đề WHERE để giới hạn số lượng bản ghi bị xóa.

Các bản ghi thỏa mãn biểu thức search_condition sẽ bị xóa.

Mệnh đề WHERE này là tùy chọn. Nếu bạn bỏ qua nó, câu lệnh DELETE sẽ xóa tất cả các bản ghi khỏi bảng.

Ví dụ câu lệnh DELETE trong SQL Server

Hãy tạo một bảng mới để minh họa cho câu lệnh DELETE trong SQL Server.

Câu lệnh sau đây tạo một bảng có tên là production.product_history với dữ liệu được sao chép từ bảng production.products:

SELECT * 
INTO production.product_history
FROM
    production.products;

Truy vấn sau đây trả về tất cả các bản ghi từ bảng product_history:

SELECT * 
FROM production.product_history;

Như có thể thấy rõ trong đầu ra, chúng ta có tổng cộng 321 bản ghi.

Xóa một số bản ghi ngẫu nhiên

Câu lệnh DELETE sau sẽ xóa 21 bản ghi ngẫu nhiên khỏi bảng product_history:

DELETE TOP (21)
FROM production.product_history;

Đây là thông báo của SQL Server:

(21 rows affected)

Nó có nghĩa là 21 bản ghi đã bị xóa.

Xóa phần trăm bản ghi ngẫu nhiên

Câu lệnh DELETE sau sẽ xóa 5 phần trăm các bản ghi ngẫu nhiên khỏi bảng product_history:

DELETE TOP (5) PERCENT
FROM production.product_history;

SQL Server đã đưa ra thông báo cho biết 15 bản ghi (300 x 5% = 15) đã bị xóa.

(15 rows affected)

Xóa một số hàng với một ví dụ điều kiện

Câu lệnh DELETE sau đây sẽ xóa tất cả các sản phẩm có mẫu năm 2017:

DELETE
FROM
    production.product_history
WHERE
    model_year = 2017;

SQL Server thông báo đã xóa 75 sản phẩm:

(75 rows affected)

Xóa tất cả các bản ghi khỏi bảng

Câu lệnh DELETE sau sẽ xóa tất cả các bản ghi khỏi bảng product_history:

DELETE FROM production.product_history;
Lưu ý: nếu bạn muốn xóa tất cả các bản ghi khỏi một bảng lớn, bạn nên sử dụng câu lệnh TRUNCATE TABLE sẽ nhanh hơn và hiệu quả hơn.

Trong hướng dẫn này, bạn đã học cách sử dụng câu lệnh DELETE trong SQL Server để xóa một hoặc nhiều bản ghi khỏi bảng.



Bài viết liên quan:

Cách sử dụng mệnh đề HAVING trong SQL Server để lọc các nhóm dựa trên các điều kiện được chỉ định.

Tìm hiểu mọi thứ cần biết về trigger trong SQL Server giúp bạn sử dụng trigger hiệu quả nhất.

Tìm hiểu mọi thứ bạn cần biết về function trong SQL Server: bao gồm hàm vô hướng và hàm bảng.