MySQL删除数据(八)下

简介: MySQL删除数据(八)

四.二.一 将子表的外键属性更新为null,断开数据关系


还是以 部门编号为2的数据进行演示。 开发部下面有岳泽霖和精小妹,员工编号为 3和5.


1 .将员工3和5的 deptId 更新为 null. 然后查询


  update u set deptId=null where id=3 or id=5;


20191121110002598.png


2 . 再重新删除 id=2的部门数据。


  delete from dept where id=2;


20191121110011625.png


可以正常的删除了。


四.二.二 删除外键关联,断开结构的关系


这个时候,删除 id=1的部门, 还是会报错的,同样是外键关联的错误。


2019112111001756.png


上面断开数据关系,仅仅是断开了 deptId=2的,并没有断开 deptId=1的,所以删除id=1的,同样会报错。


1 . 断开 外键关联。 外键的名称叫做 FK_U_deptId


  alter table u drop foreign key FK_U_deptId;


20191121110024214.png


2 . 重新删除 id=1的部门记录


  delete from dept where id=1;


20191121110029395.png


其中,很容易明白, 四.二.一 只是针对的某些数据进行删除外键,四.二.二 是针对父表中的所有数据,从结构上断开的。


四.二.三 删除子表数据


无论 deptId 是有值的,还是无值的,都是可以直接删除的。 外键关联,是在删除父表时起作用, 在插入子表和修改子表时起作用。 所以,删除子表,是可以直接删除的。


     delete from u where id=3 or id=4;


20191121110613511.png


四.二.四 删除父表时的引用方式


20191121110749418.png


实际上 SQL 有五种方式:


1 . Restrict

2 . No Action

3 . Cascade

4. Set NULL

5. Set Default


MySQL 不支持 set Default , 故只有四种。


其中, Restrict 是默认的方式, 删除和修改时的默认方式。


Restrict : 会检查约束,如果子表中有数据,则不允许删除或者更新。


No Action: 会检查约束,如果子表中有数据,则不允许删除或者更新,与 Restrict 相同。


Cascade: 级联操作。 如果是删除的话,父表可以删除,同时将子表的中数据也删除。 如果是更新的话,父表可以更新,同时将子表 中的外键属性值数据也更新。 (hibernate 常用级别操作)


set null: 父表可以进行删除和更新,同时将 子表中的外键值设置成 null值。


五. Drop, truncate, delete 的区别


删除数据库表中的记录,有三种方式:


1 .drop table 表名


2 . truncate 表名


3 . delete from 表名


三者的侧重点是不一样的,是有很大区别的。 使用者应该根据不同的情况,使用不同的命令执行。


drop 是删除表, 不但会删除表中的数据,而且连表的结构都会删除。


truncate 只会删除表的数据,不会删除表的结构。 是一次性删除数据,相比较于 delete, 效率较高。 会释放空间,自动增长 auto_increment 也会重新开始。


delete 只会删除表的数据,不会删除表的结构。 删除时,是一行一行的删除,相比较于 truncate, 效率低。 不会释放空间, 自动增长 auto_increment 是不会重新开始的。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
关系型数据库 MySQL 数据库
docker MySQL删除数据库时的错误(errno: 39)
docker MySQL删除数据库时的错误(errno: 39)
247 0
|
存储 关系型数据库 MySQL
mysql添加和删除数据库以及数据类型
mysql添加和删除数据库以及数据类型
187 1
|
关系型数据库 MySQL 测试技术
mysql中删除数据的几种方法
在MySQL数据库中,删除数据是一个常见的操作,它允许从表中移除不再需要的数据。在执行删除操作时,需要谨慎,以免误删重要数据。
1161 3
|
SQL 关系型数据库 MySQL
MySQL删除数据后磁盘空间的释放总结
MySQL删除数据后磁盘空间的释放总结
1432 0
|
关系型数据库 MySQL 数据库
在MySQL数据库中插入、更新与删除数据
在MySQL数据库中插入、更新与删除数据。
214 2
|
存储 关系型数据库 MySQL
MySQL删除数据 文件大小不变的原因以及处理空洞问题
总之,MySQL中删除数据后文件大小不变的现象是由于InnoDB存储引擎的设计决策,旨在优化性能和空间的重用。处理这一问题需要综合考量数据库的使用场景以及可能的性能影响,选择合适的策略
1342 6
|
关系型数据库 MySQL 分布式数据库
PolarDB产品使用问题之 MySQL数据库中,执行delete命令删除数据后,存储空间通常不会立即释放,该如何优化
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
426 2
|
SQL 关系型数据库 MySQL
MySQL数据库——图形化界面工具(DataGrip),SQL(2)-DML(插入、修改和删除数据)
MySQL数据库——图形化界面工具(DataGrip),SQL(2)-DML(插入、修改和删除数据)
1438 1
|
SQL 关系型数据库 MySQL
【MySQL-7】DML的表操作详解:添加数据&修改数据&删除数据(可cv例题语句)
【MySQL-7】DML的表操作详解:添加数据&修改数据&删除数据(可cv例题语句)
|
关系型数据库 MySQL 数据库
mysql,归零,无法自动排序,删除id,表单的数据没有从零开始出现怎样解决?删除数据仍然从删除的地方该怎样解决?表单的数据没有从2开始,而是从之前的删除的序号开始自增。
mysql,归零,无法自动排序,删除id,表单的数据没有从零开始出现怎样解决?删除数据仍然从删除的地方该怎样解决?表单的数据没有从2开始,而是从之前的删除的序号开始自增。

推荐镜像

更多