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