簡單介紹mysql如何刪除資料表和關聯的資料表刪除詳情
導讀 | 這篇文章主要介紹了mysql如何刪除資料表和關聯的資料表刪除詳情,刪除資料表的時候,表的定義和表中所有的資料均會被刪除。因此,在進行刪除操作前,最好對錶中的資料做一個備份,以免造成無法挽回的後果 |
刪除資料表的時候,表的定義和表中所有的資料均會被刪除。因此,在進行刪除操作前,最好對錶中的資料做一個備份,以免造成無法挽回的後果。
mysql刪除資料表分為兩種情況;
- mysql刪除沒有關聯的表;
- mysql刪除被關聯的表;
下面我們就分別來看一下這兩種情況;
語法:
drop table [if exists] 表1, 表2,...,表n;
可以同時刪除多個表,只需要將刪除的表名依次寫到後面就行,相互之間用逗號隔開即可。如果刪除的表不存在會報錯。
if exists用於在刪除前判斷被刪除的表是否存在,加上該引數後,再刪除表的時候,如果表不存在,sql不會報錯,可以順利執行下去,但是會發去警告(warning)。
舉個例子:
刪除一個名為test_user_3的資料表;
執行sql語句;
mysql> drop table if exists test_user_3; Query OK, 0 rows affected (0.02 sec) mysql>
然後我們再次檢視的時候,就會發現,這個表已經不見了;
mysql> show tables; +-------------------+ | Tables_in_test_db | +-------------------+ | test_dept | | test_user | | test_user_4 | | test_user_5 | | test_user_6 | | test_user_7 | | test_user_8 | | test_user_9 | | test_user_two | +-------------------+ 9 rows in set (0.00 sec) mysql>
在兩個資料表相互關聯的情況下,如果直接刪除主表,會顯示失敗,原因就是直接刪除主表會破壞表的參照完整性。
如果的確有刪除主表的需求,可以先刪除與它關聯的子表,然後再刪除父表,不過這樣的話就同時刪除了兩個表中的資料。
因為我們有時候是要保留子表,僅僅是想要刪除主表的資料的,那麼我們應該如何處理呢?首先我們取消外來鍵約束條件,然後就可以刪除主表了。
舉個例子:
建立一個臨時資料表,名字為ceshi_1,讓他當做這個關聯關係中的父表,sql語句如下:
mysql> create table ceshi_1 (id INT primary key, name varchar(50), area varchar(50)); Query OK, 0 rows affected (0.04 sec) mysql>
然後我們再建立一個臨時資料表,名字為ceshi_2,讓他當做這個關聯關係中的子表,sql語句如下;
mysql> create table ceshi_2 (id int primary key, name varchar(50), deptid int, constraint yunweijia_ceshi foreign key(deptid) references ceshi_1(id)); Query OK, 0 rows affected (0.05 sec) mysql>
檢視下我們新建的臨時表ceshi_2的外來鍵約束,結果:
mysql> show create table ceshi_2\G; *************************** 1. row *************************** Table: ceshi_2 Create Table: CREATE TABLE `ceshi_2` ( `id` int NOT NULL, `name` varchar(50) DEFAULT NULL, `deptid` int DEFAULT NULL, PRIMARY KEY (`id`), KEY `yunweijia_ceshi` (`deptid`), CONSTRAINT `yunweijia_ceshi` FOREIGN KEY (`deptid`) REFERENCES `ceshi_1` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci 1 row in set (0.00 sec) ERROR: No query specified mysql>
然後我們嘗試刪除這個父表ceshi_1;
mysql> drop table ceshi_1; ERROR 3730 (HY000): Cannot drop table 'ceshi_1' referenced by a foreign key constraint 'yunweijia_ceshi' on table 'ceshi_2'. mysql>
可以看到他報錯了,報錯說的是ceshi_1中有一個外來鍵名為yunweijia_ceshi,在ceshi_2中,所以刪除失敗了。
那麼我們接下來接觸下關聯關係;
mysql> alter table ceshi_2 drop foreign key yunweijia_ceshi; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql>
這個時候我們再次嘗試刪除下ceshi_1這個父表;
mysql> drop table ceshi_1; Query OK, 0 rows affected (0.02 sec) mysql> show tables; +-------------------+ | Tables_in_test_db | +-------------------+ | ceshi_2 | | test_dept | | test_user | | test_user_4 | | test_user_5 | | test_user_6 | | test_user_7 | | test_user_8 | | test_user_9 | | test_user_two | +-------------------+ 10 rows in set (0.00 sec) mysql>
可以看到我們順利的刪除了名為ceshi_1的父表,檢視整個資料庫中也沒有了這個資料表。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2910109/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL刪除資料表MySql
- sql 多表關聯刪除表資料SQL
- 如何刪除資料庫下的所有表(mysql)資料庫MySql
- MySQL超大表刪除資料過程MySql
- mysql 資料插入和更新及刪除詳情FSSHMySql
- mysql 刪除表中重複的資料MySql
- 【北亞資料恢復】誤刪除oracle表和誤刪除oracle表資料的資料恢復方法資料恢復Oracle
- python 刪除大表資料Python
- ORACLE刪除-表分割槽和資料Oracle
- MySQL資料庫表誤刪除恢復(一)MySql資料庫
- MYSQL資料庫表記錄刪除解決方案MySql資料庫
- PostgreSQL刪除表中重複資料SQL
- 刪除a表中和b表相同的資料
- 短影片app程式碼,如何實現聯表資料查詢和刪除?APP
- whk我【資料刪除】你個【資料刪除】的
- 如何高效率刪除大表歷史資料
- MySQL---資料刪除之後表檔案不變MySql
- 【C/C++】資料庫刪除大表C++資料庫
- Oracle中刪除表中的重複資料Oracle
- 刪除資料
- MySQL 5.7的表刪除資料後的磁碟空間釋放MySql
- MySQL如何優雅的刪除大表MySql
- SQL Server表分割槽刪除詳情DSCCSQLServer
- 5、刪除被其它表關聯的主表
- python列表資料如何增加和刪除Python
- 6.12php對資料庫的刪除和批量刪除PHP資料庫
- linux刪除資料夾命令是什麼 linux刪除檔案和目錄命令大全介紹Linux
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- indexedDB 刪除資料Index
- 刪除elasticsearch資料Elasticsearch
- MYSQL下如何安全的快速刪除大表MySql
- mySql刪除多個表 刪除多個欄位的SQLMySql
- oracle級聯刪除使用者,刪除表空間Oracle
- mysql 誤刪除表內資料,透過binlog日誌恢復MySql
- [MYSQL][1]建立,修改,刪除表MySql
- 如何刪除Removable Drives資料夾?REM
- mysql/mariadb學習記錄——建立刪除資料庫、表的基本命令MySql資料庫
- 修改刪除表