易截截图软件、单文件、免安装、纯绿色、仅160KB

实例对比Oracle中truncate和delete的区别

实例对比Oracle中truncate和delete的区别
删除表中的数据的方法有delete,truncate,
它们都是删除表中的数据,而不能删除表结构,delete 可以删除整个表的数据也可以删除表中某一条或N条满足条件的数据,而truncate只能删除整个表的数据,一般我们把delete 操作收作删除表,而truncate操作叫作截断表.
truncate操作与delete操作对比
操作
回滚
高水线
空间
效率
Truncate
不能
下降
回收

delete
可以
不变
不回收

 
下面分别用实例查看它们的不同
1.回滚
首先要明白两点
1.在oracle 中数据删除后还能回滚是因为它把原始数据放到了undo表空间,
2.DML语句使用undo表空间,DDL语句不使用undo,而delete是DML语句,truncate是DDL语句,别外DDL语句是隐式提交.
所以truncate操用不能回滚,而delete操作可以.
两种操作对比(首先新建一个表,并插入数据)
SQL> create table t
  2  (
  3  i number
  4  );
Table created.
SQL> insert into t values(10);
SQL> commit;
Commit complete.
SQL> select * from t;
         I
----------
        10
Delete删除,然后回滚
SQL> delete from t;
1 row deleted.
SQL> select * from t;
no rows selected
#删除后回滚
SQL> rollback;
Rollback complete.
SQL> select * from t;
         I
----------
        10
Truncate截断表,然后回滚.
SQL> truncate table t;
Table truncated.
SQL> rollback;
Rollback complete.
SQL> select * from t;
no rows selected
可见delete删除表还可以回滚,而truncate截断表就不能回滚了.(前提是delete操作没有提交)
2.高水线
所有的Oracle表都有一个容纳数据的上限(很象一个水库历史最高的水位),我们把这个上限称为“high water mark”或HWM。这个HWM是一个标记(专门有一个数据块用来记录高水标记等),用来说明已经有多少数据块分配给这个表. HWM通常增长的幅度为一次5个数据块.
delete语句不影响表所占用的数据块, 高水线(high watermark)保持原位置不动
truncate 语句缺省情况下空间释放,除非使用reuse storage;   truncate会将高


相关文档:

Oracle多行记录合并/连接/聚合字符串的几种方法

什么是合并多行字符串(连接字符串)呢,例如:
SQL> desc test;
Name     Type          Nullable Default Comments
------- ------------ -------- ------- --------
COUNTRY VARCHAR2(20) Y       &nb ......

Oracle 数据类型分享

给团队内部做的一个Oracle 数据类型分享,主要是关于Oracle数据类型一些内部存储结构及性能介绍。
 http://www.slideshare.net/yzsind/oracle-4317768
以下是PPT中unDumpNumber函数的全部代码:
 
create or replace function unDumpNumber(iDumpStr varchar2) return number is
 
  TYPE ByteAr ......

Oracle审计功能

Oracle审计功能
一、    审计分类:
Oracle中审计总体上可分为“标准审计”和“细粒度审计”后者也称为“基于政策的审计”,在Oracle10G之后功能得到很大增强。其中标准审计可分为用户级审计和系统级审计。用户级审计是任何Oracle用户可设置的审计,主要是用户针对自己创建 ......

浅谈在Hibernate中使用Oracle sequence

一. 为表创建自增长自段有两种,一种是不同的表使用各自的Sequence,方法如下:
    1、在Oracle sequence首先创建sequence       create sequence seq_idminvalue 1start with 1increment by 1cache 20;     2.在你的hbm.xml中的配置    seq ......

Oracle raw 数据类型

    RAW,类似于CHAR,声明方式RAW(L),L为长度,以字节为单位,作为数据库列最大2000,作为变量最大32767字节。
    LONG RAW,类似于LONG,作为数据库列最大存储2G字节的数据,作为变量最大32760字节
 
    插入raw数据操作:
  insert into raw_test values (1, ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号