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


这篇文章主要介绍“drop、truncate、delete之间的区别是什么”,在日常操作中,相信很多人在drop、truncate、delete之间的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”drop、truncate、dele免费云主机域名te之间的区别是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!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之间的区别是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注百云网站,小编会继续努力为大家带来更多实用的文章!

相关推荐: Oracle 12.2使用手动创建与注册依赖对象来执行联机重定义

下面的例子将使用手动创建与注册依赖对免费云主机域名象的方法来执行联机重定义操作,原始表创建如下: 假设在联机重定义之后列c1变为了c2。在这种情况下,使用copy_table_dependents过程试图对中间表的c1列创建索引t1_idx,因为不存在列c1就…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 01/07 18:11
Next 01/07 18:11