Lệnh Delete trong SQL Server

Trong bài này chúng ta sẽ tìm hiểu lệnh Delete trong SQL Server. Delete được dùng để xóa một hoặc nhiều dòng dữ liệu trong bảng, thường kết hợp với lệnh Where để lọc dữ liệu.

1. Giới thiệu lệnh Delete trong SQL Server

Hầu như ứng dụng nào cũng có tính năng xóa dữ liệu. Ví dụ trong ứng dụng quản lý nhân viên sẽ có chức năng thêm / xóa / sửa.

  • Thêm thì sử dụng lệnh Insert
  • Xóa thì sử dụng lệnh Delete
  • Sửa thì sử dụng lệnh Update

Cú pháp của nó trong SQL Server như sau:

DELETE FROM table_name
WHERE condition;

Nếu bạn không truyền vào condition thì nó sẽ xóa toàn bộ dữ liệu của bảng. Vì vậy bạn nên test kỹ câu lệnh Delete trước khi thực hiện câu truy vấn.

Thông thường ta hay xóa theo khóa chính Primary Key. Ví dụ muốn xóa nhân viên có mã số sinh viên là SV002, đây thường là khóa chính của table SINHVIEN.

Trường hợp xóa dữ liệu mà có ràng buộc khóa ngoại thì bạn phải xóa toàn bộ dữ liệu của bảng con có khóa ngoại trùng với khóa chính của nó đã nhé.

Ví dụ bạn muốn xóa phòng ban PB001 thì bước đầu tiên phải xóa toàn bộ nhân viên trong phòng, hoặc chuyển sang phòng ban khác để tránh bị thất lạc dữ liệu.

Nếu muốn đơn giản hơn thì sử dụng option ON DELETE CASCADE trong lúc tạo khóa ngoại nhé, nó sẽ giúp bạn tự động delete dữ liệu ở bảng con.

CREATE TABLE rooms (
    room_no INT PRIMARY KEY AUTO_INCREMENT,
    room_name VARCHAR(255) NOT NULL,
    building_no INT NOT NULL,
    FOREIGN KEY (building_no)
        REFERENCES buildings (building_no)
        ON DELETE CASCADE
);

2. Cách sử dụng Delete trong SQL Server

Chúng ta sẽ tiếp tục sử dụng table Employees làm ví dụ mẫu nhé.

Cấu trúc của nó như sau:

employees table png

Lời khuyên: Bạn nên backup lại dữ liệu trước khi kiểm thử câu lệnh Delete nhé, bởi vì nó sẽ xóa vĩnh viễn và bạn không thể phục hồi được.

Giả sử mình muốn xóa tất cả nhân viên nằm trong phòng ban có mã officeCode = 4.

DELETE FROM employees 
WHERE
    officeCode = 4;

Xóa nhân viên có mã số employeeNumber = 200.

DELETE FROM employees 
WHERE
    employeeNumber = 200;

Xóa tất cả nhân viên trong bảng employees.

DELETE FROM employees;

Lệnh cuối này nó gần giống như lệnh Truncate, điểm khác duy nhất là Delete xóa nhưng không reset lại chỉ số, còn Truncate thì có.

3. Delete kết hợp Limit trong SQL Server

Một điều khá đặc biệt mà ít người chú ý đến đó là bạn có thể kết hợp lệnh Order By và Limit để tạo ra khoảng giới hạn cần xóa.

Cú pháp như sau:

DELETE FROM table
LIMIT row_count;

Và để sắp xếp thì ta sẽ thêm câu lệnh Order By.

DELETE FROM table_name
ORDER BY c1, c2, ...
LIMIT row_count;

Ví dụ: Xóa 10 nhân viên đầu tiên và danh sách được sắp xếp theo tên nhân viên.

DELETE FROM customers
ORDER BY customerName
LIMIT 10;

Hoặc xóa 20 nhân viên đầu tiên sắp xếp theo employeeNumber.

DELETE FROM customers
ORDER BY employeeNumber
LIMIT 20;

Rất đơn giản phải không các bạn?

Như vậy là mình đã hướng dẫn xong cách sử dụng lệnh Delete trong SQL Server. Đây là lệnh khá là quan trọng, bởi nó được sử dụng ở hầu hết các ứng dụng để đưa vào tính năng xóa dữ liệu.

Ngẫu nhiên