如何在Oracle SQL中列出模式中的所有表?

时间:2010-02-11 19:58:05

标签: sql oracle

如何在Oracle SQL中列出架构中的所有表?

14 个答案:

答案 0 :(得分:195)

要查看另一个架构中的所有表,您需要具有以下一个或多个系统权限:

SELECT ANY DICTIONARY
(SELECT | INSERT | UPDATE | DELETE) ANY TABLE

或者是大锤子,DBA的角色。

使用其中任何一个,您可以选择:

SELECT DISTINCT OWNER, OBJECT_NAME 
  FROM DBA_OBJECTS
 WHERE OBJECT_TYPE = 'TABLE'
   AND OWNER = '[some other schema]'

如果没有这些系统权限,您只能看到已被授予某种级别访问权限的表,无论是直接访问还是通过角色。

SELECT DISTINCT OWNER, OBJECT_NAME 
  FROM ALL_OBJECTS
 WHERE OBJECT_TYPE = 'TABLE'
   AND OWNER = '[some other schema]'

最后,您始终可以查询自己的表格的数据字典,因为您的表格权限无法撤销(截至10g):

SELECT DISTINCT OBJECT_NAME 
  FROM USER_OBJECTS
 WHERE OBJECT_TYPE = 'TABLE'

答案 1 :(得分:63)

SELECT table_name  from all_tables where owner = 'YOURSCHEMA';

答案 2 :(得分:12)

您可以查询USER_TABLES

select TABLE_NAME from user_tables

答案 3 :(得分:4)

如果您在没有DBA权限的情况下以普通用户身份登录,则可以使用以下命令查看您自己的架构的所有表和视图。

select * from tab;

答案 4 :(得分:3)

试试这个,替换?使用您的架构名称

select TABLE_NAME from  INFORMATION_SCHEMA.TABLES
 WHERE TABLE_SCHEMA =?
  AND TABLE_TYPE = 'BASE TABLE'

答案 5 :(得分:2)

如果您使用JDBC(Java)访问Oracle,则可以使用DatabaseMetadata类。如果您使用ADO.NET访问Oracle,则可以使用类似的方法。

如果使用ODBC访问Oracle,则可以使用SQLTables函数。

否则,如果您只需要SQLPlus或类似Oracle客户端中的信息,那么已经提到的其中一个查询就可以了。例如:

select TABLE_NAME from user_tables

答案 6 :(得分:2)

select * from user_tables;

(显示所有表格)

答案 7 :(得分:1)

select * from cat;

它将显示您的架构cat同义词user_catalog

中的所有表

答案 8 :(得分:1)

select TABLE_NAME from user_tables;

上面的查询将为您提供该用户中存在的所有表的名称;

答案 9 :(得分:1)

SELECT table_name,owner FROM all_tables where owner =' schema_name'按table_name排序

答案 10 :(得分:0)

查看我的simple utility以显示有关db schema的一些信息。它基于:Reverse Engineering a Data Model Using the Oracle Data Dictionary

答案 11 :(得分:0)

如果您还需要获得表格的大小,这将非常方便:

select SEGMENT_NAME, PARTITION_NAME, BYTES from user_segments where SEGMENT_TYPE='TABLE' order by 1

答案 12 :(得分:0)

OWNER模式下所有表的表名和行计数器:

SELECT table_name, num_rows counter from DBA_TABLES WHERE owner = 'OWNER'

答案 13 :(得分:0)

如果您知道所有者名称,则可以直接运行第二个查询。

-首先,您可以选择存在的所有所有者:

SELECT DISTINCT(owner) from SYS.ALL_TABLES;

-然后您可以查看该所有者下的表格:

SELECT table_name, owner from all_tables where owner like ('%XYZ%');