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:
Sequence trong SQL Server
Trung Nguyen 31/07/2021
Sequence trong SQL Server

Trong hướng dẫn này, bạn sẽ tìm hiểu về các đối tượng Sequence trong SQL Server để tạo ra một chuỗi các giá trị số dựa trên một đặc tả cụ thể.

Cột Identity trong SQL Server
Trung Nguyen 30/07/2021
Cột Identity trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách sử dụng thuộc tính IDENTITY trong SQL Server để thêm cột định danh vào bảng.

CREATE TABLE trong SQL Server
Trung Nguyen 29/07/2021
CREATE TABLE trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách sử dụng câu lệnh CREATE TABLE trong SQL Server để tạo một bảng mới.

Ràng buộc NOT NULL trong SQL Server
Trung Nguyen 28/07/2021
Ràng buộc NOT NULL trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách sử dụng ràng buộc NOT NULL trong SQL Server để đảm bảo một cột không chứa dữ liệu NULL.