MySql中刪除數(shù)據(jù)表的方法詳解
定義:
刪除數(shù)據(jù)表就是將數(shù)據(jù)庫(kù)中已經(jīng)存在的表從數(shù)據(jù)庫(kù)中刪除。注意,在刪除表的同時(shí),表的定義和表中所有的數(shù)據(jù)均會(huì)被刪除。因此,在進(jìn)行刪除操作前,最好對(duì)表中的數(shù)據(jù)做一個(gè)備份,以免造成無(wú)法挽回的后果。本節(jié)將詳細(xì)講解數(shù)據(jù)庫(kù)表的刪除方法。
1 刪除一個(gè)或多個(gè)沒(méi)有被其他表關(guān)聯(lián)的數(shù)據(jù)表
如果一個(gè)數(shù)據(jù)表沒(méi)有和其它表存在關(guān)聯(lián)關(guān)系,即刪除它自己對(duì)其它表沒(méi)有影響的話,可以借助DROP TABLE 。語(yǔ)法格式:
DROP TABLE [IF EXSITS] 表1 ,表2,...,表n ;
解釋:表n”指要?jiǎng)h除的表的名稱,后面可以同時(shí)刪除多個(gè)表,只需將要?jiǎng)h除的表名依次寫(xiě)在后面,相互之間用逗號(hào)隔開(kāi)即可。如果要?jiǎng)h除的數(shù)據(jù)表不存在,則MySQL會(huì)提示一條錯(cuò)誤信息,“ERROR 1051 (42S02): Unknown table '表名'”。參數(shù)“IF EXISTS”用于在刪除前判斷刪除的表是否存在,加上該參數(shù)后,再刪除表的時(shí)候,如果表不存在,SQL語(yǔ)句可以順利執(zhí)行,但是會(huì)發(fā)出警告(warning)
案例1:
1.1 新建一張表
CREATE TABLE tb_school ( id INT(10) PRIMARY KEY, name VARCHAR(11) )
1.2 執(zhí)行刪除命令
DROP TABLE IF EXISTS tb_school;
1.3 結(jié)果檢查
刪除前:

刪除后:

從執(zhí)行結(jié)果可以看到,數(shù)據(jù)表列表中已經(jīng)不存在名稱為tb_school的表,刪除操作成功。
2 刪除被其他表關(guān)聯(lián)的主表
在數(shù)據(jù)表之間存在外鍵關(guān)聯(lián)的情況下,如果直接刪除父表,結(jié)果會(huì)顯示失敗,原因是直接刪除將破壞表的參照完整性。如果必須要?jiǎng)h除,可以先刪除與它關(guān)聯(lián)的子表,再刪除父表,只是這樣就同時(shí)刪除了兩個(gè)表中的數(shù)據(jù)。有的情況下可能要保留子表,這時(shí)若要單獨(dú)刪除父表,只需將關(guān)聯(lián)的表的外鍵約束條件取消,然后就可以刪除父表了。
案例2
2.1 創(chuàng)建兩張具有關(guān)聯(lián)關(guān)系的表
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) )

可以看到,以上執(zhí)行結(jié)果創(chuàng)建了兩個(gè)關(guān)聯(lián)表tb_school和表tb_classroom。其中,tb_classroom表為子表,具有名稱為fk_emp_school的外鍵約束;tb_school為父表,其主鍵id被子表tb_classroom所關(guān)聯(lián)。
2.2 執(zhí)行刪除DROP TABLE命令

執(zhí)行結(jié)果顯示無(wú)法刪除,原因是存在外鍵 關(guān)聯(lián)關(guān)系。這種情況下,有兩種處理方法:
一: 先刪除子表 tb_classroom ,再刪除 父表tb_school,可參考 1 方法,這里不再贅述
二:取消表之前外鍵關(guān)系,再執(zhí)行刪除。
2.3 取消外鍵關(guān)系,再刪除。
ALTER TABLE tb_classroom DROP FOREIGN KEY fk_emp_school

結(jié)果執(zhí)行成功后,再執(zhí)行刪除命令,顯示刪除成功。

相關(guān)文章
MySQL ClickHouse不同于SQL的語(yǔ)法介紹
CloudCanal 近期實(shí)現(xiàn)了 MySQL(RDS) 到 ClickHouse 實(shí)時(shí)同步的能力,功能包含全量數(shù)據(jù)遷移、增量數(shù)據(jù)遷移、結(jié)構(gòu)遷移能力,以及附帶的監(jiān)控、告警、HA等能力2022-11-11
簡(jiǎn)單講解MySQL的數(shù)據(jù)庫(kù)復(fù)制方法
這篇文章主要介紹了簡(jiǎn)單講解MySQL的數(shù)據(jù)庫(kù)復(fù)制方法,利用到了常見(jiàn)的mysqldump工具,需要的朋友可以參考下2015-11-11
Mysql遷移DM國(guó)產(chǎn)達(dá)夢(mèng)數(shù)據(jù)庫(kù)完整步驟記錄
最近工作中用到國(guó)產(chǎn)數(shù)據(jù)庫(kù)達(dá)夢(mèng),簡(jiǎn)稱DM,下面這篇文章主要給大家介紹了關(guān)于Mysql遷移DM國(guó)產(chǎn)達(dá)夢(mèng)數(shù)據(jù)庫(kù)完整步驟的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07
如何解決mysql的count()函數(shù)條件表達(dá)式不生效問(wèn)題
該文章總結(jié)了SQL查詢中`count`函數(shù)統(tǒng)計(jì)錯(cuò)誤的原因,以及三種解決方法:使用`ornull`方法、`IF()`函數(shù)和`casewhen`表達(dá)式,當(dāng)不滿足條件時(shí),表達(dá)式的值為NULL2024-11-11
MySQL中的數(shù)據(jù)加密解密安全技術(shù)教程
在數(shù)據(jù)庫(kù)應(yīng)用程序中,數(shù)據(jù)的安全性是至關(guān)重要的,MySQL作為一種常用的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),也提供了一些數(shù)據(jù)加密和解密的技巧來(lái)保護(hù)敏感數(shù)據(jù)的安全性,為了保護(hù)敏感數(shù)據(jù)免受未經(jīng)授權(quán)的訪問(wèn),我們可以使用加密和解密技術(shù)2024-01-01
MHA實(shí)現(xiàn)mysql主從數(shù)據(jù)庫(kù)手動(dòng)切換的方法
這篇文章主要介紹了MHA實(shí)現(xiàn)mysql主從數(shù)據(jù)庫(kù)手動(dòng)切換的方法,詳細(xì)的講述了主從數(shù)據(jù)庫(kù)切換的步驟與方法,非常實(shí)用,需要的朋友可以參考下2014-10-10

