mysql如何删除数据表,被关联的数据表如何删除呢

2023-05-16

删除数据表的时候,表的定义和表中所有的数据均会被删除。因此,在进行删除操作前,最好对表中的数据做一个备份,以免造成无法挽回的后果。

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父表,查看整个数据库中也没有了这个数据表。

至此,本文结束。

更多内容请转至VX公众号 “运维家” ,获取最新文章。

------ “运维家” ------
------ “运维家” ------
------ “运维家” ------

系统运维工程师面试,运维工程师优秀员工提名词,tr运维工程师,特来电运维工程师工作日常,IT运维工程师高级;
智能制造运维工程师培训课程,远程办公的运维工程师,迈瑞医疗运维工程师工资待遇,后台运维工程师是做什么的;
风力运维工程师怎样,浪潮云运维工程师,医疗设备运维工程师证书样本,运维工程师男朋友,运维工程师暴躁。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql如何删除数据表,被关联的数据表如何删除呢 的相关文章

随机推荐

  • git怎么合并两个分支

    git怎么合并分支代码 1 git 命令 注意 第一步你得把当前分支合到远程分支去才能有下面的操作 另外我是将develop分支代码合并到release分支去 1 推完代码到远程仓库查看本地分支 如果推错分支代码那么请将分支切到刚刚推送上去
  • 小猫爪:嵌入式小知识11-MPU详解及其应用

    小猫爪 xff1a 嵌入式小知识11 MPU详解及其应用 1 前言2 MPU简介3 MPU相关概念3 1 Memory Map3 2 MPU Region3 3 Region优先级3 4 Background Region3 5 Cache
  • MavSDK&Mavros学习笔记

    MavSDK amp Mavros学习笔记 Introduction MAVSDK Guide mavlink io GitHub mavlink MAVSDK源码 C 43 43 MAVSDK API reference paper Gi
  • Ubuntu realsenseSDK2安装方法

    分为两种 xff0c 这里只是Intel的翻译和个人安装记录总结 详细可以参看Intel realsenseSDK2的github仓库Release Intel RealSense SDK 2 0 v2 51 1 IntelRealSens
  • ROS☞通过两种方法提取.bag中的图像数据

    以下两种环境均在Ubuntu16 04环境下测试成功 第一种方法 ROS 从rosbag中提取图像 xff08 by launch文件 xff09 1 新建launch文件 xff08 文件在哪无所谓 xff0c 可以在catkin ws的
  • Git基础教程(二)

    使用Git删除文件 1 直接删除 可以使用rm命令删除文件 xff0c 如 xff1a rm welcome html 然后查看一下状态 xff1a 然后发现welcome html的状态为deleted xff0c 如果你真的想在git管
  • Git基础教程(三)

    Git分支 在git中使用分支非常简单 xff0c 只需要使用Git branch命令即可 xff1a git branch test 新建test分支 此时使用git branch查看一下分支 xff1a 此时的确多了一个分支 xff0c
  • Git基础教程(四)

    工作做到一半需要临时切换到别的任务 1 先commit当前的进度 简单的做法先保存当前的修改 然后切换到有问题的分级 xff0c 先完成别的功能 xff0c 然后切换回原来做到一半的develop分支 xff0c 执行reset命令 xff
  • jupyter notebook matplotlib绘制动态图并显示在notebook中

    有些时候matplotlib 的绘图没法显示在notebook中 xff0c 或者显示不了 这与backend有关 首先启动你的notebook xff0c 输入 pylab 查看你的matplotlib后端 xff0c 我的输出为 xff
  • 主机连接wifi,如何设置虚拟机上网方式

    主机是windows系统 xff08 win7 xff0c win10 xff09 xff0c 如果使用wifi上网 xff0c 虚拟机如何设置 xff1f xff1f 首先打开主机网络 xff08 如下所示 xff09 xff1a 1 点
  • VS2015断点调试方法

    备注 xff1a 部分图片 xff08 打马赛克的 xff09 转自百度 xff0c 侵删 xff01 果真被和谐了 xff0c 大家还是看这个网页吧 xff1a https jingyan baidu com album e75057f2
  • FreeRTOS 源代码的编程标准与命名约定

    一 编程标准 xff08 Coding Standard xff09 FreeRTOS 源代码遵守 MISRA Motor Industry Software Reliability Association 规范 与 MISRA 标准有出入
  • 特征匹配中OpenCV Dmatch类的用法解析以及非常详细的ORB特征提取与匹配解析

    首先说明一点 xff0c 在SLAM中进行特征提取和匹配时 xff0c 需要注意使用的OpenCV版本 xff0c 在使用OpenCV2 x版本时 xff0c 可以创建特征对象如下所示 xff08 省略了参数表 xff09 xff1a OR
  • 单目视觉里程计的尺度问题的疑问?

    SLAM是个坑 经过一段时间对SLAM的了解 xff0c 原来是我理解有错误 xff0c 得到的尺度已经是统一的 xff0c 只是不知道它的真实尺度是多少 贴一个不错的视觉里程计简介的链接 xff1a https blog csdn net
  • 使用ORB_SLAM2的方式进行特征检测和提取

    比较opencv默认的方式和ORB SLAM2中对opencv进行重写的方式 xff0c 两个方法对图像特征提取结果的对比 为方便比较 xff0c 写在同一个文件中 主函数如下 xff1a include lt iostream gt in
  • 什么是归一化的平面坐标

    所谓的归一化的成像平面 xff0c 就是将三维空间点的坐标都除以Z 所有空间点坐标都转到了相机前单位距离处 xff0c 这个平面就叫归一化的平面 xff0c 之后再乘以焦距 f f f xff0c 让归一化平面回到成像平面 以一张别的博主做
  • 无人机编程实战第1讲——无人机简介

    目录 前言 一 飞控是什么 xff1f 二 扫盲行动 xff01 xff01 xff01 1 微控制器 2 传感器 3 处理 xff1f 4 无人机飞行姿态 总结 前言 随着开源无人机飞行控制器的不断发展 xff0c 越来越多优秀的代码与算
  • 阿里云Serverless kubernetes服务购买体验

    阿里云Serverless kubernetes服务购买体验 Serverless kubernetes是什么优点缺点体验步骤价格ECI的价格 xff1a ECS的价格 阿里云Serverless Kubernetes支持列表总结 Serv
  • python修改xml文件内容,不废话,拿来即用

    XML 被设计用来传输和存储数据 HTML 被设计用来显示数据 XML 指可扩展标记语言 xff08 eXtensible Markup Language xff09 可扩展标记语言 xff08 英语 xff1a Extensible Ma
  • mysql如何删除数据表,被关联的数据表如何删除呢

    删除数据表的时候 xff0c 表的定义和表中所有的数据均会被删除 因此 xff0c 在进行删除操作前 xff0c 最好对表中的数据做一个备份 xff0c 以免造成无法挽回的后果 mysql删除数据表分为两种情况 xff1b mysql删除没