【SQL】delete 与 truncate 命令的区别

本文对比了SQL的delete和truncate命令,讨论了它们在DDL和DML的不同,删除操作的事务处理、效率、是否可撤销,以及在业务场景中的使用策略,强调了备份在数据删除中的重要性。
摘要由CSDN通过智能技术生成

区别

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

写法

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 命令的区别

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值