Trong bài này mình sẽ hướng dẫn bạn cách sử dụng lệnh DROP TABLE để xóa một hoặc nhiều table trong SQL Server.
Đôi khi trong quá trình tạo dữ liệu bạn tạo dư thì có thể sử dụng DROP TABLE để xóa, lệnh này ít khi sử dụng, tuy nhiên bạn nên tìm hiểu vì có nhiều vấn đề liên quan.
Mục lục
- 1. Cú pháp lệnh DROP TABLE
- 2. Các trường hợp thường gặp khi xóa table- Không tồn tại table cần xóa
- Xóa table không có ràng buộc
- Xóa table đang có khóa ngoại trỏ tới
 
1. Cú pháp lệnh DROP TABLE
Trước tiên bạn hãy xem cú pháp sau:
| 1 | DROPTABLE[IF EXISTS]  [database_name.][schema_name.]table_name; | 
Trong đó:
- IF EXISTScó thể dùng hoặc không, nếu có thì sẽ không bị lỗi nếu table cần xóa không tồn tại.
- database_namelà tên database, có thể dùng hoặc không, nếu không thì sẽ xóa table ở database hiện tại.
- schema_namelà tên schema, có thể dùng hoặc không, nếu không thì sẽ là schema mặc định- dbo.
- table_namelà tên table cần xóa
Để xóa nhiều bảng thì chỉ việc ngăn cách tên các table bằng dẩy phẩy.
| 1 2 3 4 | DROPTABLE[database_name.][schema_name.]table_name_1,             [database_name.][schema_name.]table_name_2,                  ...             [database_name.][schema_name.]table_name_n; | 
Lưu ý: Khi xóa table thì SQL Server sẽ xóa toàn bộ dữ liệu, khóa ngoại, trigger, permision liên quan đến table đó. Tuy nhiên với View và Stored Procedure thì bạn phải sử dụng lệnh DROP VIEW và DROP PROCEDURE để xóa.
2. Các trường hợp thường gặp khi xóa table
Bây giờ chúng ta cùng tìm hiểu những trường hợp thường xóa table thường thấy trong thực tế và các lưu ý kèm theo nhé.
Không tồn tại table cần xóa
Ví dụ dưới đây sẽ xóa table revenues nằm trong schema sales.
| 1 | DROPTABLEIF EXISTS sales.revenues; | 
Lệnh này chạy sẽ không bao giờ lỗi vì nó sẽ kiểm tra table cần xóa có tồn tại không, nếu tồn tại thì xóa, không thì trả về kết quả là không xóa table nào cả.
Xóa table không có ràng buộc
Trường hợp này bạn thực hiện bình thường. Giả sử ta có table sau:
| 1 2 3 4 5 | CREATETABLEsales.delivery (    delivery_id INTPRIMARYKEY,    delivery_note VARCHAR(255) NOTNULL,    delivery_date DATENOTNULL); | 
Mình sẽ xóa table này bằng lệnh sau:
| 1 | DROPTABLEsales.delivery; | 
Xóa table đang có khóa ngoại trỏ tới
Trường hợp đang có một table nào đó liên kết khóa ngoại với table cần xóa thì bạn phải xóa khóa ngoại trước rồi mới xóa table.
Giả sử mình có hai table sau:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | CREATESCHEMAprocurment;GO CREATETABLEprocurment.supplier_groups (    group_id INTIDENTITY PRIMARYKEY,    group_name VARCHAR(50) NOTNULL); CREATETABLEprocurment.suppliers (    supplier_id INTIDENTITY PRIMARYKEY,    supplier_name VARCHAR(50) NOTNULL,    group_id INTNOTNULL,    CONSTRAINTfk_name FOREIGNKEY(group_id)     REFERENCESprocurement.supplier_groups (group_id)); | 
Bảng supplier_groups là bảng cha, còn bảng suppliers là bảng con nên khi thực hiện xóa bảng cha ta phải xóa ràng buộc khóa ngoại giữa chúng, còn nếu bạn xóa bảng con thì không cần làm gì cả. Nếu bạn cố tình xóa bảng cha mà không xóa khóa ngoại thì sẽ gặp lỗi như sau:
| 1 2 | Could not drop object 'procurement.supplier_groups' because it is referenced by a FOREIGN KEY constraint. | 
Tóm lại các bước thực hiện như sau:
| 1 2 3 4 | ALTERTABLEOrdersDROPCONSTRAINTfk_name;DROPTABLEprocurement.supplier_groups; | 
Nếu bạn xóa cả hai bảng thì nên đặt bảng con trước bảng cha thì lúc này ta không cần phải xóa ràng buộc khóa ngoại.
| 1 | DROPTABLEprocurement.suppliers, procurement.supplier_groups; | 
Trên là cách sử dụng lệnh DROP TABLE để xóa table ra khỏi database trong SQL Server.
* 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
