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.

SQL Server
Bài Viết Liên Quan:
INTERSECT trong SQL Server
Trung Nguyen 22/11/2020
INTERSECT trong SQL Server

Tìm hiểu cách sử dụng toán tử INTERSECT trong SQL Server để trả về phần giao nhau của các tập kết quả của hai truy vấn.

EXCEPT trong SQL Server
Trung Nguyen 22/11/2020
EXCEPT trong SQL Server

Tìm hiểu cách sử dụng EXCEPT trong SQL Server để loại trừ tập kết quả của một truy vấn ra khỏi tập kết quả của một truy vấn khác.

SQL Server: Hướng dẫn subquery trong SQL Server từ A-Z
Trung Nguyen 22/11/2020
SQL Server: Hướng dẫn subquery trong SQL Server từ A-Z

Tìm hiểu về subquery, toán tử EXISTS, ANY, ALL trong SQL Server và cách sử dụng truy vấn con để truy vấn dữ liệu.

UNION trong SQL Server
Trung Nguyen 22/11/2020
UNION trong SQL Server

Tìm hiểu cách sử dụng UNION trong SQL Server để kết hợp kết quả của hai hoặc nhiều truy vấn thành một tập kết quả duy nhất.