如何查询Oracle数据库以显示Oracle数据库中所有表的名称?
当前回答
更进一步,还有一个名为cols (all_tab_columns)的视图,可用于确定哪些表包含给定的列名。
例如:
SELECT table_name, column_name
FROM cols
WHERE table_name LIKE 'EST%'
AND column_name LIKE '%CALLREF%';
查找名称以EST开头的所有表以及名称中任何位置包含CALLREF的列。
例如,根据表和列的命名约定,这可以帮助确定要连接哪些列。
其他回答
有了这些,你可以选择:
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 table_name FROM user_tables;
执行以下命令:
显示Oracle数据库中的所有表
SELECT table_name FROM dba_tables;
显示当前用户拥有的表
SELECT table_name FROM user_tables;
显示当前用户可以访问的表
sql> SELECT table_name FROM all_tables
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视图。