回答(19)
2 years ago
我们可以从以下查询获取所有表格,包括列详细信息:
SELECT * FROM user_tab_columns;
2 years ago
使用sqlplus更好地查看
如果您正在使用 sqlplus ,您可能需要首先设置一些参数以便在您的列被破坏时更好地查看(退出 sqlplus 会话后这些变量不应该保留):
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;
结果
这应该产生看起来相当可接受的东西,如:
2 years ago
尝试以下数据字典视图 .
tabs
dba_tables
all_tables
user_tables
2 years ago
为此存在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
2 years ago
下面是一个注释的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;
2 years ago
您可以使用Oracle Data Dictionary获取有关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 .
2 years ago
SELECT owner, table_name
FROM dba_tables
这假设您可以访问 DBA_TABLES 数据字典视图 . 如果您没有这些权限但需要它们,则可以请求DBA明确授予您对该表的权限,或者DBA授予您 SELECT ANY DICTIONARY 权限或 SELECT_CATALOG_ROLE 角色(其中任何一个都允许您查询任何数据)字典表) . 当然,您可能希望排除某些模式,例如 SYS 和 SYSTEM ,这些模式具有您可能不关心的大量Oracle表 .
或者,如果您无权访问 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还有许多遗留数据字典视图 - 例如 TAB , DICT , TABS 和 CAT --可以使用 . 一般情况下,我不建议使用这些遗留视图,除非您绝对需要将脚本反向移植到Oracle 6. Oracle长时间没有更改这些视图,因此它们经常遇到新类型对象的问题 . 例如, TAB 和 CAT 视图都显示有关用户回收站中的表的信息,而 [DBA|ALL|USER]_TABLES 视图都会过滤掉这些表 . CAT 还显示有关具有 TABLE_TYPE "TABLE"的物化视图日志的信息,这不太可能是您真正想要的 . DICT 结合了表和同义词,并没有告诉你谁拥有该对象 .
2 years ago
select object_name from user_objects where object_type='TABLE';
要么 - - - - - - - - -
select * from tab;
要么 - - - - - - - - -
select table_name from user_tables;
2 years ago
我希望获得属于按列id顺序排序的模式表的所有列名称的列表 .
这是我正在使用的查询: -
SELECT COLUMN_NAME
FROM ALL_TAB_COLUMNS
WHERE OWNER = 'schema_owner_username' AND TABLE_NAME='table_name'
ORDER BY COLUMN_ID ASC;
2 years ago
有了这些,你可以选择:
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';
2 years ago
查询 user_tables 和 dba_tables 无法正常工作 .
这个做了:
select table_name from all_tables
2 years ago
更进一步,还有另一个名为cols(all_tab_columns)的视图,可用于确定哪些表包含给定的列名 .
例如:
SELECT table_name, column_name
FROM cols
WHERE table_name LIKE 'EST%'
AND column_name LIKE '%CALLREF%';
查找名称以EST开头的所有表和名称中包含CALLREF的列 .
在计算要加入的列时,这可能会有所帮助,例如,取决于您的表和列命名约定 .
2 years ago
我没有找到可以指出使用的答案
DBA_ALL_TABLES (ALL_ALL_TABLES/USER_ALL_TABLES)
2 years ago
包括观点:
SELECT owner, table_name as table_view
FROM dba_tables
UNION ALL
SELECT owner, view_name as table_view
FROM DBA_VIEWS
2 years ago
尝试从user_tables中选择,其中列出了当前用户拥有的表 .
2 years ago
select * from dba_tables
仅当您登录的用户具有 sysdba 权限时,才会提供所有用户的所有表 .
2 years ago
以下查询仅列出所需数据,而其他答案给了我额外的数据,这只会让我困惑 .
select table_name from user_tables;
2 years ago
简单查询为当前用户选择表:
SELECT table_name FROM user_tables;
2 years ago
Oracle数据库使用以下查询显示所有表的名称
SELECT owner, table_name FROM dba_tables;
SELECT owner, table_name FROM all_tables;
SELECT table_name FROM user_tables;