ITPub博客

首页 > 数据库 > Oracle > 表管理之四:删除数据Delete与truncate的使用区别

表管理之四:删除数据Delete与truncate的使用区别

原创 Oracle 作者:skyin_1603 时间:2016-10-06 23:17:22 0 删除 编辑

本博客详细讲Delete与truncate的使用区别。

SQL> select * from totalnum;

        T1         T2

---------- ----------

         3         12

         4         15

         5         20

        10        100

       100       1000

       500       5000

6 rows selected.

 1、删除一条数据不提交:

SQL> delete from totalnum where t2=5000;

1 row deleted.

1》 删除后查询:

SQL> select * from totalnum;

        T1         T2

---------- ----------

         3         12

         4         15

         5         20

        10        100

       100       1000

 2》回滚:

SQL> rollback;

Rollback complete.

 3》回滚后查询:

SQL> select * from totalnum;

        T1         T2

---------- ----------

         3         12

         4         15

         5         20

        10        100

       100       1000

       500       5000

6 rows selected.

2、全部删除:

SQL> delete from totalnum;

6 rows deleted.

1》 删除后查询

SQL> select * from totalnum;

no rows selected

2》回滚: 

SQL> rollback;

Rollback complete.

 3》回滚后查询:

SQL>  select * from totalnum;

        T1         T2

---------- ----------

         3         12

         4         15

         5         20

        10        100

       100       1000

       500       5000

6 rows selected.

3、删除并提交任务:

SQL> delete from totalnum where t2=5000;

1 row deleted.
1》提交删除任务:

SQL> commit;

Commit complete.

 2》提交后查询:

SQL>  select * from totalnum;

        T1         T2

---------- ----------

         3         12

         4         15

         5         20

        10        100

       100       1000

 3》回滚:

SQL> rollback;

Rollback complete.

 4》回滚后查询:

SQL> select * from totalnum;

        T1         T2

---------- ----------

         3         12

         4         15

         5         20

        10        100

       100       1000


4、Truncate的用法:

SQL> truncate totalnum;

truncate totalnum

                *

ERROR at line 1:

ORA-03290: Invalid truncate command - missing CLUSTER or TABLE keyword

 以上报错,说明语法错误。

SQL> truncate table totalnum;

Table truncated.

1》删除后查询: 

SQL> select * from totalnum;

no rows selected

 2》回滚:

SQL> rollback;

Rollback complete.

 3》回滚后查询:

SQL> select * from totalnum;

no rows selected

以上的一系列测试表明:delete语句删除后的数据会被储存到撤销表空间中,可以进行数据撤销。只有删除后,并提交删除任务
commit操作后,数据不放回撤销表空间。而truncate在删除数据时,在进行删除操作的同时,也进行了commit操作。删除后的数
据不放回撤销表空间,是彻底删除了,而且是整张表的数据删除。delete可以进行选择性删除,所以在进行操作删除的动作之前,
要考虑清楚,应该用哪一个语句进行删除,两个语句各有各的优点与缺点。

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

请登录后发表评论 登录
全部评论

注册时间:2016-09-06

  • 博文量
    231
  • 访问量
    215118