当我们要删除一张表的时候,就需要使用到drop table命令。
一. drop table 语法
二. 选项说明
1. schema
2.purge
3.cascade constraints
三. 实验
1.cascade constraints选项实验
一. drop table 语法
二. 选项说明
1. schema
可选项,方案,这里可以理解为用户名, 缺省为当前用户下的表。
比如,要删除scott用户下的emp表,
drop table scott.emp
2.purge
可选项,如果开启了回收站(oracle 10g以后,回收站默认是开启的)功能,
不带purge选项,表示删除的表放进回收站,空间不回收 。使用flashbask可以闪回该表。
带purge选项,则表示将表删除,释放空间。
3.cascade constraints
可选项,如果有其它表关联到要删除的表的主键列或唯一键列(要删除的表是主表(父表),从表(子表)有外键关联到这张表),那么,直接用drop table会报错,这时候如果想要强制删除这张表,就需要加上cascade constraints选项
三. 实验
1.cascade constraints选项实验
SQL> drop table t;
drop table t
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> drop table t1;
Table dropped.
SQL> create table t(id number,name varchar2(20));
Table created.
SQL> create table t1(id number,sal number);
Table created.
SQL>
SQL> alter table t add constraint t_pk primary key(id);
Table altered.
--在T表上添加主键
SQL> alter table t1 add constraint t_fk foreign key(id) references t(id);
Table altered.
--在t1表上添加外键,关联到t表的主键列
SQL> insert into t values (1,'Smith');
1 row created.
SQL> insert into t values (2,'John');
1 row created.
SQL> COMMIT;
Commit complete.
SQL> insert into t1 values(1,3000);
1 row created.
SQL> insert into t1 values(2,4000);
1 row created.
SQL> commit;
Commit complete.
SQL> insert into t1 values(3,200);
insert into t1 values(3,200)
*
ERROR at line 1:
ORA-02291: integrity constraint (SCOTT.T_FK) violated - parent key not found
SQL>
SQL> drop table t;
drop table t
*
ERROR at line 1:
ORA-02449: unique/primary keys in table referenced by foreign keys
-- 删除不成功
SQL> drop table t cascade constraints;
Table dropped.
--加上cascade constrants项,删除成功
SQL> select * from t1;
ID SAL
---------- ----------
1 3000
2 4000
SQL> select CONSTRAINT_NAME,TABLE_NAME from dba_constraints where owner='SOTT'and TABLE_NAME='T1';
no rows selected
SQL>
2.purge选项实验
--清空回收站
SQL> Purge recyclebin;
Recyclebin purged.
--建测试表
SQL> create table t(id int,name varchar2(10));
Table created.
--删除表不,加purge选项
SQL> drop table t;
Table dropped.
--删除的表已经放进回收站,只不过改了个表名
SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
T BIN$Nl2YJRjLSyyJ45+XGN7pwA==$0 TABLE 2014-04-04:00:42:10
--闪回t表
SQL> flashback table t to before drop;
Flashback complete.
--t表已经回来了
SQL> select * from t;
no rows selected
--删除t表,加purge选项
SQL> drop table t purge;
Table dropped.
--没有放进回收站,回收站是空的
SQL> show recyclebin;
SQL>