【SQL】delete 与 truncate 命令的区别
2024-01-07 17:15:04
区别
truncate | delete |
---|---|
属于 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 命令前,都要考虑数据的备份
参考
文章来源:https://blog.csdn.net/weixin_37646636/article/details/135433261
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!