Oracle 删除表定义

Oracle  删除表定义
Oracle  删除表定义

Oracle 删除表定义

当不再需要某个表时,就可以删除该表的定义。需要注意,一般情况下用户只能删除自己模式中的表,如果用户要删除其他模式中的表,则用户必须具有DROP ANY TABLE系统权限。删除表所使用的DROP TABLE语句如下:

SQL> drop table employees;

表已删除。

删除表定义与删除表中所有数据不同,当用户使用DELETE语句进行删除操作时,删除的仅是表中的数据,该表仍然存在数据库中;DROP TABLE语句在删除表定义时,不仅表中的数据将丢失,而且该表的定义信息也将从数据库中删除,用户也就不再可以向该表添加数据。

在删除一个表定义时,Oracle将执行如下的一系列操作:

●删除表中所有的记录。

●从数据字典中删除该表的定义。

●删除与该表相关的所有索引和触发器。

●回收为该表分配的存储空间。

●如果有视图或PL/SQL过程依赖于该表,这些视图或PL/SQL过程将被置于不可用

状态。

在DROP TABLE语句有一个惟一的可选子句CASCADE CONSTRAINTS。当使用该参数时,DROP TABLE不仅仅删除该表,而且所有引用这个表的视图、约束或触发器等也都被删除。

SQL>drop table employees cascade constraints;

一般情况下,当用户删除了一个表定义后,数据库并不会马上释放该表占用的空间,而是将它重命名,然后放到了回收站中。这样当用户需要还原该表时,就可以使用FLASHBACK TABLE语句进行还原。如果想在删除表定义时立即释放空间,则可以在DROP TABLE语句中使用PURGE选项。

例如,下面的实例将演示如何利用Oracle 11g的闪回功能,快速恢复被删除的表EMPOYEES:

(1)首先确认EMPLOYEES表是否已经被删除。

SQL> select * from employees;

select * from employees

*

第 1 行出现错误:

ORA-00942: 表或视图不存在

(2)从查询结果中可以看出该表已经被删除。可以查询数据字典视图RECYCLEBIN,以了解在回收站中存放的被删除的表。

SQL> select object_name,original_name

2 from recyclebin

3 where original_name='EMPLOYEES';

OBJECT_NAME ORIGINAL_NAME

相关主题
相关文档
最新文档