1. master資料庫中sysdatabases表(是SQLServer中所有的資料庫的庫名) :
如果你要查詢的是所有資料庫(使用者/系統):
select * from master..sysdatabases
如果你要查詢的是使用者資料庫,則使用:
select * from master..sysdatabases where dbid > 4
如果你要查詢的是系統資料庫,隻需要把where字句改為dbid < 4即可。
2.對應資料庫中sysobjects表(反應的是相應資料庫中所有的對象):
這個表的用處是最大的,因為它裡面存放的有:表(系統/使用者)、存儲過程(系統/使用者)、視圖、主鍵、外鍵等。
這裡就不一一說明了。
比如你SQLServer中有個資料庫名叫 test,如果要查詢該資料庫中的所有表對象:
select * from test..sysobjects where type = 'u' or type = 's'
這裡的type = 'u'是表示使用者表對象,type = 's'是系統表對象,怎樣單獨查詢使用者表對象或者系統表對象就不用說了吧。
如果你要查詢的是存儲過程當然也分了系統和使用者了:
這個是查詢資料庫中所有存儲過程
select * from test..sysobjects where type = 'p'
如果你要查詢的是使用者存儲過程則加上 and category <> 2 即可。
查詢系統存儲過程就不用說了吧(category = 2 誰不知道。。。)
查詢視圖與查詢存儲過程一樣,比如:
你查詢的是資料庫中所有視圖
select * from test..sysobjects where type = 'v'
如果你要查詢的是使用者視圖則加上 and category <> 2 即可。
其他的就不說了,就把 它們的type給大家說下:
type = ' PK' 表示主鍵。
type = ' D' 外鍵引用。
type = 'UQ' 唯一索引。
大概就這些了,有什麼不全的請大家補充,謝謝。
3.syscomments表
存放的是所有存儲過程、視圖等(還有什麼不清楚了。。。)。
這裡還是以test資料庫為例,這個表要和sysobjects表相結合用才可,比如查詢的是test資料庫中使用者存儲過程
的内容:
select a.name, b.* from test..sysobjects a,test..syscomments b where a.type = 'p' and a.category <> 2 and a.id = b.id
(語言有點通俗,呵呵,大家别見怪,相信大家都知道)
4 syscolumns表:
存放的什麼大家都知道吧(看名字就知道是列名,地球人都知道)
這裡還是以為test資料庫為例,下面的語句查詢的是test資料庫中所有使用者表的列資訊:
select a.name, b.* from test..sysobjects a,test..syscolumns b where a.type = 'u' and a.id = b.id
好了,不說了,差不多了,一般用得最多的就這幾個表了。。沒寫全的請大家補充下,如果有什麼不明白了,歡迎大家一起探讨。