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

本节书摘来自异步社区出版社《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认为表从未有过数据,也没占据过空间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值