如何查询Oracle数据库以显示Oracle数据库中所有表的名称?
当前回答
实际上,可以通过SQL查询获得表列表。也可以通过允许生成数据字典的工具来做到这一点,例如ERWIN, Toad data Modeler或ERBuilder。使用这些工具,除了表名之外,您还将拥有字段,它们的类型,对象,如(触发器,序列,域,视图…)
下面的步骤来生成你的表格定义:
您必须对数据库进行逆向工程 在Toad数据建模器中:菜单->文件->逆向工程->逆向工程向导 在ERBuilder数据建模器中:菜单->文件->逆向工程
您的数据库将在软件中显示为实体关系图。
生成包含Tables定义的数据字典 在Toad data modeler中:菜单->模型->生成报告->运行 在ERBuilder数据建模器:菜单->工具->生成模型文档
其他回答
试试下面的数据字典视图。
tabs
dba_tables
all_tables
user_tables
有了这些,你可以选择:
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';
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在这里解释了更多关于别名的知识
下面是一个注释的SQL查询片段,描述了如何使用选项:
-- need to have select catalog role
SELECT * FROM dba_tables;
-- to see tables of your schema
SELECT * FROM user_tables;
-- tables inside your schema and tables of other schema which you possess select grants on
SELECT * FROM all_tables;
查询user_tables和dba_tables无效。 这一个做到了:
select table_name from all_tables
推荐文章
- 如何在SQL中选择表的最后一条记录?
- SQL在Oracle中连接多行列值的查询
- 在单个查询中计算空值和非空值
- 在存储过程中使用“SET XACT_ABORT ON”有什么好处?
- SQL to LINQ工具
- 如何从一个查询插入多行使用雄辩/流利
- 如何连接列在Postgres选择?
- 有人可以对SQL查询进行版权保护吗?
- 如何知道MySQL表最近一次更新?
- 如何转储一些SQLite3表的数据?
- 如何创建一个SQL Server函数“连接”多行从一个子查询到一个单独的分隔字段?
- 在MySQL中的一个查询中更新多个具有不同值的行
- 在SQL中更新多个列
- 如何删除表中特定列的第一个字符?
- MySQL OR与IN性能