定義:
??洗掉資料表就是將資料庫中已經存在的表從資料庫中洗掉,注意,在洗掉表的同時,表的定義和表中所有的資料均會被洗掉,因此,在進行洗掉操作前,最好對表中的資料做一個備份,以免造成無法挽回的后果,本節將詳細講解資料庫表的洗掉方法,
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

結果執行成功后,再執行洗掉命令,顯示洗掉成功,

文章連接:https://www.cnblogs.com/xiong97/p/16564428.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/501291.html
標籤:MySQL
