一、常用系统表:
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.