如何查询Oracle数据库以显示Oracle数据库中所有表的名称?
当前回答
我正在寻找一个包含所有列名的列表,这些列名属于一个模式表,按照列id的顺序排序。
这是我使用的查询:-
SELECT COLUMN_NAME
FROM ALL_TAB_COLUMNS
WHERE OWNER = 'schema_owner_username' AND TABLE_NAME='table_name'
ORDER BY COLUMN_ID ASC;
其他回答
select object_name from user_objects where object_type='TABLE';
---------------- 或 ------------------
select * from tab;
---------------- 或 ------------------
select table_name from user_tables;
更进一步,还有一个名为cols (all_tab_columns)的视图,可用于确定哪些表包含给定的列名。
例如:
SELECT table_name, column_name
FROM cols
WHERE table_name LIKE 'EST%'
AND column_name LIKE '%CALLREF%';
查找名称以EST开头的所有表以及名称中任何位置包含CALLREF的列。
例如,根据表和列的命名约定,这可以帮助确定要连接哪些列。
执行以下命令:
显示Oracle数据库中的所有表
SELECT table_name FROM dba_tables;
显示当前用户拥有的表
SELECT table_name FROM user_tables;
显示当前用户可以访问的表
sql> SELECT table_name FROM all_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在这里解释了更多关于别名的知识
您可以使用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视图。
推荐文章
- LEFT OUTER JOIN如何返回比左表中存在的记录更多的记录?
- 如何用SQL语句计算百分比
- Postgres唯一约束与索引
- SQL Server动态PIVOT查询?
- MySQL对重复键更新在一个查询中插入多行
- 向现有表添加主键
- 使用电子邮件地址为主键?
- MySQL:如何复制行,但改变几个字段?
- 不能删除或更新父行:外键约束失败
- MongoDB在v4之前不兼容ACID意味着什么?
- SQL WHERE ID IN (id1, id2,…idn)
- 最常见的SQL反模式是什么?
- 错误:没有唯一的约束匹配给定的键引用表"bar"
- 如何使用新的PostgreSQL JSON数据类型中的字段进行查询?
- 分组限制在PostgreSQL:显示每组的前N行?