MySql中删除数据表的方法详解

目录
  • 定义:
  • 1 删除一个或多个没有被其他表关联的数据表
    • 1.1 新建一张表
    • 1.2 执行删除命令
    • 1.3 结果检查
  • 2 删除被其他表关联的主表
    • 2.1 创建两张具有关联关系的表
    • 2.2 执行删除DROP TABLE命令
    • 2.3 取消外键关系,再删除。

定义:

  删除数据表就是将数据库中已经存在的表从数据库中删除。注意,在删除表的同时,表的定义和表中所有的数据均会被删除。因此,在进行删除操作前,最好对表中的数据做一个备份,以免造成无法挽回的后果。本节将详细讲解数据库表的删除方法。

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

结果执行成功后,再执行删除命令,显示删除成功。

(0)

相关推荐

  • MySQL入门(四) 数据表的数据插入、更新、删除

    序言 数据表的插入.更新.删除非常简单,但是简单的也要学习,细节决定成败. ---WH 一.插入数据 格式:INSERT INTO 表名(字段名...)VALUES(值...); 创建环境 使用person表 CREATE TABLE person ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, name CHAR(40) NOT NULL DEFAULT '', age INT NOT NULL DEFAULT 0, info CHAR(50) NULL,

  • Mysql删除数据以及数据表的方法实例

    在Mysql 中删除数据以及数据表非常的容易,但是需要特别小心,因为一旦删除所有数据都会消失. 删除数据 删除表内数据,使用delete关键字. 删除指定条件的数据 删除用户表内id 为1 的用户: delete from User where id = 1; 删除表内所有数据 删除表中的全部数据,表结构不变. 对于 MyISAM 会立刻释放磁盘空间,InnoDB 不会释放磁盘空间. delete from User; 释放磁盘空间 optimize table User; 删除数据表 删除数据

  • 删除mysql数据表如何操作

    MySQL中删除数据表是非常容易操作的, 但是你再进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失. 语法 以下为删除MySQL数据表的通用语法: DROP TABLE table_name ; 在命令提示窗口中删除数据表 在mysql>命令提示窗口中删除数据表SQL语句为 DROP TABLE 方法扩展: 在MySQL中有两种方法可以删除数据,一种是DELETE语句,另一种是TRUNCATE TABLE语句.DELETE语句可以通过WHERE对要删除的记录进行选择.而使用TRUN

  • php中批量删除Mysql中相同前缀的数据表的代码

    方法一: 复制代码 代码如下: <?php mysql_connect('','',''); mysql_select_db(''); $rs=mysql_query('show tables'); while($arr=mysql_fetch_array($rs)){ $TF=strpos($arr[0],'class_'); if($TF===0){ $FT=mysql_query("drop table $arr[0]"); if($FT){ echo "$arr

  • mysql如何删除数据表和关联的数据表删除详情

    目录 前言 一.mysql删除没有被关联的表 二.删除被其他表关联的主表 前言 删除数据表的时候,表的定义和表中所有的数据均会被删除.因此,在进行删除操作前,最好对表中的数据做一个备份,以免造成无法挽回的后果. mysql删除数据表分为两种情况: mysql删除没有关联的表: mysql删除被关联的表: 下面我们就分别来看一下这两种情况: 一.mysql删除没有被关联的表 语法: drop table [if exists] 表1, 表2,...,表n: 可以同时删除多个表,只需要将删除的表名依

  • MySQL创建和删除数据表的命令及语法详解

    创建数据表 创建MySQL数据表需要以下信息: 表名 表字段名 定义每个表字段 语法 以下为创建MySQL数据表的SQL通用语法: CREATE TABLE table_name (column_name column_type); 以下例子中我们将在 TUTORIALS 数据库中创建数据表tutorials_tbl: tutorials_tbl( tutorial_id INT NOT NULL AUTO_INCREMENT, tutorial_title VARCHAR(100) NOT N

  • MySql中删除数据表的方法详解

    目录 定义: 1 删除一个或多个没有被其他表关联的数据表 1.1 新建一张表 1.2 执行删除命令 1.3 结果检查 2 删除被其他表关联的主表 2.1 创建两张具有关联关系的表 2.2 执行删除DROP TABLE命令 2.3 取消外键关系,再删除. 定义:   删除数据表就是将数据库中已经存在的表从数据库中删除.注意,在删除表的同时,表的定义和表中所有的数据均会被删除.因此,在进行删除操作前,最好对表中的数据做一个备份,以免造成无法挽回的后果.本节将详细讲解数据库表的删除方法. 1 删除一个

  • Spring中自定义数据类型转换的方法详解

    目录 类型转换服务 实现Converter接口 实现ConverterFactory接口 实现GenericConverter接口 环境:Spring5.3.12.RELEASE. Spring 3引入了一个core.onvert包,提供一个通用类型转换系统.系统定义了一个SPI来实现类型转换逻辑,以及一个API来在运行时执行类型转换.在Spring容器中,可以使用这个系统作为PropertyEditor实现的替代,将外部化的bean属性值字符串转换为所需的属性类型.还可以在应用程序中需要类型转

  • MYSQL优化之数据表碎片整理详解

    目录 在MySQL中,我们经常会使用VARCHAR.TEXT.BLOB等可变长度的文本数据类型.不过,当我们使用这些数据类型之后,我们就不得不做一些额外的工作——MySQL数据表碎片整理. 那么,为什么在使用这些数据类型之后,我们就要对MySQL定期进行碎片整理呢? 现在,我们先来看一个具体的例子.在这里,我们使用如下SQL语句在MySQL自带的TEST数据库中创建名为DEMO的数据表并插入5条测试数据. --创建DEMO表 CREATE TABLE DEMO( id int unsigned,

  • 关于MySQL中的查询开销查看方法详解

    MySQL逻辑架构 如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器.下图展示了MySQL的逻辑架构图. MySQL逻辑架构,来自:高性能MySQL MySQL逻辑架构整体分为三层,最上层为客户端层,并非MySQL所独有,诸如:连接处理.授权认证.安全等功能均在这一层处理. MySQL大多数核心服务均在中间这一层,包括查询解析.分析.优化.缓存.内置函数(比如:时间.数学.加密等函数).所有的跨存储引擎的功能也在这一层实现:存储过程.触发器.视图等.

  • django连接Mysql中已有数据库的方法详解

    我的Mysql中已经有了项目需要使用的相关数据库,现在需要通过django来获取Mysql里的数据并使用,下面记录配置django与mysql的连接过程. (此处默认您已经建好了django框架,如果没有准备好django,请参照我本篇文章 https://www.jb51.net/article/249861.htm 首先需要在项目的settings.py文件中配置mysql的连接信息:把之前配置的sqlite配置信息替换.之前默认的数据库配置信息如图,是与sqlite连接的 现在我们需要替换

  • Mysql Binlog数据查看的方法详解

    binlog介绍 binlog,即二进制日志,它记录了数据库上的所有改变. 改变数据库的SQL语句执行结束时,将在binlog的末尾写入一条记录,同时通知语句解析器,语句执行完毕. binlog格式 基于语句,无法保证所有语句都在从库执行成功,比如update ... limit 1; 基于行,将每一次改动记为binlog中的一行.在执行一个特别复杂的update或者delete操作时,基于行的格式会有优势. 登录到mysql查看binlog 只查看第一个binlog文件的内容 show bin

  • MySQL学习之数据库表五大约束详解小白篇

    目录 1.约束概念和分类 2.五大约束的添加和删除 2.1添加约束的六种方法 2.2三种删除约束的方式 2.3五大约束分别对应的添加删除方式(序号对应2.1和2.2) 2.4对于创建约束的总结 2.5对于主键和唯一的区别 3.自增长列 3.1概念 3.2在创建表的时候添加主键约束,并且完成主键自增长的例子 3.3自增长的添加和删除 3.4设置自增长步长 1.约束概念和分类 1.1约束的概念: 对表中的数据进行限定,保证数据的正确性,有效性,完整性 1.2约束分类 1.主键约束(primary k

  • MySQL数据库如何给表设置约束详解

    目录 一.PK(主键约束) 1.什么是主键? 2.怎么设置主键? 二.FK(外键约束) 1.什么是外键 2.怎么设置外键 三.unique(唯一约束) 1.什么是唯一约束? 2.如何设置唯一约束 四.notnull(非空) 五.default(默认值) 六.auto_increment(自增) 一.PK(主键约束) 1.什么是主键? 在了解主键之前,先了解一下什么是关键字 关键字:在表中具有唯一性的字段,比如一个人的身份证号,学号.一个表中可以有多个关键字. 主键也叫主关键字,就是由一个或多个关

  • MySQL中replace into与replace区别详解

    目录 0.故事的背景 1.replace into 的使用方法 2.有唯一索引时—replace into & 与replace 效果 3.没有唯一索引时—replace into 与 replace 1).replace函数的具体情况 2).replace into 函数的具体情况 4.replace的用法 本篇为抛砖引玉篇,之前没关注过replace into 与replace 的区别.经过多个场景测试,居然没找到在插入数据的时候两者有什么本质的区别?如果了解详情的伙伴们,请告知留言告知一二

随机推荐