truncate和delete 的区别

SQL> create table t1
  2  ( i int,
  3    a int
  4  );

表已创建。


SQL> insert into t1 values (2,3);

已创建 1 行。

SQL> commit;

提交完成。

SQL> insert into t1 values (3,4);

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * from t1;

         I          A
---------- ----------
         2          3
         3          4

SQL> delete t1;

已删除2行。

SQL> desc t1;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------

 I                                                  NUMBER(38)
 A                                                  NUMBER(38)

SQL> rollback;

回退已完成。

SQL> select * from t1;

         I          A
---------- ----------
         2          3
         3          4

SQL> delete t1 where i=3;

已删除 1 行。

SQL> select * from t1;

         I          A
---------- ----------
         2          3

SQL> rollback;

回退已完成。

SQL> select * from t1;

         I          A
---------- ----------
         2          3
         3          4

SQL> delete t1 where i=3;

已删除 1 行。

SQL> commit;

提交完成。

SQL> select * from t1;

         I          A
---------- ----------
         2          3

SQL> rollback;

回退已完成。

SQL> select * from t1;

         I          A
---------- ----------
         2          3

SQL> select * from t1;

         I          A
---------- ----------
         2          3

SQL> insert into t1 values (3,4);

已创建 1 行。

SQL> select * from t1;

         I          A
---------- ----------
         2          3
         3          4

SQL> truncate t1;
truncate t1
          *
第 1 行出现错误:
ORA-03290: 无效的截断命令 - 缺失 CLUSTER 或 TABLE 关键字


SQL> truncate table t1;

表被截断。

SQL> desc t1;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------

 I                                                  NUMBER(38)
 A                                                  NUMBER(38)

SQL> rollback;

回退已完成。

SQL> select * from t1;

未选定行

实验结果:truncate 是DDL语句,自带隐式commit,不可rollback,而delete 在没有commit的前提下是可以进行回滚的。

truncate 操作与 delete 操作对比
操作
回滚
高水线
空间
效率
Truncate
不能
下降
回收
delete
可以
不变
不回收


 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21416913/viewspace-718635/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/21416913/viewspace-718635/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值