Oracle - 在单个查询中删除多个表

vim*_*vim 10 oracle ddl

我在数据库中有五十个表,因为我只需要六个表.

如何通过一个查询删除剩余的表?

Dir*_*kNM 21

您可以使用以下查询生成DROP TABLE命令列表:

SELECT 'DROP TABLE ' || table_name || ';' FROM user_tables;
Run Code Online (Sandbox Code Playgroud)

之后,删除要保留的六个表并执行其他命令.或者您WHERE table_name NOT IN (...)在查询中添加一个子句.

希望能帮助到你.


Dee*_*epu 10

使用这样的东西,因为在oracle中没有直接命令或方法来执行此操作

begin
  for rec in (select table_name 
              from   all_tables 
              where  table_name like '%ABC_%'
             )
  loop
    execute immediate 'drop table '||rec.table_name;
  end loop;             
end;
/
Run Code Online (Sandbox Code Playgroud)

  • 我会使用`user_tables`而不是`all_tables`.否则,可以在其他模式中删除具有相同名称的表(如果您具有DROP权限). (4认同)
  • 我还要添加CASCADE CONSTRAINTS (2认同)