相同点
TRUNCATE TABLE和DELETE都可以删除整个数据库表的记录
不同点
- DELETE
- DML语言
- 可以回退
- 可以有条件的删除
2024年04月26日
相同点
TRUNCATE TABLE和DELETE都可以删除整个数据库表的记录
不同点
2024年04月26日
一:删除内容:
delete是DML语句,可以选择删除部分数据,也可以删除全部数据。
drop是DDL语句,删除表结构及所有数据,同时删除表的结构所依赖的约束,触发器,索引。
truncate也是DDL语句,删除的是表中全部的数据,不能选择删除部分数据,不删除表结构。
2024年04月26日
经常写SQL脚本的朋友,对delete肯定不会陌生,delete主要用来按照预先条件删除表数据;drop用的可能就没那么多,drop直接将表干掉了;truncate则主要用来无条件清除表中的所有数据。
如果我们要删除表中所有数据,那是用delete好呢、还是用truncate好呢?今天我们就把这三个类似的删除语句理一理,探讨下三者应用场景的区别。
2024年04月26日
1、从概念上来讲,它们是不同的,truncate是DDL语句,会隐式提交,所以,不能回滚,不会触发触发器。delete是DML语句,这个操作会被放到 rollback segment中,事务提交后才生效。如果有相应的触发器,执行的时候将被触发。
2、语法结构不同,truncate会删除表中所有数据,delete后面可以跟where进行条件过滤,如果不跟任何条件,也会删除所有数据
2024年04月26日
truncate 和 delete 是 MySQL 中清空表数据的两种方式,平常使用的时候两者好像都差不多,选谁都可以。实际上它们之间是有本质区别的,只有深入理解了它们的差异,在以后的开发中才能根据具体场景运用自如
思考
2024年04月26日
delete
delete语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中以便进行回滚操作
delete操作不会减少表或索引所占用的空间
delete可根据条件删除表中满足条件的数据,如果不指定where子句,那么删除表中所有记录
delete语句为DML(data maintain Language),这个操作会被放到 rollback segment中,事务提交后才生效。如果有相应的 tigger,执行的时候将被触发
2024年04月26日
2种清空数据表方法区别:
truncate table 表名;
delete from 表名;
其中truncate操作中的table可以省略,delete操作中的*可以省略。这两者都是将表中数据清空,不过也是有区别的,如下:
truncate是整体删除(速度较快), delete是逐条删除(速度较慢)。