千家信息网

drop、truncate、delete之间的区别是什么

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍"drop、truncate、delete之间的区别是什么",在日常操作中,相信很多人在drop、truncate、delete之间的区别是什么问题上存在疑惑,小编查阅了各式资料,整理
千家信息网最后更新 2026年10月31日drop、truncate、delete之间的区别是什么

这篇文章主要介绍"drop、truncate、delete之间的区别是什么",在日常操作中,相信很多人在drop、truncate、delete之间的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"drop、truncate、delete之间的区别是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1.drop与truncate与delete功能与特点

01.Drop的特点
Drop table除了在数据库层面删除表,还会在系统层面删除xxx.ibd,xxx.frm(InnoDB表)或 xxx.MYD,xxx.MYI,xxx.frm (MyISAM)等文件;
drop table if exists table_name可以防止表不存在的报错,但是会有一个warning;
drop table也会隐式提交,除了临时表;

02.Truncate的特点
•逻辑上truncate table和delete from table_name;相似,但是过程是先drop table,然后在re-create table,如果要清空一个大表的所有数据行,truncate比delete高效;
•Truncate是一个DDL操作,一旦执行会隐式提交,这就说明truncate无法rollback,所以执行之前需谨慎
•如果表被锁住,truncate会报错;
•如果有外键约束,truncate也会报错;
•对于InnoDB/MyISAM表的auto_increment的列,truncate table之后可以重新使用序列值;
•truncate table无法触发delete相关的触发器;

03.Delete的特点
Delete是DML操作,如果没有提交,可以rollback;
对于InnoDB/MyISAM表的auto_increment的列,delete table之后可以无法重新使用序列值,但是重启之后可以重新使用序列;
Delete from table_name后面一定要跟where条件,否则会删除表的所有行;

总结:
01.执行效率:drop > truncate > delete
02.在使用drop和truncate时一定要注意,虽然可以恢复,但为了减少麻烦,还是要慎重。
03.如果想删除部分数据用delete,注意带上where子句,回滚段要足够大;如果想删除表,当然用drop;如果想保留表而将所有数据删除,如果和事务无关,用truncate即可;如果和事务有关,或者想触发trigger,还是用delete;如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。

2.truncate与delete区别

在mysql和oracle数据库中delete与truncate都是可以用来对数据进行删除操作,但是二者又有些不同。
风哥为大家介绍以下几个区别:

01.truncate与delete区别一:
根据sql语言分类来说,delete属于DML语言,也就是数据操作语言,而truncate属于DDL语言,也就是数据定义语言。

02.truncate与delete区别二:
delete不仅可以删除表中的数据,还可以删除基于真实表创建的视图中的数据。truncate则只能删除表中的数据,不能作用于视图。

03.truncate与delete区别三:
由于delete删除数据涉及到事务处理,会涉及到缓存,当数据非常大时,有可能缓存不够用,所以这时使用delete删除数据可能达不到删除到的目的,而且速度特别慢。当涉及到大批量的数据时,truncate就非常适合,因为他不涉及到缓存,所以速度特别快,效率也高。

04.truncate与delete区别四:
在数据库删除数据时,delete可以根据需要进行删除,也就是delete可以结合where条件进行精确的删除某一条数据,而truncate则不能支持where子句,如果作用于表,则是直接删除表所有数据。

05.truncate与delete区别五:
delete删除表时,会涉及到事务处理,也就是可以支持事务提交,回滚。所谓事务就是支持数据一致性,原子性,持久性,隔离性。当使用delete删除表数据时,首先它不会真正删除,而是会将删除的数据放入一个缓存区,可以通过回滚,从而恢复数据。但是使用truncate删除表中数据时,truncate不涉及事务处理,所以被truncate删除的数据是不可恢复的。

06.truncate与delete区别六:
在对于一些存在关联关系的表,使用delete删除数据时,可以运用sql的业务逻辑顺序来进行达到删除数据的目的。例如表A与表B存在一对多的关系,表A中id为主键,并且id在表B中是作为表B的外键。要删除数据,这时不能直接删除表B,而应该先删除表A在进行删除表B,这样就达到目的。而truncate不能删除对于由外键约束的表,它达不到删除该表的目的。

07.truncate与delete区别七:
有时候对数据操作可能涉及到触发器,用delete删除数据时则有可能会激活触发器,进行一些操作。而truncate是不存在触发器的处理的。

到此,关于"drop、truncate、delete之间的区别是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

数据 事务 语言 之间 也就是 特点 目的 触发器 处理 学习 序列 数据库 缓存 支持 作用 子句 层面 效率 更多 条件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技产业 平安科技 互联网 狮子座互联网科技 互联网科技英文 万易互联网科技有限公司 远信互联网科技 长亮科技互联网金融 济南和联互联网科技有限公司 江苏南京365互联网科技 承德科技产业互联网发展 中化能源互联网科技招聘 来此购互联网科技有限公司 移动互联网科技公司 速维有品互联网信息科技(苏州)有限公司 小米互联网科技园入驻 世界互联网科技成果奖 互联网科技的前景 华人运通互联网科技公司 安徽九吞吴互联网科技有限公司 瑞安市蟠桃会互联网科技有限公司 朗新科技与工业互联网 与互联网科技公司 深圳艾佳互联网科技 深圳卡尔迅互联网科技有限公司怎么样 和信科技工业互联网 玉溪新华互联网科技好不好 上海创道互联网络科技有限公司 新氧科技和美国互联网有关系吗 银川新华互联网科技学校原画 恒生科技指数 中概互联网
0