在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。
相关推荐
知行合一。。。3 小时前
RAG--03--Milvus基本用法
数据库·oracle·milvus
TDengine (老段)3 小时前
TDengine 线程模型 — 网络、调度、执行
大数据·数据库·物联网·制造·时序数据库·tdengine·涛思数据
上学的小垃圾4 小时前
01-数据库系统概述
数据库
二进制漫游记5 小时前
FastAPI项目集成 Qdrant向量数据库+阿里云Embedding完整实战(工具封装+业务调用)
数据库·python·阿里云·embedding
2501_928996225 小时前
GPT-4o换DeepSeek迁移成本多少?中科热备解析API聚合平台技术账本
前端·数据库·人工智能
泡干脆面就番茄7 小时前
MySQL_子查询_分页查询与联合查询详解
数据库·mysql
devpotato8 小时前
缓存与数据库更新顺序不一致问题
java·数据库·redis
天若有情6738 小时前
Node+MySQL小型全栈笔记项目实战课程分享
数据库·笔记·mysql
wxwx_bscxy3229 小时前
基于springboot宠物领养系统的设计与实现
数据库·spring boot·后端·spring·宠物
九月要晚安9 小时前
达梦DW与AFC对比
数据库