【SQL】delete 与 truncate 命令的区别

区别

truncate delete
属于 DDL(数据定义语言) 范畴 属于 DML(数据操作语言) 范畴
删除表数据,不能删除视图数据 删除表数据,删除视图数据
只可以梭哈删除 通过 where 进行选择性删除
不涉及事务处理 删除表中数据涉及事务处理
效率高、但无法撤销 效率低,涉及事务考虑的就多
不能删除 foreign key 约束引用的表 按照一定的先后顺序可以删除相关表中的数据
是删除表再创建 是逐条删除
重置auto_increment的值 不会重置auto_increment的值
不知道删除了几条 delete知道
当被用于带分区的表时,truncate 会保留分区

写法

sql 复制代码
delete from students where age < 10
delete from students;

truncate table students;

使用场景

1、业务删除数据时、且数据量、性能可控的情况下,可以考虑使用 delete from xxx where 业务条件。

2、需要考虑事务提交、撤销的管理机制时,可以使用 delete

3、当需要删除大批量数据时,同时要求速度快,效率高并且无需撤销时,可以使用 truncate

4、在企业级开发中,实际上都是进行逻辑删除(将数据进行删除标识处理)、而并不进行物理上的删除

5、在实际企业开发、维护过程中,不管使用 delete 还是 truncate 命令前,都要考虑数据的备份

参考

【SQL】delete 与 truncate 命令的区别

相关推荐
chde2Wang2 分钟前
hbase启动报错-keeperErrorCode
大数据·数据库·hbase
清平乐的技术专栏5 分钟前
HBase Shell常用命令
大数据·数据库·hbase
Zhen (Evan) Wang18 分钟前
SQL Server Service Broker启用详解以及常见问题
数据库·sqlserver
马克学长26 分钟前
SSM文创产品推荐系统设计与实现95ml5(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·ssm 框架·高校学生管理数字化·ssm 框架应用·商品分类与信息管理
hzk的学习笔记33 分钟前
Redisson 的 Watchdog 机制
数据库·redis·分布式·缓存
罗光记41 分钟前
夜晚的梦
数据库·其他·百度·新浪微博·segmentfault
韩立学长1 小时前
基于Springboot的智慧管网灌溉系统i1agupa7(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
一 乐1 小时前
高校教务|教务管理|基于springboot+vue的高校教务管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·教务管理
数字冰雹1 小时前
重塑城市公共安全管理的“智慧之眼”
java·大数据·数据库
还是奇怪1 小时前
隐藏在字符编码中的陷阱:深入剖析宽字节注入
数据库·sql·安全·web安全