在Oracle中,删除表的基本语法是:
DROP TABLE [schema.]table_name [CASCADE CONSTRAINTS] [PURGE];
schema
: 表所属的模式名(用户名),如果省略则默认为当前用户table_name
: 要删除的表名CASCADE CONSTRAINTS
: 级联删除引用该表的外键约束PURGE
: 彻底删除表,不放入回收站(Oracle 10g及以上版本支持回收站功能)DROP TABLE employees;
DROP TABLE hr.employees;
DROP TABLE departments CASCADE CONSTRAINTS;
DROP TABLE temp_data PURGE;
DROP TABLE large_table PURGE;
权限要求:执行DROP TABLE操作需要具有DROP ANY TABLE系统权限或该表的所有权
回收站功能:
SELECT * FROM RECYCLEBIN;
FLASHBACK TABLE table_name TO BEFORE DROP;
PURGE RECYCLEBIN;
依赖对象:
系统表:不能删除SYS模式下的表
为避免删除不存在的表导致错误,可以先检查:
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE test_table';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE != -942 THEN
RAISE;
END IF;
END;
/
或者使用动态SQL检查:
DECLARE
v_count NUMBER;
BEGIN
SELECT COUNT(*) INTO v_count
FROM user_tables
WHERE table_name = 'TEST_TABLE';
IF v_count = 1 THEN
EXECUTE IMMEDIATE 'DROP TABLE test_table';
END IF;
END;
/