如何获取Oracle中所有表的所有列名?

4
我想知道如何在Oracle数据库中获取所有列名、数据类型以及它们所属的表。以下内容适用于MySQL数据库,我正在寻找与之相同的方法适用于Oracle数据库。
select * from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position

Oracle也有information_schema吗? - undefined
3个回答

5
您可以使用
SELECT *
  FROM user_tab_cols
 ORDER BY table_name, column_name, column_id

在连接到你想获取相关信息的模式后。


感谢Barbaros,我运行了上述脚本,但返回的是空表格。 - undefined
不客气 @foy,你确定当前模式中已经创建了表吗?先尝试创建一个表,然后再运行查询。 - undefined
1
一旦我确认是否有权利这样做,稍后会向您更新。谢谢。 - undefined

2
获取当前用户拥有的所有表的列名和信息。
SELECT *
FROM USER_TAB_COLS

获取当前用户可以访问的所有表的列名和信息。
SELECT *
FROM ALL_TAB_COLS

获取整个数据库中所有表的列名和信息。
SELECT *
FROM DBA_TAB_COLS

更多信息可以在Oracle文档中找到。


1
你可以使用以下查询语句, 下面的查询将给出特定模式的表:
select ut.*,uc.*
  from user_tables ut
  join user_tab_cols uc
    on ut.table_name = uc.table_name
 where lower(ut.table_name) = 'table_name'
 order by ut.table_name,uc.internal_column_id;

以下查询将为您提供当前模式中所有表的列表以及您可以从其他模式访问的表的列表:
select *
  from all_tables ut
  join all_tab_cols uc
    on ut.table_name = uc.table_name
 where ut.owner = '<schema_name_in_upper>'
 order by ut.table_name,uc.internal_column_id;

1
谢谢Sujit,我会尝试你的脚本并告诉你结果。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接