Difference between TRUNCATE, DELETE and DROP commands

The DELETE command is used to remove the Tables data either selective or all and put the data in an rollback segment as well where from a read consistent view or a flashback view can be seen even after commit and one can rollback the tables data after delete as well. After performing a DELETE operation you need to COMMIT or ROLLBACK the transaction to make the change permanent or to undo it.one more thing delete doesn' resets the HWM and space occupied with insert can't be reclaim by delete.when you deletes table data indexes are not dropped.Its a DML statement。We can use undo space。
hr@ORCL> select * from t;

        ID TEST
---------- ----------
         1 g
         3 d
         5 t

hr@ORCL> commit;

Commit complete.

hr@ORCL> delete from t where id=5;

1 row deleted.

hr@ORCL> select * from t;

        ID TEST
---------- ----------
         1 g
         3 d

hr@ORCL> rollback;

Rollback complete.

hr@ORCL> select * from t;

        ID TEST
---------- ----------
         1 g
         3 d
         5 t

Truncate command removes all the data from table and drops all integrity constraints it's an DDL Statement and resets the HWM but you can't rollback a tables data after truncate, As such, TRUCATE is faster and doesn't use as much undo space as a DELETE.We can not use undo space and one more thing truncate doesn' remove selective rows it can only removes the full tables data.truncate leaves the database structure ad is a good tool to reset HWM.but a dangerous tool for database security.
hr@ORCL> select * from t;

        ID TEST
---------- ----------
         1 g
         3 d
         5 t

hr@ORCL> truncate table t;

Table truncated.

hr@ORCL> select * from t;

no rows selected

hr@ORCL> rollback;

Rollback complete.

hr@ORCL> select * from t;

no rows selected


The drop command means delete the table from the database. The drop command is a data definition language (DDL) command and this is a table oriented command. We can delete all rows and also the table definition, indexes, privileges,triggers and all storage parameters. The rollback is not possible. We can not use undo space。

hr@ORCL> drop table t;

Table dropped.

hr@ORCL> select * from t;
select * from t
              *
ERROR at line 1:
ORA-00942: table or view does not exist


hr@ORCL> rollback;

Rollback complete.

hr@ORCL> select * from t;
select * from t
              *
ERROR at line 1:
ORA-00942: table or view does not exist


In sum,DROP and TRUNCATE are DDL commands, whereas DELETE is a DML command. Therefore DELETE operations can be rolled back (undone), while DROP and TRUNCATE operations cannot be rolled back.From Oracle 10g a table can be "undropped". Example:

hr@ORCL> flashback table t to before drop;

Flashback complete.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值