SQL Server刪除表

在本教學中,將學習如何使用SQL Server DROP TABLE語句從資料庫中刪除一個或多個表。

有時,我們希望刪除一些不再使用的表。 那麼可使用以下DROP TABLE語句:

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

在上面語法中,

  • 首先,database_name指定要刪除的表的名稱。
  • 其次,指定創建表的資料庫的名稱以及表所屬的模式的名稱。資料庫名稱是可選的。 如果不指定,DROP TABLE語句將刪除當前資料庫中的表。
  • 第三,使用IF EXISTS子句僅在表存在時才刪除表。 自SQL Server 2016 13.x起,支持IF EXISTS子句。 如果刪除不存在的表,則會出現錯誤。 如果表已經存在,則IF EXISTS子句有條件地刪除該表。

當SQL Server刪除表時,它還會刪除該表的所有數據,觸發器,約束和許可權。 此外,SQL Server不會顯式刪除引用已刪除表的視圖和存儲過程。 要顯式刪除這些對象,必須使用DROP VIEWDROP PROCEDURE語句。

SQL Server允許使用單個DROP TABLE語句來一次刪除多個表,如下所示:

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

SQL Server DROP TABLE示例

下麵來看一些使用SQL Server DROP TABLE語句的示例。

1. 刪除不存在的表

以下語句刪除sales模式中的revenue表:

DROP TABLE IF EXISTS sales.revenues;

在此示例中,revenue表不存在。 因為它使用IF EXISTS子句,所以語句成功執行,但是沒有表可以刪除。

2. 刪除單個表示例

以下語句在sales模式中創建一個名為delivery的新表:

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

要刪除delivery表,請使用以下語句:

DROP TABLE sales.delivery;

3. 刪除具有外鍵約束的表

以下語句在procurement模式中創建兩個新表:supplier_groupssupplier

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,
    FOREIGN KEY (group_id) REFERENCES procurement.supplier_groups (group_id)
);

下麵嘗試刪除supplier_groups表:

DROP TABLE procurement.supplier_groups;

SQL Server發出以下錯誤:

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

SQL Server不允許刪除外部約束引用的表。 要刪除此表,必須先刪除引用外鍵約束或引用表。 在這種情況下,必須先刪除supplier表或supplier表中的外鍵約束,然後再刪除supplier_groups表。

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

如果使用單個DROP TABLE語句刪除兩個表,則必須將引用表放在前面,如下面的查詢所示:

DROP TABLE procurement.suppliers, procurement.supplier_groups;

在本教學中,學習了如何使用SQL Server DROP TABLE語句從資料庫中刪除一個或多個表。


上一篇: SQL Server數據定義 下一篇: SQL Server修改數據