《Oracle SQL疑难解析》——1.10 删除表中的所有行

    xiaoxiao2024-01-19  175

    本节书摘来自异步社区出版社《Oracle SQL疑难解析》一书中的第1章,第1.10节,作者: 【美】Grant Allen , Bob Bryla , Darl Kuhn,更多章节内容可以访问云栖社区“异步社区”公众号查看。

    1.10 删除表中的所有行

    Oracle SQL疑难解析

    1.10.1 要解决的问题

    从指定的表中删除所有数据。

    1.10.2 解决方法

    如果用DELETE语句来删除所有行,则Oracle会完整地把删除行为记入日志,以便如果是误操作,我们还有机会将数据回滚。但正是因为要记日志,所以需要花一定的时间,有时达不到我们希望的速度。

    作为补充,Oracle提供了一个TRUNCATE(截断)语句来删除表中的所有数据。可以用下面的语句来截断HR.EMPLOYEES表:

    truncate table hr.employees;

    1.10.3 数据库如何工作

    TRUNCATE语句不带WHERE子句或其他限制条件。TRUNCATE语句的处理是按DDL(Data Definition Language,数据定义语言)的方式,因此同时也隐含了数据库的一些操作,如隐式地提交其他open事务。第9章有关于事务控制和监控更详细的讲解。

    TRUNCATE命令也将重置表的高水位标志(high-water mark),当Oracle进行优化分析时需要统计表的已使用容量,重置高水位标志意味着Oracle认为表从未有过数据,也没占据过空间。

    相关资源:敏捷开发V1.0.pptx
    最新回复(0)