如何獲得資料庫裡所有表的名字(SQL C )

2021-08-29 13:12:50 字數 2212 閱讀 7381

如何獲得資料庫裡所有表的名字

平時我們操作比較多的都是表裡的資料,也許突然有一天會需要把所有表的名字都列出來看一看——比如,你的論壇是按每個版塊乙個表來管理的,這時候你要在首頁列出各版塊的名字。應該怎麼辦呢?

肯定得用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操作的資料都是表裡的資料,表的名字並不是表的...