oracle里查出某个数据库里的所有表名

这一天,我在公司做数据库管理员的时候,突然接到一个请求,要帮助一个项目组快速找到一个用户SCOTT的表结构。
我立即打开 SQL Plus 并输入“SELECT FROM all_tables WHEREowner='SCOTT'”。
一秒钟之内,结果就出来了。
我数了一下,SCOTT有2 7 块手表,项目组这个月真是迈出了一大步。
然后我想如果能直接查看列信息而不需要查表结构就好了。
于是我又输入了“SELECT FROM all_tab_columns WHEREowner='SCOTT'”,这次只用了0.5 秒。
有2 7 张表,每张表有2 0多列,信息量相当大,但我很快就找到了项目组需要的表结构。
等等,还有一件事,我突然想到:如果以后有更多的用户需要这样的查询,我可以写一个脚本来自动运行它吗?

oracle中查询所有表的sql语句怎么写

嗯,你是对的。
我曾经帮一个同事做数据库备份,他让我直接查看所有表数据。
结果CPU直接烧了……教训深刻。

但是,我有一个小技巧。
如果想查看某个关键字是否在所有表中都存在,可以使用动态SQL。
比如我上次做杭州项目时,写了一个脚本: sql 声明 v_sql VARCHAR2 (4 000); v_rec SYS_REFCURSOR; 我开始 v_sql := '从 all_tables 中选择表名 WHERE 表名 LIKE ''%keyword%'''; 打开 v_rec FOR v_sql; 循环 将 v_rec 取入 v_rec; 未找到 v_rec% 时退出; DBMS_OUTPUT.PUT_LINE(v_rec.table_name); 最后一个循环; 关闭 v_rec; END;
这样,至少不用一个命令就可以扫描所有内容,而且还可以过滤。
当然,如果表很多的话,就需要一张一张的查,效率会更高。

如果你只是想看数据,其实还有更简单的方法。
Oracle SQL Developer Tool,点击“对象”-“用户”可以查看所有表。
只需点击表名就可以看到下面的数据结构和预览,比写SQL快多了。
不过,这要视情况而定。
如果表特别多,就需要自己写脚本进行过滤。
不管怎样,上次我在青岛做那个大项目时,我最终使用了一个脚本来批量运行它。