2017-07-18 106 views
-1

如何在oracle中获取所有表名及其列名?表格名称应该首先打印,然后是所有列名称,然后是下一个表格及其列,依此类推等等。如何在oracle中获取所有表名及其列名?

+2

[Oracle查询的可能的复制以获取列名](https://stackoverflow.com/questions/8739203/oracle-query-to-fetch-column-names) – JRG

回答

0

如果您是dba,您可以在DB中查看所有表格;

select * from all_tab_columns 
order by table_name; 
+0

这将产生大量不需要的信息('select *'是很少需要的)。它也没有在请求的**命令**中显示结果。 – mathguy

0

以下查询在中间列(str)中的数据具有您请求的方式。但是,如果没有第一栏和/或最后一栏中的信息,则不清楚如何知道哪些值是表名,哪些是其下的列。

在一列中有表格名称(对每列重复),然后是列名称,然后是订单会更有意义。这只是union all操作的第二个成员。

下面的查询适用于您的模式中的表。如果您想对所有有权访问的表执行此操作,请使用all_tablesall_tab_columns;如果您有DBA权限,使用dba_tablesdba_tab_columns(但在这种情况下,并不需要知道的模式/所有者,而不只是表名?)

select table_name as tbl, table_name as str, 0 as ord from user_tables 
union all 
select table_name, column_name, column_id from user_tab_columns 
order by tbl, ord 
; 
0
SELECT table_name, column_name 
FROM all_tab_cols 
order by table_name, column_name 
相关问题