DROP TABLE trong SQL Server

DROP 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 DROP TABLE trong SQL Server để xóa một hoặc nhiều bảng khỏi cơ sở dữ liệu.

Cú pháp lệnh DROP TABLE trong SQL Server

Đôi khi, bạn muốn xóa một bảng không còn được sử dụng nữa. Để làm điều này, bạn sử dụng câu lệnh DROP TABLE như sau:

DROP TABLE [IF EXISTS]  [database_name.][schema_name.]table_name; 

Trong cú pháp này:

  • Đầu tiên, chỉ định tên của bảng sẽ bị xóa.
  • Thứ hai, chỉ định tên của cơ sở dữ liệu mà bảng được tạo và tên của lược đồ chứa bảng đó. Tên cơ sở dữ liệu là tùy chọn. Nếu bạn bỏ qua nó, câu lệnh DROP TABLE sẽ xóa bảng trong cơ sở dữ liệu hiện được kết nối.
  • Thứ ba, sử dụng mệnh đề IF EXISTS để xóa bảng chỉ khi nó tồn tại. Mệnh đề IF EXISTS đã được hỗ trợ từ SQL Server 2016 13.x. Nếu bạn xóa một bảng không tồn tại, bạn sẽ gặp lỗi. Mệnh đề IF EXISTS chỉ xóa bảng nếu nó đã tồn tại.

Khi SQL Server xóa một bảng, nó cũng xóa tất cả dữ liệu, trigger, ràng buộc, quyền của bảng đó. Ngoài ra, SQL Server không xóa view và stored procedure tham chiếu đến bảng bị xóa. Do đó, để xóa các đối tượng phụ thuộc này một cách rõ ràng, bạn phải sử dụng câu lệnh DROP VIEWDROP PROCEDURE.

SQL Server cho phép bạn xóa nhiều bảng cùng một lúc bằng một câu lệnh DROP TABLE như sau:

DROP TABLE [database_name.][schema_name.]table_name_1,
           [schema_name.]table_name_2, …
           [schema_name.]table_name_n;

Ví dụ về lệnh DROP TABLE trong SQL Server

Hãy xem một số ví dụ về việc sử dụng câu lệnh DROP TABLE trong SQL Server.

Xóa một bảng không tồn tại

Câu lệnh sau xóa một bảng có tên revenues trong lược đồ sales:

DROP TABLE IF EXISTS sales.revenues; 

Trong ví dụ này, bảng revenues không tồn tại. Bởi vì nó sử dụng mệnh đề IF EXISTS, câu lệnh thực thi thành công mà không có bảng nào bị xóa.

Xóa một bảng duy nhất

Câu lệnh sau tạo một bảng mới có tên delivery trong lược đồ sales:

CREATE TABLE sales.delivery (
    delivery_id INT PRIMARY KEY,
    delivery_note VARCHAR (255) NOT NULL,
    delivery_date DATE NOT NULL
);

Để xóa bảng delivery, bạn sử dụng câu lệnh sau:

DROP TABLE sales.delivery; 

Xóa bảng có ràng buộc khóa ngoại

Câu lệnh sau tạo hai bảng mới có tên là supplier_groupssuppliers trong lược đồ procurement:

CREATE SCHEMA procurement;
GO

CREATE TABLE procurement.supplier_groups (
    group_id INT IDENTITY PRIMARY KEY,
    group_name VARCHAR (50) NOT NULL
);

CREATE TABLE procurement.suppliers (
    supplier_id INT IDENTITY PRIMARY KEY,
    supplier_name VARCHAR (50) NOT NULL,
    group_id INT NOT NULL,
    FOREIGN KEY (group_id) REFERENCES procurement.supplier_groups (group_id)
);

Hãy thử xóa bảng supplier_groups:

DROP TABLE procurement.supplier_groups; 

SQL Server sẽ đưa ra lỗi sau:

Could not drop object 'procurement.supplier_groups' because it is referenced by a FOREIGN KEY constraint. 

SQL Server không cho phép bạn xóa một bảng được tham chiếu bởi một ràng buộc khóa ngoại. Để xóa bảng này, trước tiên bạn phải xóa ràng buộc khóa ngoại tham chiếu hoặc bảng tham chiếu. Trong trường hợp này, bạn phải xóa ràng buộc khóa ngoại trong bảng suppliers hoặc xóa bảng suppliers trước khi xóa bảng supplier_groups.

DROP TABLE procurement.supplier_groups;
DROP TABLE procurement.suppliers;

Nếu bạn sử dụng một câu lệnh DROP TABLE duy nhất để xóa cả hai bảng, thì bảng tham chiếu phải được liệt kê trước tiên như được trình bày trong truy vấn bên dưới:

DROP TABLE procurement.suppliers, procurement.supplier_groups;

Trong hướng dẫn này, bạn đã học cách sử dụng câu lệnh DROP TABLE trong SQL Server để xóa một hoặc nhiều bảng khỏi cơ sở dữ liệu.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *