在mysql中delete和truncated的相同点和区别点

相同点

  1. 删除数据:两者都会删除表中的数据。
  2. 影响数据:两者都不删除表结构,只影响表中的数据。

区别点

操作方式

  1. DELETE:逐行删除数据,可以使用 WHERE 子句来指定删除的条件。如果不加 WHERE 子句,则删除整个表的数据。
  2. TRUNCATE:直接删除整个表的数据,不能使用 WHERE 子句。

性能

  1. DELETE:每次删除一行,会记录每一行的删除操作,速度较慢,适合小规模删
  2. TRUNCATE:删除整个表的数据,不逐行记录删除操作,速度较快,适合大规模删除。

事务处理

  1. DELETE:支持事务,可以回滚。删除操作会记录在日志中,因此可以撤销。
  2. TRUNCATE:不支持事务,不可回滚。操作直接生效,不能撤销。

触发器

  1. DELETE:会触发表上的 DELETE 触发器。
  2. TRUNCATE:不会触发 DELETE 触发器。

自动递增列

  1. DELETE:不会重置 AUTO_INCREMENT 计数器。
  2. TRUNCATE:会重置 AUTO_INCREMENT 计数器。

外键约束

  1. DELETE:当涉及外键约束时,必须遵循外键约束规则。
  2. TRUNCATE:不能在引用的表(即有外键约束的表)上执行。

使用场景

  1. DELETE:当你需要删除部分数据或希望操作可以回滚时,使用 DELETE。
  2. TRUNCATE:当你需要快速清空表并且不需要保留任何删除记录时,使用 TRUNCATE。
相关推荐
其实防守也摸鱼5 分钟前
前端应用的离线暂停更新策略:构建稳定可靠的渐进式部署方案
服务器·前端·数据库·学习·ai·命令行·linux系统
Leighteen22 分钟前
ORDER BY + LIMIT 的坑:为什么加了 `LIMIT` 结果顺序还乱
数据库
一个天蝎座 白勺 程序猿25 分钟前
复盘之我在金仓生产环境踩过的SQL暗坑,和攒了六年的编码规矩
数据库·sql·kingbasees
Mico1842 分钟前
MySQL 8.0.35 GTID + 延迟复制 + 过滤复制搭建
mysql·dba
Dylan的码园42 分钟前
从Excel到数据库:数据分析全流程与Kettle ETL实战指南
数据库·数据分析·excel
l1t44 分钟前
DeepSeek总结的DuckLake 架构深度剖析-1
数据库·架构
花生了什么事o44 分钟前
分布式 ID 生成方案:从数据库自增到雪花算法
数据库·分布式·算法
纪伊路上盛名在1 小时前
NVML ERROR_ RM has detected an NVML_RM version mismatch
linux·数据库·gpu·驱动
nVisual1 小时前
01-环境监控集成方案
运维·服务器·开发语言·网络·数据库·数据中心布线·综合布线管理软件