我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL 删除数据 批量删除(大量)数据

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL 删除数据 批量删除(大量)数据

在删除数据的时候根据不同的场景使用不同的方法,比如说删除表中部分数据、删除表的结构、删除所有记录并重置自增ID、批量删除大量数据等,可以使用delete、truncate、drop等语句。

一、方法分类

插入语句 方法分类

二、具体方法

类型语句
删除全部/部分记录delete from 表名 [where 条件];
删除表的结构和数据drop table [if exists] 表名;
删除所有记录并重置自增IDtruncate [table] 表名;
批量删除delete from 表名 where key in(value1,value2,…,valuen);

三、注意事项

(1)删除全部/部分记录

delete from 表名 [where 条件];

使用delete的注意事项
1、delete是DML语句,可回滚;
2、不加where条件时,delect删除表中所有积累;
3、delete 删除的是表中的内容而不是表,删除后表结构不变;不会重置表的自增值;
4、执行delete后不会减少表或索引所占用的空间;
5、删除效率低。所以多用于删除表中部分记录。

(2)删除表的结构和数据

drop table [if exists] 表名;或者drop table [if exists] 表名;

使用drop的注意事项
1、drop是DDL语句,执行后无法回滚;
2、drop删除表的结构及其所依赖的约束、索引等;
3、执行drop语句后会把表所占用的空间全释放掉。

(3)删除所有记录并重置自增值

truncate [table] 表名;

使用truncate的注意事项
1、执行truncate语句需要拥有drop表的权限,DDL语句,执行后不能回滚;
2、truncate的作用是截断表或者清空表,并且只能作用于表;
3、truncate会清空表中的所有行,但表结构及其约束、索引等保持不变;
4、truncate会重置表的自增值;
5、执行truncate后会使表和索引所占用的空间会恢复到初始大小;
6、删除表中所有记录时truncate比delect执行速度快。
truncate类似于delete删除所有行的语句并重置自增值或drop table然后再create table语句的组合。

(4)批量删除

  • 批量删除少量数据
delete from 表名 where key in(1,...,值n);

先确定需要删除数据的主键或者条件;
2、利用主键删除记录。

  • 分批删除小批量数据
    如果你要删除一个表里面的前 10000 行数据,有以下三种方法可以做到:
1delete from 表名 where 条件 limit 10000;2、在一个连接中循环执行 20delete from 表名 limit 500;3、在 20 个连接中同时执行 delete from 表名 limit 500

三种方法的比较
1、一次占用锁的时间比较长,可能导致其他客户端一致等待资源。
2、分多次占用锁,串行化执行,不占有锁的间隙,其他客户端可以工作。
3、自己制造锁竞争,加剧并发。可能锁住同一记录导致死锁的可能性增大。

注意:
执行大批量删除的时候最好使用limit,否则很有可能造成死锁。
如果delete的where语句不在索引上,可以先找主键,然后根据主键删除数据。

  • 如果需要删除的数据远远大于不用删除的数据

先选择不需要删除的数据,并把它们存在一张相同结构的空表里;
2、再重命名原始表,并给新表命名为原始表的原始表名;
3、然后删掉原始表。

  • 如果需要删除超大批量数据

先删除表中索引;
2、再删除需要删除的数据;
3、然后重新创建索引。

参考文章
Mysql中Truncate用法详解
Mysql批量删除大量数据

来源地址:https://blog.csdn.net/chengyj0505/article/details/128358817

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL 删除数据 批量删除(大量)数据

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL 删除数据 批量删除(大量)数据

在删除数据的时候根据不同的场景使用不同的方法,比如说删除表中部分数据、删除表的结构、删除所有记录并重置自增ID、批量删除大量数据等,可以使用delete、truncate、drop等语句。 一、方法分类 二、具体方法 类型语句删除全部/部
2023-08-30

mysql批量删除数据语句

使用 delete 语句配合 in 子句,指定要删除的行 id 列表,一次性删除多个行。MySQL 批量删除数据语句问题:如何在 MySQL 中批量删除数据?回答:可以使用 DELETE 语句配合 IN 子句一次性删除多个行。详细说明
mysql批量删除数据语句
2024-08-01

mysql怎么批量删除表数据

如果要批量删除表数据,可以使用以下方法:使用DELETE语句批量删除数据:DELETE FROM table_name WHERE condition;在上面的语句中,table_name是要删除数据的表名,condition是删除数据的条
mysql怎么批量删除表数据
2024-04-09

mysql 大表批量删除大量数据的实现方法

问题参考自:https://www.zhihu.com/question/440066129/answer/1685329456 ,mysql中,一张表里有3亿数据,未分表,其中一个字段是企业类型,企业类型是一般企业和个体户,个体户的数据量
2022-05-11

mysql中批量删除数据的方法

mysql中批量删除数据的方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!mysql中批量删除数据的方法:首先找出符合条件的最大id;然后在where字段
2022-11-30

mysql怎么批量删除重复数据

要在MySQL中批量删除重复数据,您可以使用以下步骤:首先,您需要确定要删除的重复数据的列。假设您有一个表名为table_name,有一个列名为column_name,您想要删除column_name列中的重复数据。使用以下查询来查找重复数
mysql怎么批量删除重复数据
2024-04-09

navicat怎么批量删除数据

批量删除数据:编写 sql 删除查询,如 delete from table_name;在 navicat sql 编辑器中执行查询;确认删除操作;验证删除成功,如刷新表视图或运行 select 查询。如何使用 Navicat 批量删除数据
navicat怎么批量删除数据
2024-04-24

redis怎么大批量删除缓存数据

要大批量删除Redis缓存数据,可以使用Redis的DEL命令来删除多个key。以下是一些方法:使用通配符删除:可以使用通配符来匹配多个key,然后一次性删除这些匹配的key。例如,可以使用如下命令来删除所有以"prefix:"开头的key
redis怎么大批量删除缓存数据
2024-04-09

mysql如何批量删除千万条数据

在MySQL中,可以使用DELETE语句结合LIMIT关键字来批量删除大量数据,以避免一次性删除所有数据导致性能问题或造成数据库锁定。例如,要删除一个表中的前1000万条数据,可以使用以下语句:DELETE FROM table_nam
mysql如何批量删除千万条数据
2024-04-09

PHP中怎么批量删除数据

本篇文章为大家展示了PHP中怎么批量删除数据,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先在文章列表页面(list.php),将多选筐命名为:“$del_id[]”,值为文章ID号。 例如(li
2023-06-17

oracle怎么批量删除数据库表

要批量删除数据库表,可以使用Oracle SQL的DROP TABLE命令。以下是一个示例:DROP TABLE table1, table2, table3;这将同时删除名为table1、table2和table3的三个表。要注意的是,
oracle怎么批量删除数据库表
2024-04-09

mysql删除大量数据会不会锁表

MySQL在删除大量数据时会进行锁表操作,这可能会导致其他查询或写操作被阻塞,从而影响数据库的性能和吞吐量。具体来说,MySQL在执行删除操作时,默认会使用表级锁定(LOCK TABLES)来锁定整个表,直到删除操作完成。这意味着其他查询
2023-10-23

编程热搜

目录