我很難與我正在參加的課程。我們需要編寫一個與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