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 viewstored 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.

SQL ServerĐịnh nghĩa dữ liệu trong SQL Server
Bài Viết Liên Quan:
GUID trong SQL Server
Trung Nguyen 12/03/2022
GUID trong SQL Server

Trong hướng dẫn này, bạn sẽ tìm hiểu về GUID trong SQL Server và cách sử dụng hàm NEWID() để tạo giá trị GUID.

Kiểu dữ liệu DATETIMEOFFSET trong SQL Server
Trung Nguyen 12/03/2022
Kiểu dữ liệu DATETIMEOFFSET trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách sử dụng kiểu dữ liệu DATETIMEOFFSET trong SQL Server để thao tác datetime với múi giờ.

Kiểu dữ liệu TIME trong SQL Server
Trung Nguyen 12/03/2022
Kiểu dữ liệu TIME trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách lưu trữ thời gian trong ngày trong cơ sở dữ liệu bằng cách sử dụng kiểu dữ liệu TIME trong SQL Server.

Kiểu dữ liệu DATE trong SQL Server
Trung Nguyen 12/03/2022
Kiểu dữ liệu DATE trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách sử dụng kiểu dữ liệu DATE trong SQL Server để lưu trữ dữ liệu ngày tháng trong một bảng.