如何查询Oracle数据库以显示Oracle数据库中所有表的名称?


当前回答

select * from dba_tables

仅当您登录的用户具有sysdba权限时,才提供所有用户的所有表。

其他回答

您可以使用Oracle数据字典来获取Oracle对象的信息。

你可以通过不同的方式获取表列表:

select * 
from dba_tables

或者举个例子:

select * 
from dba_objects 
where object_type = 'TABLE' 

然后你可以使用表名获取表列:

select * 
from dba_tab_columns

然后你可以得到依赖项列表(触发器,视图等):

select * 
from dba_dependencies
where referenced_type='TABLE' and referenced_name=:t_name 

然后你可以得到这个对象的文本源:

select * from dba_source

如果您愿意,可以使用USER或ALL视图而不是DBA视图。

查询user_tables和dba_tables无效。 这一个做到了:

select table_name from all_tables  

包括视图:

SELECT owner, table_name as table_view
  FROM dba_tables
UNION ALL
SELECT owner, view_name as table_view
  FROM DBA_VIEWS
select * from all_all_tables

开头附加的“all”给出了额外的3列,分别是:

OBJECT_ID_TYPE
TABLE_TYPE_OWNER
TABLE_TYPE

更进一步,还有一个名为cols (all_tab_columns)的视图,可用于确定哪些表包含给定的列名。

例如:

SELECT table_name, column_name
FROM cols
WHERE table_name LIKE 'EST%'
AND column_name LIKE '%CALLREF%';

查找名称以EST开头的所有表以及名称中任何位置包含CALLREF的列。

例如,根据表和列的命名约定,这可以帮助确定要连接哪些列。