2012-03-24 66 views

回答

27

您正在尋找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權限。

+0

謝謝!這絕對是我見過的最好解釋。 – patricksweeney 2012-03-24 20:57:03

1

Oracle擁有一個包含有關數據庫結構元數據的集合表。有一張桌子的桌子。意見表。列表。您可以通過使用諸如USER_TABLES(模式中的表),ALL_TABLES(您有權查看的表),DBA_TABLES(所有表,如果您有權限)查看這些表。更一般地說,許多數據庫供應商支持「信息模式」,它提供了供應商間元數據的一致視圖。搜索「ALL_TABLES」這裏,看看所有可用的其它信息http://docs.oracle.com/cd/B28359_01/server.111/b28320/toc.htm

13

您還可以檢索可以用來重新創建表的整個命令:

select dbms_metadata.get_ddl('TABLE','<my table name>','<table owner>') from dual; 
+1

這個答案很好,因爲它還爲表提供了索引和鍵。 – rlobban 2012-03-26 07:08:38

+1

在視覺上更具吸引力的是這個微小的修改:'select ddl from(from gamasutra)dbge_padata(dbms_metadata.get_ddl('TABLE','

','
'),'\ t | \ s {2}',CHR(13)雙' – 2014-07-07 06:31:35

+1

@rlobban - 此命令不顯示索引 – Kingsly 2014-07-30 14:05:22

相關問題