【MySQL】删除数据表

151 阅读3分钟

本人已参与「新人创作礼」活动,一起开启掘金创作之路。

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天,点击查看活动详情

目录

2CD5C3DC.jpg 今天阿文介绍的内容为:

  • 如何删除数据表?
  • 如何删除与其他表关联的数据表?

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数据库存在的数据表:

image.png

删除后db1数据库存在的数据表:

image.png

可以看到account数据表已经被删除了。如果此时执行一下以下SQL语句:

DROP TABLE account;

image.png

可以看到是提示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表的结构:

image.png

删除外键后student表的结构:

image.png

可以看到已经将外键删除了,接下来只需要删除主表teacher。

接下来再将原来的父表teacher删除,SQL语句如下:

DROP TABLE teacher;

删除前db1数据库存在的数据表:

image.png

删除后db1数据库存在的数据表:

image.png

可以看到teacher表已经删除了。

总结

  • 删除数据表之前需确认数据表是否存在
  • 删除有关联的数据表,需先将关联的键删除,才能删除

好了,今天阿文就介绍到这。

2CD5E7B0.gif