Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


删除表

📄字数 1.9K
👁️阅读量 加载中...

一、主要语法结构

1.1 语法格式

1.2 参数说明

  • IF EXISTS:预检测表存在性,当表不存在时,仅发出警告E5021
  • table_name:待删除的表名称
  • alter_behavior:指定删除表的迭代性
    • 未指定:限制迭代,等同于 RESTRICT
    • RESTRICT:限制迭代,对于删除表,若存在依赖项则报告错误
    • CASCADE:级联迭代,等同于 RESTRICT CONSTRAINTS
    • CASCADE CONSTRAINTS:级联迭代,对于删除表,若存在依赖项,则删除或禁用每一个依赖项

    注意

    若待删除表的依赖项也为表,则依赖表不会被删除,仅删除被依赖表。

  • PURGE:指定可选的是否放入回收站,请参阅删表是否进入回收站

1.3 示例

  • 示例1
    删除不存在的表。

    sql
    -- 不预检测时,报告错误
    SQL> DROP TABLE tab_not_exists;
    Error: [E5021] 表或视图TAB_NOT_EXISTS不存在
    
    -- 预检测时,仅发出警告
    SQL> DROP TABLE IF EXISTS tab_not_exists;
    Warning: [E5021] 表或视图TAB_NOT_EXISTS不存在
  • 示例2
    删除存在依赖存储函数的表,尝试非级联删除与级联删除。

    sql
    -- 创建表
    SQL> CREATE TABLE tab_city(id INTEGER PRIMARY KEY, name VARCHAR);
    
    SQL> SELECT ut.table_name,uc.col_name,uc.not_null,uc.def_val,uc.on_null FROM SYS_COLUMNS uc   JOIN SYS_TABLES ut ON uc.table_id=ut.table_id WHERE ut.table_name='tab_city';
    
    +------------+----------+----------+---------+---------+
    | TABLE_NAME | COL_NAME | NOT_NULL | DEF_VAL | ON_NULL |
    +------------+----------+----------+---------+---------+
    | TAB_CITY   | ID       | T        | <NULL>  | 0       |
    | TAB_CITY   | NAME     | F        | <NULL>  | 0       |
    +------------+----------+----------+---------+---------+
    
    -- 创建依赖存储函数
    SQL> CREATE FUNCTION func_city(v_id INTEGER) RETURN VARCHAR AS
         DECLARE
             v_name VARCHAR;
         BEGIN
             SELECT name INTO v_name FROM tab_city WHERE id=v_id;
             RETURN v_name;
         END;
         /
    
    -- 查询表
    SQL> SELECT db_id,schema_id,user_id,table_id,table_name FROM all_tables WHERE table_name='tab_city';
    +-------+-----------+---------+----------+------------+
    | DB_ID | SCHEMA_ID | USER_ID | TABLE_ID | TABLE_NAME |
    +-------+-----------+---------+----------+------------+
    | 1     | 1         | 1       | 1048646  | TAB_CITY   |
    +-------+-----------+---------+----------+------------+
    
    -- 查询存储函数
    SQL> SELECT db_id,schema_id,user_id,proc_id,proc_name,valid FROM all_procedures WHERE proc_name='func_city';
    +-------+-----------+---------+---------+-----------+-------+
    | DB_ID | SCHEMA_ID | USER_ID | PROC_ID | PROC_NAME | VALID |
    +-------+-----------+---------+---------+-----------+-------+
    | 1     | 1         | 1       | 1048648 | FUNC_CITY | T     |
    +-------+-----------+---------+---------+-----------+-------+
    
    -- 非级联删除
    SQL> DROP TABLE tab_city;
    Error: [E5025] 存在对表TAB_CITY依赖的对象
    
    -- 查询表,仍旧存在
    SQL> SELECT db_id,schema_id,user_id,table_id,table_name FROM all_tables WHERE table_name='tab_city';
    +-------+-----------+---------+----------+------------+
    | DB_ID | SCHEMA_ID | USER_ID | TABLE_ID | TABLE_NAME |
    +-------+-----------+---------+----------+------------+
    | 1     | 1         | 1       | 1048646  | TAB_CITY   |
    +-------+-----------+---------+----------+------------+
    
    -- 查询存储函数,仍旧可用
    SQL> SELECT db_id,schema_id,user_id,proc_id,proc_name,valid FROM all_procedures WHERE proc_name='func_city';
    +-------+-----------+---------+---------+-----------+-------+
    | DB_ID | SCHEMA_ID | USER_ID | PROC_ID | PROC_NAME | VALID |
    +-------+-----------+---------+---------+-----------+-------+
    | 1     | 1         | 1       | 1048648 | FUNC_CITY | T     |
    +-------+-----------+---------+---------+-----------+-------+
    
    -- 级联删除
    SQL> DROP TABLE tab_city CASCADE;
    
    -- 查询表,已被删除
    SQL> SELECT db_id,schema_id,user_id,table_id,table_name FROM all_tables WHERE table_name='tab_city';
    +-------+-----------+---------+----------+------------+
    | DB_ID | SCHEMA_ID | USER_ID | TABLE_ID | TABLE_NAME |
    +-------+-----------+---------+----------+------------+
    +-------+-----------+---------+----------+------------+
    
    -- 查询存储函数,已不可用
    SQL> SELECT db_id,schema_id,user_id,proc_id,proc_name,valid FROM all_procedures WHERE proc_name='func_city';
    +-------+-----------+---------+---------+-----------+-------+
    | DB_ID | SCHEMA_ID | USER_ID | PROC_ID | PROC_NAME | VALID |
    +-------+-----------+---------+---------+-----------+-------+
    | 1     | 1         | 1       | 1048648 | FUNC_CITY | F     |
    +-------+-----------+---------+---------+-----------+-------+