在本教學中,將學習如何使用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 VIEW
和DROP 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_groups
和supplier
:
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修改數據