Thứ Hai, 24 tháng 7, 2023

Xóa bảng với lệnh Drop Table trong SQL Server

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
DROP TABLE [IF EXISTS]  [database_name.][schema_name.]table_name;

Trong đó:

  • IF EXISTS có 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_name là 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_name là tên schema, có thể dùng hoặc không, nếu không thì sẽ là schema mặc định dbo.
  • table_name là 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
DROP TABLE [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
DROP TABLE IF 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
CREATE TABLE sales.delivery (
    delivery_id INT PRIMARY KEY,
    delivery_note VARCHAR (255) NOT NULL,
    delivery_date DATE NOT NULL
);

Mình sẽ xóa table này bằng lệnh sau:

1
DROP TABLE sales.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
CREATE SCHEMA procurment;
GO
  
CREATE TABLE procurment.supplier_groups (
    group_id INT IDENTITY PRIMARY KEY,
    group_name VARCHAR (50) NOT NULL
);
  
CREATE TABLE procurment.suppliers (
    supplier_id INT IDENTITY PRIMARY KEY,
    supplier_name VARCHAR (50) NOT NULL,
    group_id INT NOT NULL,
    CONSTRAINT fk_name FOREIGN KEY (group_id)
    REFERENCES procurement.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
ALTER TABLE Orders
DROP CONSTRAINT fk_name;
 
DROP TABLE procurement.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
DROP TABLE procurement.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

ĐỌC NHIỀU

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