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 DELETE
câ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.