擷取ORACLE 表欄位,表名,以及主鍵之類等等的資訊

來源:互聯網
上載者:User
擷取表名:

 Oracle的user_talbes用於記錄了使用者表資訊。

select * from user_tables

 擷取某個表的欄位:

USER_TAB_COLS中記錄了使用者表的列資訊。下面是別人寫的:

SELECT USER_TAB_COLS.TABLE_NAME as 表名,USER_TAB_COLS.COLUMN_NAME as 列名 , USER_TAB_COLS.DATA_TYPE as 資料類型, USER_TAB_COLS.DATA_LENGTH as 長度, USER_TAB_COLS.NULLABLE as 是否為空白,USER_TAB_COLS.COLUMN_ID as 列序號,user_col_comments.comments as 備忘 FROM USER_TAB_COLS inner join user_col_comments on user_col_comments.TABLE_NAME=USER_TAB_COLS.TABLE_NAME and user_col_comments.COLUMN_NAME=USER_TAB_COLS.COLUMN_NAME

 

如何從Oracle、中取得表的注釋

user_tab_comments;表注釋

        user_col_comments;表欄位注釋

        以上兩個只能擷取自己使用者的表的注釋資訊,如果要訪問自己能夠訪問的其他使用者的表,則需要使用:

        all_tab_comments;表注釋

        all_col_comments;表欄位注釋

        當然,如果有DBA許可權,則可以使用

        dba_tab_comments;表注釋

        dba_col_comments;表欄位注釋

        dba*和all*最好指定owner條件。user*沒有該欄位

        user_tab_comments;表注釋

        user_col_comments;表欄位注釋

        以上兩個只能擷取自己使用者的表的注釋資訊,如果要訪問自己能夠訪問的其他使用者的表,則需要使用:

        all_tab_comments;表注釋

        all_col_comments;表欄位注釋

        當然,如果有DBA許可權,則可以使用

        dba_tab_comments;表注釋

        dba_col_comments;表欄位注釋

        dba*和all*最好指定owner條件。user*沒有該欄位

 

 

關於Oracle與SqlServer中擷取所有欄位、主鍵、外鍵的sql語句 標籤: 主鍵  外鍵  sql  
最近在做的社會網路分析原型系統需要將多種不同資料庫中的表的欄位、主外鍵資訊讀出,實現這些功能費了不少功夫,記錄下來以備用吧
Oracle:
查詢某個表中的欄位名稱、類型、精度、長度、是否為空白
select COLUMN_NAME,DATA_TYPE,DATA_PRECISION,DATA_SCALE,NULLABLE 
from user_tab_columns 
where table_name ='YourTableName'
查詢某個表中的主鍵欄位名
select col.column_name 
from user_constraints con,  user_cons_columns col 
where con.constraint_name = col.constraint_name 
and con.constraint_type='P' 
and col.table_name = 'YourTableName'
查詢某個表中的外鍵欄位名稱、所參考資料表名、所應用欄位名
select distinct(col.column_name),r.table_name,r.column_name 
from 
user_constraints con,
user_cons_columns col, 
(select t2.table_name,t2.column_name,t1.r_constraint_name 
 from user_constraints t1,user_cons_columns t2 
 where t1.r_constraint_name=t2.constraint_name 
 and t1.table_name='YourTableName'
 ) r 
where con.constraint_name=col.constraint_name 
and con.r_constraint_name=r.r_constraint_name 
and con.table_name='YourTableName'

SQLServer中的實現:
欄位:
SELECT c.name,t.name,c.xprec,c.xscale,c.isnullable 
FROM systypes t,syscolumns c 
WHERE t.xtype=c.xtype 
AND c.id = (SELECT id FROM sysobjects WHERE name='YourTableName') 
ORDER BY c.colid

主鍵(參考SqlServer系統預存程序sp_pkeys):
select COLUMN_NAME = convert(sysname,c.name)               
from                                                       
sysindexes i, syscolumns c, sysobjects o                   
where o.id = object_id('[YourTableName]')                  
and o.id = c.id                                            
and o.id = i.id                                            
and (i.status & 0x800) = 0x800                             
and (c.name = index_col ('[YourTableName]', i.indid,  1) or     
     c.name = index_col ('[YourTableName]', i.indid,  2) or     
     c.name = index_col ('[YourTableName]', i.indid,  3) or     
     c.name = index_col ('[YourTableName]', i.indid,  4) or     
     c.name = index_col ('[YourTableName]', i.indid,  5) or     
     c.name = index_col ('[YourTableName]', i.indid,  6) or     
     c.name = index_col ('[YourTableName]', i.indid,  7) or     
     c.name = index_col ('[YourTableName]', i.indid,  8) or     
     c.name = index_col ('[YourTableName]', i.indid,  9) or     
     c.name = index_col ('[YourTableName]', i.indid, 10) or     
     c.name = index_col ('[YourTableName]', i.indid, 11) or     
     c.name = index_col ('[YourTableName]', i.indid, 12) or     
     c.name = index_col ('[YourTableName]', i.indid, 13) or     
     c.name = index_col ('[YourTableName]', i.indid, 14) or     
     c.name = index_col ('[YourTableName]', i.indid, 15) or     
     c.name = index_col ('[YourTableName]', i.indid, 16)       
     )

外鍵:
select t1.name,t2.rtableName,t2.name 
from 
(select col.name, f.constid as temp 
 from syscolumns col,sysforeignkeys f 
 where f.fkeyid=col.id 
 and f.fkey=col.colid 
 and f.constid in 
 ( select distinct(id)  
   from sysobjects 
   where OBJECT_NAME(parent_obj)='YourTableName' 
   and xtype='F' 
  ) 
 ) as t1 , 
(select OBJECT_NAME(f.rkeyid) as rtableName,col.name, f.constid as temp 
 from syscolumns col,sysforeignkeys f 
 where f.rkeyid=col.id 
 and f.rkey=col.colid 
 and f.constid in 
 ( select distinct(id) 
   from sysobjects 
   where OBJECT_NAME(parent_obj)='YourTableName' 
   and xtype='F' 
 ) 
) as t2 
where t1.temp=t2.temp

摘自:愛我所愛的,為.net技術癡狂。 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.