首頁 > 軟體

MySql中刪除資料表的方法詳解

2022-08-09 14:03:40

定義:

  刪除資料表就是將資料庫中已經存在的表從資料庫中刪除。注意,在刪除表的同時,表的定義和表中所有的資料均會被刪除。因此,在進行刪除操作前,最好對錶中的資料做一個備份,以免造成無法挽回的後果。本節將詳細講解資料庫表的刪除方法。

1 刪除一個或多個沒有被其他表關聯的資料表

如果一個資料表沒有和其它表存在關聯關係,即刪除它自己對其它表沒有影響的話,可以藉助DROP TABLE 。語法格式:

DROP TABLE [IF EXSITS] 表1 ,表2,...,表n ;

 解釋:表n”指要刪除的表的名稱,後面可以同時刪除多個表,只需將要刪除的表名依次寫在後面,相互之間用逗號隔開即可。如果要刪除的資料表不存在,則MySQL會提示一條錯誤資訊,“ERROR 1051 (42S02): Unknown table '表名'”。引數“IF EXISTS”用於在刪除前判斷刪除的表是否存在,加上該引數後,再刪除表的時候,如果表不存在,SQL語句可以順利執行,但是會發出警告(warning)

案例1:

1.1 新建一張表

CREATE TABLE tb_school (

id INT(10) PRIMARY KEY,
name VARCHAR(11)
)

1.2 執行刪除命令

DROP TABLE IF EXISTS tb_school;

1.3 結果檢查

刪除前:

刪除後:

從執行結果可以看到,資料表列表中已經不存在名稱為tb_school的表,刪除操作成功。

2 刪除被其他表關聯的主表

在資料表之間存在外來鍵關聯的情況下,如果直接刪除父表,結果會顯示失敗,原因是直接刪除將破壞表的參照完整性。如果必須要刪除,可以先刪除與它關聯的子表,再刪除父表,只是這樣就同時刪除了兩個表中的資料。有的情況下可能要保留子表,這時若要單獨刪除父表,只需將關聯的表的外來鍵約束條件取消,然後就可以刪除父表了。

案例2 

2.1 建立兩張具有關聯關係的表

CREATE TABLE tb_school ( id INT ( 11 ) PRIMARY KEY, name VARCHAR ( 22 ) );

CREATE TABLE tb_classroom (
id  INT(11) PRIMARY KEY,
schoolId INT(11),

CONSTRAINT fk_emp_school FOREIGN KEY(schoolId) REFERENCES tb_school(id)
)

可以看到,以上執行結果建立了兩個關聯表tb_school和表tb_classroom。其中,tb_classroom表為子表,具有名稱為fk_emp_school的外來鍵約束;tb_school為父表,其主鍵id被子表tb_classroom所關聯。

2.2 執行刪除DROP TABLE命令

執行結果顯示無法刪除,原因是存在外來鍵 關聯關係。這種情況下,有兩種處理方法:

一: 先刪除子表 tb_classroom ,再刪除 父表tb_school,可參考 1 方法,這裡不再贅述

二:取消表之前外來鍵關係,再執行刪除。

2.3 取消外來鍵關係,再刪除。

ALTER TABLE tb_classroom DROP FOREIGN KEY fk_emp_school

結果執行成功後,再執行刪除命令,顯示刪除成功。


IT145.com E-mail:sddin#qq.com