本人已参与「新人创作礼」活动,一起开启掘金创作之路。
持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天,点击查看活动详情
目录
今天阿文介绍的内容为:
- 如何删除数据表?
- 如何删除与其他表关联的数据表?
1.删除数据表
删除数据表就是将数据库中已经存在的表从数据库中删除。注意,在删除表的同时,表的定义和表中所有的数据均会被删除。因此,在进行删除操作前,最好对表中的数据做一个备份,以免造成无法挽回的后果。
1.1删除没有被关联的表
在MySQL中,使用DROP TABLE可以一次删除一个或多个没有被其他表关联的数据表。语法格式如下:
DROP TABLE [IF EXISTS]表1、表2、...表n;
参数说明
- “表n”指要删除的表的名称,后面可以同时删除多个表,只需将要删除的表名依次写在后面,相互之间用逗号隔开即可。
- 如果要删除的数据表不存在,则MySQL会报错。
- “IF EXISTS”用于在删除前判断删除的表是否存在,加上该参数后,再删除表的时候,如果表不存在,SQL语句可以顺利执行,但是会发出警告。
1.1.1 例如删除数据表count
SQL语句如下:
DROP TABLE IF EXISTS count;
删除前db1数据库存在的数据表:
删除后db1数据库存在的数据表:
可以看到account数据表已经被删除了。如果此时执行一下以下SQL语句:
DROP TABLE account;
可以看到是提示Unkown table "db1.account",意思是db1数据库下account表不存在。
1.2删除被其他表关联的主表
在数据表之间存在外键关联的情况下,如果直接删除父表,结果会显示失败,原因是直接删除将破坏表的参照完整性。如果必须要删除,可以先删除与它关联的子表,再删除父表,只是这样就同时删除了两个表中的数据。有的情况下可能要保留子表,这时若要单独删除父表,只需将关联的表的外键约束条件取消,然后就可以删除父表了。
首先创建主表(父表)teacher,SQL语句如下:
CREATE TABLE teacher(
id INT(11) PRIMARY KEY,
name VARCHAR(30) NOT NULL,
age INT(11) NOT NULL
);
接下来创建从表(子表)student,SQL语句如下:
CREATE TABLE student
{
id INT(11) PRIMARY KEY,
name VARCHAR(25),
locatinon VARCHAR(30),
number INT(11),
teacherid INT(11),
CONSTRAINT fk_student_teacher FOREIGN KEY (teacherid) REFERENCES teacher(id)
};
1.2.1删除主表
首先删除关联子表student的外键约束,SQL语句:
ALTER TABLE student DROP FOREIGN KEY fk_student_teacher;
> 实际上这条语句就是删除外键约束语句。
删除外键前student表的结构:
删除外键后student表的结构:
可以看到已经将外键删除了,接下来只需要删除主表teacher。
接下来再将原来的父表teacher删除,SQL语句如下:
DROP TABLE teacher;
删除前db1数据库存在的数据表:
删除后db1数据库存在的数据表:
可以看到teacher表已经删除了。
总结
- 删除数据表之前需确认数据表是否存在
- 删除有关联的数据表,需先将关联的键删除,才能删除
好了,今天阿文就介绍到这。