一、常用系統(tǒng)表:
1.sysobjects表:用于存儲(chǔ)在數(shù)據(jù)庫(kù)內(nèi)創(chuàng)建的每個(gè)對(duì)象(約束、默認(rèn)值、日志、規(guī)則、存儲(chǔ)過(guò)程等)信息的系統(tǒng)表;
2.syscolumns表:用于存儲(chǔ)每個(gè)表和視圖中的列信息及存儲(chǔ)過(guò)程中的參數(shù)信息的系統(tǒng)表;
二、常用系統(tǒng)表字段說(shuō)明:
1.sysobjects表
a.name:對(duì)象名
b.id:對(duì)象標(biāo)識(shí)
c.xtype:對(duì)象類型,包含的值:
C = CHECK約束
D = 默認(rèn)值或DEFAULT約束
F =
FOREIGN KEY約束
L = 日志
FN = 標(biāo)量函數(shù)
IF = 內(nèi)嵌表函數(shù)
P = 存儲(chǔ)過(guò)程
PK =
PRIMARY KEY 約束(類型是 K)
RF = 復(fù)制篩選存儲(chǔ)過(guò)程
S = 系統(tǒng)表
TF = 表函數(shù)
TR = 觸發(fā)器
U = 用戶表
UQ =
UNIQUE 約束(類型是 K)
V = 視圖
X = 擴(kuò)展存儲(chǔ)過(guò)程
d.type:對(duì)象類型,與xtype一致
2.syscolumns表
a.name:列名或過(guò)程參數(shù)的名稱;
b.id:該列所屬的表對(duì)象 ID,或與該參數(shù)關(guān)聯(lián)的存儲(chǔ)過(guò)程 ID;
c.cdefault:該列的默認(rèn)值 ID;
d.domain:該列的規(guī)則或 CHECK 約束 ID;
e.status:用于描述列或參數(shù)屬性的位圖:
0x08 = 列允許空值;(換算為十進(jìn)制值為:8)
0x10 = 當(dāng)添加varchar或varbinary列時(shí),ANSI
填充生效.保留varchar列的尾隨空格,保留varbinary列的尾隨零; (換算為十進(jìn)制值為:16)
0x40 = 參數(shù)為OUTPUT參數(shù); (換算為十進(jìn)制值為:64)
0x80 = 列為標(biāo)識(shí)列; (換算為十進(jìn)制值為:128)
f.type:systypes中的物理存儲(chǔ)類型;
g.usertype:systypes中的用戶定義數(shù)據(jù)類型 ID;
h.iscomputed:表示是否已計(jì)算該列的標(biāo)志:
0 = 未計(jì)算;
1 = 已計(jì)算;
i.isoutparam:表示該過(guò)程參數(shù)是否是輸出參數(shù):
1 = 真;
0 = 假;
j.isnullable:表示該列是否允許空值:
1 = 真;
0 = 假;
三、相關(guān)sql語(yǔ)句:
1.判斷是否為自增字段:
方法一:SELECT COLUMNPROPERTY(OBJECT_ID('表名'), '列名', 'IsIdentity') AS IsIdentity
方法二:SELECT status FROM syscolumns,sysobjects WHERE syscolumns.id=sysobjects.id AND sysobjects.name='表名稱' AND syscolumns.name='字段名稱'; 看查詢出的結(jié)果值是否為128.