MySQL删除数据(八)上

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL删除数据(八)

MySQL删除数据,是将符合条件的一行或者多行从数据库中进行删除。 但在实际的业务过程中,通常是不能删除数据的,要保留历史,常常会定义一个标识位,如write_status, 1是正常状态, 2是删除状态。 当插入,修改时,write_status的值是1, 当删除时,会将write_status更新成2,来达到删除的目的。 前台展示时,展示不出来, 但是从数据库中查询时,可以查询到。


仍然用的是 yuejl 数据库 里面的 user 表, 并修改 user表中的内容。


20191121105856388.png


一. 删除命令 delete


  delete from 表名 [where 条件];


删除用的是 delete 关键字, 后面一般都要跟条件,如果不跟条件,表示删除数据表里面的所有的内容。


可以简单分为, 删除一条记录 和删除多条记录,和删除有外键的记录三种情况。


二. 删除一条记录


删除一条记录时,通常是用 主键进行指定,这样就可以唯一确定一条记录了,达到只删除一条记录的目的。


二.一 指定主键id删除一条记录


如删除 id=6的 名称叫做 小蝴蝶的数据。


  delete from user where id=6;


20191121105856388.png


二.二 删除时指定的id 不存在


如删除 id=7的数据,然而 表user 中并没有这一条记录。


  delete from user where id=7;


20191121105918138.png


Query OK, 0 rows affected (0.00 sec)


并不会报错,而是执行成功,只是影响的条数是0行。


这一点,与 update 更新时,不存在记录导致的结果一样(具体可以看上一章节update修改单条记录主键不存在的问题)


所以,在删除之前,我们常常验证一下, 该条记录是否还存在于数据库里面, 如果不存在了,则抛出异常,在前台提示用户 ‘该条数据已经被删除,请刷新后再提交’, 如果存在,则才执行数据库的删除语句。


三. 删除多条记录


删除多条记录时, 老蝴蝶把它分成两种情况, 一种是指定的where 条件,可以筛选出多条, 第二种是 不指定条件,全部删除。


三.一 指定的where 条件 可以筛选多条记录


如 指定 id>3 的数据, 有4和5 两条数据。 除了指定主键外,还可以指定其他的列, 如age=24 的记录, 或者 name=‘老蝴蝶的’,也或者 age 在 18到30岁之间的。


这儿用 name=‘老蝴蝶’ 的进行举例验证。


  delete from user where name='老蝴蝶';


20191121105926437.png


删除了两行,还剩下三行数据。


三.二 不指定where 条件,全表删除数据


  delete from user;


20191121105933548.png


发现, user 表里面的数据全部被删除了。


四. 删除有外键的记录


用 以前的 表 u和 dept 表进行验证。 dept表是父表, u表是子表。


20191121105939841.png


四.一 删除父表中的没有被引用的数据


如 部门编号是 3的记录, 里面并没有相应的员工与其进行关联。 看是否能直接删除该部门?


  delete from dept where id=3;


20191121105948693.png


可以直接被删除。



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
关系型数据库 MySQL 数据库
docker MySQL删除数据库时的错误(errno: 39)
docker MySQL删除数据库时的错误(errno: 39)
144 0
|
存储 关系型数据库 MySQL
mysql添加和删除数据库以及数据类型
mysql添加和删除数据库以及数据类型
108 1
|
6月前
|
关系型数据库 MySQL 测试技术
mysql中删除数据的几种方法
在MySQL数据库中,删除数据是一个常见的操作,它允许从表中移除不再需要的数据。在执行删除操作时,需要谨慎,以免误删重要数据。
207 3
|
SQL 关系型数据库 MySQL
MySQL删除数据后磁盘空间的释放总结
MySQL删除数据后磁盘空间的释放总结
673 0
|
4月前
|
存储 关系型数据库 MySQL
MySQL删除数据 文件大小不变的原因以及处理空洞问题
总之,MySQL中删除数据后文件大小不变的现象是由于InnoDB存储引擎的设计决策,旨在优化性能和空间的重用。处理这一问题需要综合考量数据库的使用场景以及可能的性能影响,选择合适的策略
629 5
|
5月前
|
关系型数据库 MySQL 分布式数据库
PolarDB产品使用问题之 MySQL数据库中,执行delete命令删除数据后,存储空间通常不会立即释放,该如何优化
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
123 2
|
5月前
|
SQL 关系型数据库 MySQL
MySQL数据库——图形化界面工具(DataGrip),SQL(2)-DML(插入、修改和删除数据)
MySQL数据库——图形化界面工具(DataGrip),SQL(2)-DML(插入、修改和删除数据)
519 1
|
4月前
|
关系型数据库 MySQL 数据库
mysql,归零,无法自动排序,删除id,表单的数据没有从零开始出现怎样解决?删除数据仍然从删除的地方该怎样解决?表单的数据没有从2开始,而是从之前的删除的序号开始自增。
mysql,归零,无法自动排序,删除id,表单的数据没有从零开始出现怎样解决?删除数据仍然从删除的地方该怎样解决?表单的数据没有从2开始,而是从之前的删除的序号开始自增。
|
6月前
|
SQL 关系型数据库 MySQL
【MySQL-7】DML的表操作详解:添加数据&修改数据&删除数据(可cv例题语句)
【MySQL-7】DML的表操作详解:添加数据&修改数据&删除数据(可cv例题语句)
|
关系型数据库 MySQL 数据库
在MySQL数据库中插入、更新与删除数据
在MySQL数据库中插入、更新与删除数据。
83 2