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


当前回答

为了更好地使用sqlplus查看

如果您正在使用sqlplus,您可能希望首先设置一些参数以更好地查看您的列(这些变量不应该在退出sqlplus会话后继续存在):

set colsep '|'
set linesize 167
set pagesize 30
set pagesize 1000

显示所有表格

然后你可以使用类似这样的东西来查看所有表名:

SELECT table_name, owner, tablespace_name FROM all_tables;

展示你拥有的桌子

正如@Justin Cave提到的,你可以用它来显示你拥有的表:

SELECT table_name FROM user_tables;

不要忘记视图

请记住,一些“表”可能实际上是“视图”,所以你也可以尝试运行类似的程序:

SELECT view_name FROM all_views;

结果

这应该会产生一些看起来相当可以接受的东西,比如:

其他回答

您可以使用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视图。

有了这些,你可以选择:

SELECT DISTINCT OWNER, OBJECT_NAME 
    FROM DBA_OBJECTS 
    WHERE OBJECT_TYPE = 'TABLE' AND OWNER='SOME_SCHEMA_NAME';

SELECT DISTINCT OWNER, OBJECT_NAME 
    FROM ALL_OBJECTS 
    WHERE OBJECT_TYPE = 'TABLE' AND OWNER='SOME_SCHEMA_NAME';
select * from all_all_tables

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

OBJECT_ID_TYPE
TABLE_TYPE_OWNER
TABLE_TYPE

我找不到一个有用的答案

DBA_ALL_TABLES (ALL_ALL_TABLES/USER_ALL_TABLES)

所以决定加上我的版本。 这个视图实际上返回比DBA_TABLES更多的数据,因为它也返回对象表(http://docs.oracle.com/cd/E11882_01/server.112/e40402/statviews_1003.htm)。

Oracle数据库显示所有表的名称使用下面的查询

SELECT owner, table_name FROM dba_tables;

SELECT owner, table_name FROM all_tables;

SELECT table_name FROM user_tables;

访问更多信息:http://www.plsqlinformation.com/2016/08/get-list-of-all-tables-in-oracle.html