- MySQL 8從零開始學(視頻教學版)
- 胡同夫
- 980字
- 2020-03-06 11:33:24
2.6 刪除數據表
刪除數據表就是將數據庫中已經存在的表從數據庫中刪除。注意,在刪除表的同時,表的定義和表中所有的數據均會被刪除。因此,在進行刪除操作前,最好對表中的數據進行備份,以免造成無法挽回的后果。本節將詳細講解數據庫表的刪除方法。
2.6.1 刪除沒有被關聯的表
在MySQL中,使用DROP TABLE可以一次刪除一個或多個沒有被其他表關聯的數據表。語法格式如下:
DROP TABLE [IF EXISTS]表1, 表2, …, 表n;
其中,“表n”指要刪除的表的名稱,后面可以同時刪除多個表,只需將要刪除的表名依次寫在后面,相互之間用逗號隔開即可。若要刪除的數據表不存在,則MySQL會提示一條錯誤信息:“ERROR 1051 (42S02): Unknown table '表名'”。參數IF EXISTS用于在刪除前判斷要刪除的表是否存在,加上該參數后,再刪除表的時候,如果表不存在,SQL語句就可以順利執行,但是會發出警告(Warning)。
在前面的例子中,已經創建了名為tb_dept2的數據表。如果沒有,那么讀者可輸入語句,創建該表,SQL語句如例2.8所示。下面使用刪除語句將該表刪除。
【例2.29】刪除數據表tb_dept2,SQL語句如下:
DROP TABLE IF EXISTS tb_dept2;
語句執行完畢之后,使用SHOW TABLES命令查看當前數據庫中所有的表,SQL語句如下:

執行結果可以看到,數據表列表中已經不存在名稱為tb_dept2的表,刪除操作成功。
2.6.2 刪除被其他表關聯的主表
數據表之間存在外鍵關聯的情況下,如果直接刪除父表,結果就會顯示失敗。原因是直接刪除將破壞表的參照完整性。如果必須要刪除,那么可以先刪除與它關聯的子表,再刪除父表,只是這樣會同時刪除兩個表中的數據。但有的情況下可能要保留子表,這時若要單獨刪除父表,則只需將關聯的表的外鍵約束條件取消,然后就可以刪除父表。下面講解這種方法。
在數據庫中創建兩個關聯表。首先,創建表tb_dept2,SQL語句如下:

接下來,創建表tb_emp,SQL語句如下:

使用SHOW CREATE TABLE命令查看表tb_emp的外鍵約束,結果如下:

可以看到,以上執行結果創建了兩個關聯表tb_dept2和表tb_emp,其中tb_emp表為子表,具有名稱為fk_emp_dept的外鍵約束,tb_dept2為父表,其主鍵id被子表tb_emp所關聯。
【例2.30】刪除被數據表tb_emp關聯的數據表tb_dept2。
首先直接刪除父表tb_dept2,輸入刪除語句如下:

可以看到,如前所述,在存在外鍵約束時,主表不能被直接刪除。
接下來,解除關聯子表tb_emp的外鍵約束,SQL語句如下:
ALTER TABLE tb_emp DROP FOREIGN KEY fk_emp_dept;
語句成功執行后,將取消表tb_emp和表tb_dept2之間的關聯關系。此時,可以輸入刪除語句,將原來的父表tb_dept2刪除,SQL語句如下:
DROP TABLE tb_dept2;
最后通過SHOW TABLES;查看數據表列表,如下所示:

可以看到,數據表列表中已經不存在名稱為tb_dept2的表。
- OpenStack Cloud Computing Cookbook(Third Edition)
- Java入門經典(第6版)
- Manga Studio Ex 5 Cookbook
- 深入實踐Spring Boot
- 數據結構習題精解(C語言實現+微課視頻)
- 前端架構:從入門到微前端
- Big Data Analytics
- Python完全自學教程
- MongoDB,Express,Angular,and Node.js Fundamentals
- QGIS 2 Cookbook
- ActionScript 3.0從入門到精通(視頻實戰版)
- Mastering Concurrency Programming with Java 9(Second Edition)
- Backbone.js Testing
- 視窗軟件設計和開發自動化:可視化D++語言
- Hands-On Dependency Injection in Go