y18511664518
作者y18511664518·2017-07-21 16:26
技术总监·长城超云

oracle数据库知识点分享专题一-----truncate和delete区别

字数 797阅读 1384评论 1赞 9

一、知识点简介

Truncate和delete在实际应用中都是使用比较频繁的,他们都是删除表数据的语句,在这里我们整理一下两者之间的区别,以方便大家在应用中选择。

二、知识点内容

1、 语句类型
Truncate属于SQL DDL语言。
Delete属于SQL DML语言。

2、 commit
truncate执行完成自动提交。
Delete执行完成需要手工提交。

3、 回滚
Truncate不能rollback。
Delete可以rollback。

4、 存储空间
Truncate可以释放存储空间。
Delete不能释放存储空间。

5、 高水位
Truncate执行完毕降低高水位。
Delete不能降低高水位。

6、 日志的产生
Truncate执行过程中产生很少的日志。
Delete执行过程中会产生大量的日志。

7、 回退
Truncate执行的时候很少的回退。
Delete执行的时候会有大量的回退。

8、 是否可以加条件
Truncate不能加条件删除数据。
Delete可以加条件删除。

9、 级联删除
不能truncate一个带有enable外键的表,会报错ORA-02266。
可以delete一个带有enable外键的表。

10、 初始大小
Truncate保留建表的初始大小。
Delete保留表的现有大小。

三、实验过程

以上的十条总结是根据官方文档和平时使用过程中的一些经验总结。

四 、权威资料

官方文档

五、总结

Truncate table table_name;和delete table_name;
这两个语句在使用的时候要根据具体的需求来定;
delete也可以释放少量空间,但是不能降低高水位,上边第四项中释放和不释放空间都是相对来说的。
在这里还有一个相关的小知识点,默认情况下oracle10G的空表会分配存储空间,oracle11G的空表不会分配空间。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

9

添加新评论1 条评论

macroseamacrosea项目总监人民医院
2017-08-01 12:26
简单易懂,方便
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广