Thứ Ba, 25 tháng 7, 2023

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.

Mục lục

  • 1. Giới thiệu lệnh Delete trong SQL Server
  • 2. Cách sử dụng Delete trong SQL Server
  • 3. Delete kết hợp Limit trong SQL Server

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:

1
2
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.

1
2
3
4
5
6
7
8
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.

1
2
3
DELETE FROM employees
WHERE
    officeCode = 4;

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

1
2
3
DELETE FROM employees
WHERE
    employeeNumber = 200;

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

1
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:

1
2
DELETE FROM table
LIMIT row_count;

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

1
2
3
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.

1
2
3
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.

1
2
3
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.

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master