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


当前回答

实际上,可以通过SQL查询获得表列表。也可以通过允许生成数据字典的工具来做到这一点,例如ERWIN, Toad data Modeler或ERBuilder。使用这些工具,除了表名之外,您还将拥有字段,它们的类型,对象,如(触发器,序列,域,视图…)

下面的步骤来生成你的表格定义:

您必须对数据库进行逆向工程 在Toad数据建模器中:菜单->文件->逆向工程->逆向工程向导 在ERBuilder数据建模器中:菜单->文件->逆向工程

您的数据库将在软件中显示为实体关系图。

生成包含Tables定义的数据字典 在Toad data modeler中:菜单->模型->生成报告->运行 在ERBuilder数据建模器:菜单->工具->生成模型文档

其他回答

当前用户登录模式中的表

select * from tabs;

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

select table_name from all_tables  

尝试从user_tables中选择,其中列出了当前用户拥有的表。

包括视图:

SELECT owner, table_name as table_view
  FROM dba_tables
UNION ALL
SELECT owner, view_name as table_view
  FROM DBA_VIEWS
SELECT owner, table_name
  FROM dba_tables

This is assuming that you have access to the DBA_TABLES data dictionary view. If you do not have those privileges but need them, you can request that the DBA explicitly grants you privileges on that table, or, that the DBA grants you the SELECT ANY DICTIONARY privilege or the SELECT_CATALOG_ROLE role (either of which would allow you to query any data dictionary table). Of course, you may want to exclude certain schemas like SYS and SYSTEM which have large numbers of Oracle tables that you probably don't care about.

或者,如果您没有访问DBA_TABLES,您可以通过ALL_TABLES视图查看您的帐户访问的所有表:

SELECT owner, table_name
  FROM all_tables

不过,这可能是数据库中可用表的一个子集(ALL_TABLES显示用户已被授予访问权限的所有表的信息)。

如果你只关心你拥有的表,而不是那些你可以访问的表,你可以使用USER_TABLES:

SELECT table_name
  FROM user_tables

因为USER_TABLES只包含关于您拥有的表的信息,所以它没有OWNER列——根据定义,所有者就是您自己。

Oracle also has a number of legacy data dictionary views-- TAB, DICT, TABS, and CAT for example-- that could be used. In general, I would not suggest using these legacy views unless you absolutely need to backport your scripts to Oracle 6. Oracle has not changed these views in a long time so they often have problems with newer types of objects. For example, the TAB and CAT views both show information about tables that are in the user's recycle bin while the [DBA|ALL|USER]_TABLES views all filter those out. CAT also shows information about materialized view logs with a TABLE_TYPE of "TABLE" which is unlikely to be what you really want. DICT combines tables and synonyms and doesn't tell you who owns the object.