Oracle-09-删除表(drop和truncate区别、闪回删除等)

一、如果既要删除表中的数据也要删除表的结构,请使用droptable语句,其格式如下:

drop table 表名

 

drop table语句(是DDL语句)有如下特征:

(1)它删除表中所有的数据行和表结构;

(2)它也删除表的所有索引(后续会讲到);

(3)如果没有备份的话,所删除的表无法恢复,Oracle 10g之前版本如果不备份无法恢复,但是Oracle 10g开始提供闪回删除,所以只要不加关键字purge是可以恢复的;

(4)它提交所有的挂起的事物(后续会讲到);

(5)所有基于该表的视图和别名依然保留但已无效;

 

实战操作:

Step1:登录lisi用户,查看当前用户下的表,如下图:


Step2:删除A表,如下图:


如果这时候查询A表,发现报错,提示不存在,如下图:


【技术提升】通过drop删除表时,从Oracle 10g开始,被删除的表放入回收站,称为闪回删除(flashbackdrop),这样可以恢复被删除的表。如果不想将表放入回收站可以增加一个“purge”。

 

drop table的完整语法格式:

drop table 表名 [cascade constraints] [purge]

 

记住:如果两张表之间有外键(约束)关系,那么删除表的时候Oracle要求删除所有具有cascade constrains。

 

实战操作1:

将之前删除的A表恢复(之前删除口令没加purge关键字),如下图:


查看A表,如下图:


 

实战操作2:

继续删除A表,不加关键字purge,不彻底删除,如下图:


注意下图中的命令,该命令是查看回收站内容:


发现A表现在在回收站。

 

【以上几条SQL命令汇总】

(1)SQL > drop table A;————————将表A删除

(2)SQL > select * from cat;——查看当前登录用户存放什么表

(3)SQL > show recyclebin————查看回收站内容

(4)SQL > flashback table A to before drop——将表A从回收站内恢复


对于删除表语法格式drop table 表名 [cascade constraints] [purge]的说明:

其中cascade constraints是级联约束,后面会详细讲到,简单说,级联约束就是若A表和B表之间存在级联约束,那么必须把这个级联约束删除,才能删表。对于purge,如果删表时候加这个单词,那么是彻底删除,不进回收站。

 

二、只要在drop table命令中不加入purge,就可以恢复被删除的表。首先介绍一个数据字典视图user_recyclebin:

实战操作:

Step1:先用select*from user_recyclebin查看被删除的表,如下图:


发现没有,那是因为没删除,现在删除A表,如下图:


Step2:查看被删除的表,如下图:


发现看上去很复杂,现在用命令

select original_name,object_name from user_recycle_bin查看:


其中original_name是原表名(表被删除之前的名字),object_name是该表在回收站里面的名字。

 

三、清空回收站命令(慎用!清空后无法恢复)

purge recyclebin

 

四、截断表

当一个表中数据已经不再需要时,可以使用truncatetable语句将它们全部删除掉(截断),其语法格式如下:

truncate table 表名

 

truncate table有如下特性:

(1)它删除表中所有的数据,但保留表结构;(drop table命令是不保留表结构,简单说,drop是直接把表删除,而truncate是清空表中的数据但是表还在。

(2)如果没有备份的话,删除的数据行无法恢复;

(3)该语句释放表所占用的磁盘空间。

 

实战操作:

Step1:查看A表内容,如下图:


Step2:截断A表,如下图:


Step3:查看A表内容,如下图:


发现里面内容没了,所以truncate table A就是将A表内的数据全部清空,但是A表还在,而之前讲的drop table A是将表彻底删除。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值