如何獲得資料庫裡所有表的名字
平時我們操作比較多的都是表裡的資料,也許突然有一天會需要把所有表的名字都列出來看一看——比如,你的論壇是按每個版塊乙個表來管理的,這時候你要在首頁列出各版塊的名字。應該怎麼辦呢?
肯定得用select吧……但我們平時使用select操作的資料都是表裡的資料,表的名字並不是表的資料,這可怎麼辦呢?
你可能會想:「功能強大的sql server不會連這麼簡單的功能都實現不了吧?一定會把所有表的名字儲存在某個表裡……」注意啦!在這兒我要小小地偷換一下概念了——檢視(view)也算是一種「表」,只不過它是由固定查詢形成的一種「虛擬表」。
ok,你猜對啦!由sql server管理的每個資料庫裡都有乙個名為sysobjects的檢視,它是system級別的,所以它的全限定名是——sys.sysobjects
你可能又會問:「為什麼不是sys.tables而是sys.objects呢?」問的好!因為這張表裡儲存的可不光是資料庫裡的表,它儲存的是乙個資料庫中所有的「物件」——雜七雜八包括了表的主鍵、儲存過程、觸發器等等,一共是24種——表(table,確切地說是「使用者自定義表」)只是這24種物件中的一種。
剩下的事情……吼吼……
執行下面的查詢語句,可以得到所有包含在sys.sysobjects檢視裡的資料
adventureworks
select
*from
sys.sysobjects
go 得出資料後,請注意名為type的列——這一列標明了物件的型別,也就是前面提到的24種。在這裡,我用乙個**把它們列出來:
af = aggregate function (clr)
c = check constraint
d = default (constraint or stand-alone)
f = foreign key constraint
fn = sql scalar function
fs = assembly (clr) scalar function
ft = assembly (clr) table-valued function
if = sql inline table-valued function
it = internal table
p = sql stored procedure
pc = assembly (clr) stored procedure
pk = primary key constraint
r = rule (old-style, stand-alone)
rf = replication-filter-procedure
s = system base table
sn = synonym
sq = service queue
ta = assembly (clr) dml trigger
tf = sql table-valued-function
tr = sql dml trigger
u = table (user-defined)
uq = unique constraint
v = view
x = extended stored procedure
ok,我們要得到名稱的表(使用者自定義表)就是型別為「u」的物件;而sys.objects的型別為「s」。所以,為了達到我們的最終目的,sql語句應該是——
adventureworks
select
name
from
sys.sysobjects
where
type='
u'go
下面我再給出一段用c#實現的**:
//*****===水之真諦
>*****===//
//====以人為本,關注民生
>====//
// //
using
system;
using system.data.sqlclient;
namespace sqlsample}}
}執行後得到的截圖是:
嗯~~~小問題也要認真對待~~~細節體現品質。我要把這個問題加到面試題裡去,呵呵~~~
如何獲得資料庫裡所有表的名字
平時我們操作比較多的都是表裡的資料,也許突然有一天會需要把所有表的名字都列出來看一看 比如,你的論壇是按每個版塊乙個表來管理的,這時候你要在首頁列出各版塊的名字。應該怎麼辦呢?肯定得用select吧 但我們平時使用select操作的資料都是表裡的資料,表的名字並不是表的資料,這可怎麼辦呢?你可能會想...
如何獲得資料庫裡所有表的名字(SQL C )
2007年07月27日 16 01 00 如何獲得資料庫裡所有表的名字 平時我們操作比較多的都是表裡的資料,也許突然有一天會需要把所有表的名字都列出來看一看 比如,你的論壇是按每個版塊乙個表來管理的,這時候你要在首頁列出各版塊的名字。應該怎麼辦呢?肯定得用select吧.但我們平時使用select操...
如何獲得資料庫裡所有表的名字(SQL C )
如何獲得資料庫裡所有表的名字 平時我們操作比較多的都是表裡的資料,也許突然有一天會需要把所有表的名字都列出來看一看 比如,你的論壇是按每個版塊乙個表來管理的,這時候你要在首頁列出各版塊的名字。應該怎麼辦呢?肯定得用select吧 但我們平時使用select操作的資料都是表裡的資料,表的名字並不是表的...