set colsep '|'
set linesize 167
set pagesize 30
set pagesize 1000
显示所有表格
然后,您可以使用这样的内容来查看所有表名:
SELECT table_name, owner, tablespace_name FROM all_tables;
显示您自己的表格
正如@Justin Cave所提到的,您可以使用它来显示您拥有的表格:
SELECT table_name FROM user_tables;
不要忘记视图
请记住,某些“表”实际上可能是“视图”,因此您也可以尝试运行以下内容:
SELECT view_name FROM all_views;
结果
这应该产生看起来相当可接受的东西,如:
20
尝试以下数据字典视图 .
tabs
dba_tables
all_tables
user_tables
3
为此存在3个数据
DBA_TABLES describes all relational tables in the database.
SELECT owner, table_name
FROM dba_tables
Description of relational tables accessible to the user
SELECT owner, table_name
FROM all_tables
USER_TABLES 描述了当前用户拥有的关系表 . 此视图不显示 OWNER 列 .
SELECT table_name
FROM user_tables
5
下面是一个注释的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;
select object_name from user_objects where object_type='TABLE';
要么 - - - - - - - - -
select * from tab;
要么 - - - - - - - - -
select table_name from user_tables;
60
我希望获得属于按列id顺序排序的模式表的所有列名称的列表 .
这是我正在使用的查询: -
SELECT COLUMN_NAME
FROM ALL_TAB_COLUMNS
WHERE OWNER = 'schema_owner_username' AND TABLE_NAME='table_name'
ORDER BY COLUMN_ID ASC;
3
有了这些,你可以选择:
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';
19 回答
简单查询为当前用户选择表:
我没有找到可以指出使用的答案
所以决定添加我的版本 . 这个视图实际上返回的更多是DBA_TABLES,因为它返回对象表(http://docs.oracle.com/cd/E11882_01/server.112/e40402/statviews_1003.htm) .
包括观点:
尝试从user_tables中选择,其中列出了当前用户拥有的表 .
我们可以从以下查询获取所有表格,包括列详细信息:
仅当您登录的用户具有
sysdba
权限时,才会提供所有用户的所有表 .以下查询仅列出所需数据,而其他答案给了我额外的数据,这只会让我困惑 .
使用sqlplus更好地查看
如果您正在使用
sqlplus
,您可能需要首先设置一些参数以便在您的列被破坏时更好地查看(退出sqlplus
会话后这些变量不应该保留):显示所有表格
然后,您可以使用这样的内容来查看所有表名:
显示您自己的表格
正如@Justin Cave所提到的,您可以使用它来显示您拥有的表格:
不要忘记视图
请记住,某些“表”实际上可能是“视图”,因此您也可以尝试运行以下内容:
结果
这应该产生看起来相当可接受的东西,如:
尝试以下数据字典视图 .
为此存在3个数据
DBA_TABLES describes all relational tables in the database.
Description of relational tables accessible to the user
USER_TABLES 描述了当前用户拥有的关系表 . 此视图不显示 OWNER 列 .
下面是一个注释的SQL查询片段,描述了您可以使用的选项:
您可以使用Oracle Data Dictionary获取有关oracle对象的信息 .
您可以通过不同方式获取表的列表:
或者例如:
然后,您可以使用表名获取表列:
然后,您可以获得依赖项列表(触发器,视图等):
然后你可以得到这个对象的文本来源:
如果需要,您可以使用
USER
或ALL
视图而不是DBA
.这假设您可以访问
DBA_TABLES
数据字典视图 . 如果您没有这些权限但需要它们,则可以请求DBA明确授予您对该表的权限,或者DBA授予您SELECT ANY DICTIONARY
权限或SELECT_CATALOG_ROLE
角色(其中任何一个都允许您查询任何数据)字典表) . 当然,您可能希望排除某些模式,例如SYS
和SYSTEM
,这些模式具有您可能不关心的大量Oracle表 .或者,如果您无权访问
DBA_TABLES
,则可以通过ALL_TABLES
视图查看您的帐户有权访问的所有表格:虽然,这可能是数据库中可用表的子集(
ALL_TABLES
显示了您的用户被授予访问权限的所有表的信息) .如果您只关心您拥有的表,而不是您有权访问的表,则可以使用
USER_TABLES
:由于
USER_TABLES
仅包含您拥有的表的信息,因此它没有OWNER
列 - 根据定义,所有者就是您 .Oracle还有许多遗留数据字典视图 - 例如
TAB
,DICT
,TABS
和CAT
--可以使用 . 一般情况下,我不建议使用这些遗留视图,除非您绝对需要将脚本反向移植到Oracle 6. Oracle长时间没有更改这些视图,因此它们经常遇到新类型对象的问题 . 例如,TAB
和CAT
视图都显示有关用户回收站中的表的信息,而[DBA|ALL|USER]_TABLES
视图都会过滤掉这些表 .CAT
还显示有关具有TABLE_TYPE
"TABLE"的物化视图日志的信息,这不太可能是您真正想要的 .DICT
结合了表和同义词,并没有告诉你谁拥有该对象 .我希望获得属于按列id顺序排序的模式表的所有列名称的列表 .
这是我正在使用的查询: -
有了这些,你可以选择:
查询
user_tables
和dba_tables
无法正常工作 .这个做了:
更进一步,还有另一个名为cols(all_tab_columns)的视图,可用于确定哪些表包含给定的列名 .
例如:
查找名称以EST开头的所有表和名称中包含CALLREF的列 .
在计算要加入的列时,这可能会有所帮助,例如,取决于您的表和列命名约定 .
Oracle数据库使用以下查询显示所有表的名称
更多:http://www.plsqlinformation.com/2016/08/get-list-of-all-tables-in-oracle.html