摘要:SQL Server 2005 - 如何刪除資料表
為了騰出磁碟空間並開始一個全新的設計,在學習與先期測試過程中所建立的資料表通常逃不過被刪除的命運,但是請注意,將一個資料表刪除,會使其結構定義、資料記錄、全文檢索索引、條件約束、索引與觸發程序一併從資料庫中永久被移除,因此在刪除資料表之前,請三思而後行。
如果您要刪除以 FOREIGN KEY 條件約束所連結的資料表,則必須先刪除擁有 FOREIGN KEY 條件約束的資料表。然而如果您要刪除一個於 FOREIGN KEY 條件約束中所參考到的資料表,但是又不想將擁有 FOREIGN KEY 條件約束的資料表刪除,則必須先刪除 FOREIGN KEY 條件約束。
使用 Management Studio 刪除資料表
欲於 SQL Server Management Studio 中刪除資料表,請依下列步驟進行:
1. 於 SQL Server Management Studio 的「物件總管」中,展開內含您欲刪除之資料表的資料庫,使用滑鼠右鍵按一下該資料表,接著按下Del鍵或是按一下滑鼠右鍵,並從快顯功能表中選取「刪除」指令(如圖表 1 所示)。假如您要一次刪除多個資料表,請於「資料表」的「摘要」視窗中同時選取這些資料表,然後按下 Del 鍵或是按一下滑鼠右鍵並從快顯功能表中選取「刪除」指令(如圖表 2 所示)。
圖表1
圖表2
2. 此時會出現圖表 3 所示的「刪除物件」對話方塊,其中列示著一或多個您於前一個步驟要求要刪除的資料表。親愛的朋友們,您可千萬別衝動而立刻按下「確定」按鈕,或許您希望在刪除某一個資料表前,先檢視資料庫中有哪些資料庫物件會存取或參考此資料表,以及此資料表會存取或參考哪些資料庫物件,以便評估刪除此資料表所造成的影響。欲執行此項檢驗,請先於「刪除物件」對話方塊中選取您欲檢驗的資料表,然後按一下「顯示相依性」按鈕。如圖表 4 所示,「〈資料表名稱〉依存性」對話方塊會詳細列出資料表的相依關係,您可以據此衡量刪除此資料表所造成的影響。完成相依關係的檢視後,按一下「確定」按鈕返回「刪除物件」對話方塊中。
圖表3
圖表4
3. 按下「卸除全部」按鈕,資料表便會被刪除。
附註:
其實任何時候您都可以去檢視資料表與相關資料庫物件的相依關係,而並非只有在刪除它時才可以這樣做。欲檢視資料表與其他資料庫物件的相依關係,請如圖表 5 所示,使用滑鼠右鍵按一下資料表並從快顯功能表中選取「檢視相依性」指令。
圖表5
使用DROP TABLE陳述式刪除資料表
如果您想要以程式控制方式來刪除資料表,請採用語法如下所示的DROP TABLE 陳述式:
DROP TABLE [ database_name . [ schema_name ] .∣schema_name . ]
table_name
[ ,...n ] [ ; ]
很顯然,table_name 引數係指定欲刪除之資料表的名稱,然而table_name、schema_name.table_name 與 database_name.schema_name.table_name 這三種指定資料表名稱的方式有何差別呢?說明如下:
r table_name--僅指定資料表的名稱
如果僅指定資料表的名稱,表示將「作用資料庫」中由 table_name 引數所指定名稱的資料表刪除。此意味著,在以 DROP TABLE 命令刪除一個資料表前,必須先使用 USE 陳述式將此資料表所屬的資料庫設定成作用資料庫。以下面的命令敘述而言,表示先將資料庫 DemoDb 設定成作用資料庫,再將位於其中的資料表 MyTable 刪除:
USE DemoDb;
DROP TABLE MyTable;
r schema_name.table_name--指名資料表的描述結構
諸位看倌請小心,假設您擁有足夠的權限並想要去刪除一個屬於某個結構描述的資料表,則資料表的名稱必須以 schema_name.table_name 的形式來表示,其中 schema_name 代表資料表目前之結構描述的名稱,table_name 則是資料表的名稱。
比方說,假設您想將資料庫 DemoDb 中的資料表 Products 刪除,資料表 Products 目前的結構描述是 Alex。欲達此目的,請執行下列命令敘述:
USE DemoDb;
DROP TABLE Alex.Products;
並非每一個人都可以針對屬於某個結構描述的資料表執行 DROP TABLE 陳述式,只有對資料表擁有 CONTROL 權限,或是 db_ddladmin 固定資料庫角色中的成員,才能夠藉著在 DROP TABLE 陳述式中指名資料表的結構描述來刪除此資料表(亦即以 schema_name.table_name 的形式來指定欲刪除的資料表)。
r database_name.schema_name.table_name--指定資料表的完整名稱
其實 SQL Server 允許您使用 DROP TABLE 陳述式去刪除非作用資料庫中的資料表,也就是說,您不需要先將欲刪除之資料表所屬的資料庫設定成作用資料庫,但是欲達此目的,必須指定資料表的完整名稱---亦即除了資料表的名稱外,還必須指定它所屬資料庫的名稱與結構描述名稱。
比方說,不管目前的作用資料庫是哪一個資料庫,只要執行下列陳述式便能夠直接將資料庫 Trade 中的資料表 Customer 刪除:
DROP TABLE Trade.dbo.Customer;
又例如,下面的陳述式表示直接將資料庫 Trade 中,其結構描述名稱為 Natha 的 Orders 資料表刪除:
DROP TABLE Trade.Natha.Orders;
您可以使用 DROP TABLE 陳述式一次刪除多個資料表,您只需將各個資料表的名稱以逗號(,)分隔即可。
請注意:
DROP TABLE 陳述式無法被用來刪除系統資料表。
實作演練
在以下的實作演練中,我們將實際示範如何使用 DROP TABLE 陳述式來刪除資料表:
1. 假設我們想要將資料庫 DemoDb 中的 Customer、Employee 與 Products 等三個資料表刪除,請執行下列命令:
USE DemoDb;
DROP TABLE Customer, Employee, Products;
2. 假設我們想要將下列的資料表刪除:
Ø 資料庫 DemoDb 中,結構描述名稱為 Alex 的資料表 DemoTable。
Ø 資料庫 TestDb 中,結構描述名稱為 Natha 的資料表 TestTable。
Ø 資料庫 MyDb 中,由 SQL Server 預設給予之結構描述名稱的資料表 MyTable。
欲刪除上述資料表,請執行下列命令敘述:
DROP TABLE DemoDb.Alex.DemoTable,
TestDb.Natha.TestTable,
MyDb.dbo.MyTable;