主鍵約束
成都創(chuàng)新互聯(lián)公司一直通過(guò)網(wǎng)站建設(shè)和網(wǎng)站營(yíng)銷(xiāo)幫助企業(yè)獲得更多客戶(hù)資源。 以"深度挖掘,量身打造,注重實(shí)效"的一站式服務(wù),以網(wǎng)站制作、成都網(wǎng)站建設(shè)、移動(dòng)互聯(lián)產(chǎn)品、營(yíng)銷(xiāo)型網(wǎng)站服務(wù)為核心業(yè)務(wù)。十余年網(wǎng)站制作的經(jīng)驗(yàn),使用新網(wǎng)站建設(shè)技術(shù),全新開(kāi)發(fā)出的標(biāo)準(zhǔn)網(wǎng)站,不但價(jià)格便宜而且實(shí)用、靈活,特別適合中小公司網(wǎng)站制作。網(wǎng)站管理系統(tǒng)簡(jiǎn)單易用,維護(hù)方便,您可以完全操作網(wǎng)站資料,是中小公司快速網(wǎng)站建設(shè)的選擇。
SELECT
tab.name AS [表名],
idx.name AS [主鍵名稱(chēng)],
col.name AS [主鍵列名]
FROM
sys.indexes idx
JOIN sys.index_columns idxCol
ON (idx.object_id = idxCol.object_id
AND idx.index_id = idxCol.index_id
AND idx.is_primary_key = 1)
JOIN sys.tables tab
ON (idx.object_id = tab.object_id)
JOIN sys.columns col
ON (idx.object_id = col.object_id
AND idxCol.column_id = col.column_id);
唯一約束
SELECT
tab.name AS [表名],
idx.name AS [約束名稱(chēng)],
col.name AS [約束列名]
FROM
sys.indexes idx
JOIN sys.index_columns idxCol
ON (idx.object_id = idxCol.object_id
AND idx.index_id = idxCol.index_id
AND idx.is_unique_constraint = 1)
JOIN sys.tables tab
ON (idx.object_id = tab.object_id)
JOIN sys.columns col
ON (idx.object_id = col.object_id
AND idxCol.column_id = col.column_id);
外鍵約束
select
oSub.name AS [子表名稱(chēng)],
fk.name AS [外鍵名稱(chēng)],
SubCol.name AS [子表列名],
oMain.name AS [主表名稱(chēng)],
MainCol.name AS [主表列名]
from
sys.foreign_keys fk
JOIN sys.all_objects oSub
ON (fk.parent_object_id = oSub.object_id)
JOIN sys.all_objects oMain
ON (fk.referenced_object_id = oMain.object_id)
JOIN sys.foreign_key_columns fkCols
ON (fk.object_id = fkCols.constraint_object_id)
JOIN sys.columns SubCol
ON (oSub.object_id = SubCol.object_id
AND fkCols.parent_column_id = SubCol.column_id)
JOIN sys.columns MainCol
ON (oMain.object_id = MainCol.object_id
AND fkCols.referenced_column_id = MainCol.column_id)
Check約束
SELECT
tab.name AS [表名],
chk.name AS [Check約束名],
col.name AS [列名],
chk.definition
FROM
sys.check_constraints chk
JOIN sys.tables tab
ON (chk.parent_object_id = tab.object_id)
JOIN sys.columns col
ON (chk.parent_object_id = col.object_id
AND chk.parent_column_id = col.column_id)
microsoft sql server management studio中展開(kāi)對(duì)應(yīng)表下面的列信息不就可以看到列的詳細(xì)信息了么?當(dāng)然這是可以的,但這里我們主要講的時(shí)如何利用sql語(yǔ)句來(lái)查詢(xún)指定表的列信息。
利用sql語(yǔ)句來(lái)查詢(xún)列信息,就是要用到系統(tǒng)視圖sys.columns,這個(gè)視圖記錄了數(shù)據(jù)庫(kù)中所有表,視圖,表值函數(shù)等的所有列信息。我們可以利用語(yǔ)句select * from sys.columns來(lái)查看這個(gè)視圖返回的信息。
sys.columns返回的列比較多,大部分情況下很多列的信息我們可能用不到,下面我們只解釋一下比較常用的列的信息。
1,object_id--這個(gè)列是比較重要的,它是返回當(dāng)前列所屬表的ID。利用它,我們就可以查詢(xún)指定表的所有列信息,比如下面的sql語(yǔ)句是查詢(xún)表table1的所有列信息。
select * from sys.columns where object_id=object_id('table1')
2,name--該列的列名。
3,column_id--該列在數(shù)據(jù)庫(kù)中的ID,注意,數(shù)據(jù)庫(kù)中任何對(duì)象的ID都是唯一的。
4,system_type_id--該列的類(lèi)型的ID,和下面max_length,precision,scale三列一起可以來(lái)舉個(gè)示例。
5,max_length--該列的最大長(zhǎng)度
6,precisionp--如果這列是數(shù)值列,那么這是該列的精度,否則就是0
7,scale--如果這列是數(shù)值列,那么這就是列的小數(shù)位數(shù),否則就是0
system_type_id,max_length,precision,scale四列結(jié)合系統(tǒng)視圖sys.types一起我們來(lái)舉個(gè)示例。
如果我們要查詢(xún)表table1的所有列,及列的類(lèi)型,列的精度,列的小數(shù)位數(shù),sql語(yǔ)句如下:
select a.name,b.name,a.max_length,a.precision,a.scale
from sys.columns a left join sys.types b on a.user_type_id=b.user_type_id
where a.object_id=object_id('table1')
8,is_nullable--該列是否可以為null
9,is_identity--該列是否是標(biāo)識(shí)列
10,is_computed--該列是否是計(jì)算列。利用該列,我們也就可以查詢(xún)某個(gè)表的所有計(jì)算列了,比如我們要查詢(xún)表table1中的所有計(jì)算列,sql語(yǔ)句如下:
select * from sys.columns where object_id=object_id('table1') and is_computed=1
sys.columns視圖中常用的列就是這10列了,其它列的信息大家可以到SQLServer 2005聯(lián)機(jī)叢書(shū)中查詢(xún)
--讀取庫(kù)中的所有表名
select name from sysobjects where xtype='u'
--讀取指定表的所有列名
select name from syscolumns where id=(select max(id) from sysobjects where xtype='u' and name='表名')
--通過(guò)如下語(yǔ)句得到當(dāng)前Sql server中所有的數(shù)據(jù)的名稱(chēng):
use master
select [name] from [sysdatabases] order by [name]
go
-- 查詢(xún)數(shù)據(jù)庫(kù)中的所有用戶(hù)表
use [DBname]
select [id], [name] from [sysobjects] where [type] = 'u' order by [name]
--通過(guò)上面的查詢(xún)的id,可以查出這個(gè)表中所有的字段,例如我們查詢(xún)BaseData表中所有的字段,就可以通過(guò)下面的語(yǔ)句查出:
select [name] from [syscolumns] where [id] = 2087000699 order by [colid]
go
你所說(shuō)的問(wèn)題的語(yǔ)句是:
select [name], * from [syscolumns] order by [id]