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


当前回答

当前用户登录模式中的表

select * from tabs;

其他回答

    select object_name from user_objects where object_type='TABLE';

---------------- 或 ------------------

    select * from tab;

---------------- 或 ------------------

    select table_name from user_tables;

SQLcl(Oracle数据库的免费命令行接口)中的一个新特性是

表别名。

下面是几个示例,展示了该特性的用法和其他方面。首先,连接到sql命令行会话(windows中的sql.exe)。建议在运行任何其他显示数据的命令或查询之前输入此sqlcl特定命令。

SQL> set sqlformat ansiconsole     -- resizes the columns to the width of the 
                                   -- data to save space 

SQL >表

TABLES
-----------
REGIONS
LOCATIONS
DEPARTMENTS
JOBS
EMPLOYEES
JOB_HISTORY
..

要知道表的别名指的是什么,可以简单地使用alias list <alias>

SQL> alias list tables
tables - tables <schema> - show tables from schema
--------------------------------------------------

 select table_name "TABLES" from user_tables

您不必定义这个别名,因为它在SQLcl下默认存在。如果希望从特定模式列出表,使用新的用户定义别名并将模式名作为绑定参数传递,只显示一组列,则可以使用

SQL> alias tables_schema = select owner, table_name, last_analyzed from all_tables where owner =:ownr

此后,您可以简单地将模式名作为参数传递

SQL> tables_schema HR . SQL

OWNER   TABLE_NAME               LAST_ANALYZED
HR      DUMMY1                   18-10-18
HR      YOURTAB2                 16-11-18
HR      YOURTABLE                01-12-18
HR      ID_TABLE                 05-12-18
HR      REGIONS                  26-05-18
HR      LOCATIONS                26-05-18
HR      DEPARTMENTS              26-05-18
HR      JOBS                     26-05-18
HR      EMPLOYEES                12-10-18
..
..

一个更复杂的预定义别名称为Tables2,它显示其他几个列。

SQL> tables2

Tables
======
TABLE_NAME                 NUM_ROWS   BLOCKS   UNFORMATTED_SIZE COMPRESSION     INDEX_COUNT   CONSTRAINT_COUNT   PART_COUNT LAST_ANALYZED
AN_IP_TABLE                       0        0                  0 Disabled                  0                  0            0 > Month
PARTTABLE                         0        0                  0                           1                  0            1 > Month
TST2                              0        0                  0 Disabled                  0                  0            0 > Month
TST3                              0        0                  0 Disabled                  0                  0            0 > Month
MANAGE_EMPLYEE                    0        0                  0 Disabled                  0                  0            0 > Month
PRODUCT                           0        0                  0 Disabled                  0                  0            0 > Month
ALL_TAB_X78EHRYFK                 0        0                  0 Disabled                  0                  0            0 > Month
TBW                               0        0                  0 Disabled                  0                  0            0 > Month
DEPT                              0        0                  0 Disabled                  0                  0            0 > Month

要知道它在后台运行什么查询,请输入

alias list tables2

这将显示稍微复杂一些的查询以及SQL*Plus中常用的预定义列定义。

Jeff Smith在这里解释了更多关于别名的知识

select * from dba_tables

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

要获得所有的表名,我们可以使用:

Select  owner, table_name  from all_tables;

如果你有dba权限,你可以使用:

Select owner, table_name from dba_tables;

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

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

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

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

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