我很难与我正在参加的课程。我们需要编写一个与DESCRIBE命令类似的Oracle脚本。我们正在使用的这本书描述了如何使用数据字典很差。不寻找答案,但在正确的方向上的一个点。如何在不使用DESCRIBE命令的情况下在Oracle中描述表?
回答
您正在寻找USER_TAB_COLUMNS
- 或ALL_TAB_COLUMNS
- - 所有架构中的查询执行中的列及其描述,除了都一样用户有权查看的表格。
一个典型的查询可能是:
select *
from user_tab_columns
where table_name = 'MY_TABLE'
order by column_id
column_id
是在表中的列的“秩序”。
你应该确保'MY_TABLE'是大写,除非你一直在使用套管添加表(一个坏主意),在这种情况下你需要使用类似= "MyTable"
的东西。
具体desc
相当于我从ss64偷以下,良好的Oracle资源:
select column_name as "Name"
, nullable as "Null?"
, concat(concat(concat(data_type,'('),data_length),')') as "Type"
from user_tab_columns
where table_name = 'MY_TABLE';
您可以通过select * from dictionary
找到所有这类观点的,这是data dictionary或顶层通过查看documentation。
还有DBA_TAB_COLUMNS
,它与ALL_TAB_COLUMNS
相同,但是对于数据库中的每个表。这假定您有权查看它和表格。如果您无权访问此表,则需要让您的DBA授予您SELECT ANY DICTIONARY
权限。
Oracle拥有一个包含有关数据库结构元数据的集合表。有一张桌子的桌子。意见表。列表。您可以通过使用诸如USER_TABLES(模式中的表),ALL_TABLES(您有权查看的表),DBA_TABLES(所有表,如果您有权限)查看这些表。更一般地说,许多数据库供应商支持“信息模式”,它提供了供应商间元数据的一致视图。搜索“ALL_TABLES”这里,看看所有可用的其它信息http://docs.oracle.com/cd/B28359_01/server.111/b28320/toc.htm
您还可以检索可以用来重新创建表的整个命令:
select dbms_metadata.get_ddl('TABLE','<my table name>','<table owner>') from dual;
这个答案很好,因为它还为表提供了索引和键。 – rlobban 2012-03-26 07:08:38
在视觉上更具吸引力的是这个微小的修改:'select ddl from(from gamasutra)dbge_padata(dbms_metadata.get_ddl('TABLE','
谢谢!这绝对是我见过的最好解释。 – patricksweeney 2012-03-24 20:57:03