系统表dbo.syscolumns

文章目录
  1. 1. ♠ 简介
  2. 2. ♠ 表结构
  3. 3. ♠ 使用
    1. 3.1. ♠ 增加列

♠ 简介

在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。

只有在 tempdb 内,每个临时对象才在该表中占一行。

♠ 表结构

字段 中文 类型 可空 缺省值 备注
name sysname 列名或过程参数的名称。
id int 该列所属的表对象 ID,或与该参数关联的存储过程 ID。
xtype tinyint systypes 中的物理存储类型。
typestat tinyint 。
xusertype smallint 扩展的用户定义数据类型 ID。
length smallint systypes 中的最大物理存储长度。
xprec tinyint 。
xscale tinyint 。
colid smallint 列或参数 ID。
xoffset smallint 。
bitpos tinyint 。
reserved tinyint 。
colstat smallint 。
cdefault int 该列的默认值 ID。
domain int 该列的规则或 CHECK 约束 ID。
number smallint 过程分组时(0 表示非过程项)的子过程号。
colorder smallint 。
autoval varbinary(255) 。
offset smallint 该列所在行的偏移量;如果为负,表示可变长度行。
status tinyint 用于描述列或参数属性的位图:
0x08 = 列允许空值
0x10 = 当添加 varchar 或 varbinary 列时,ANSI 填充生效。保留 varchar 列的尾随空格,保留 varbinary 列的尾随零
0x40 = 参数为 OUTPUT 参数
0x80 = 列为标识列。
type tinyint systypes 中的物理存储类型。
usertype smallint systypes 中的用户定义数据类型 ID。
printfmt varchar(255) 。
prec smallint 该列的精度级别。
scale int 该列的小数位数。
iscomputed int 表示是否已计算该列的标志:0 = 未计算、1 = 已计算。
isoutparam int 表示该过程参数是否是输出参数:1 = 真、0 = 假。
isnullable int 表示该列是否允许空值:1 = 真、0 = 假。

♠ 使用

♠ 增加列

表Table添加列C1。

字段 中文 类型 可空 缺省值 备注
C1 varchar(50) 否 ‘’ 新增的列
1
2
3
4
IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = object_id('[dbo].[Table]')
AND OBJECTPROPERTY(id, N'IsUserTable') = 1 AND name = 'C1')
ALTER TABLE [dbo].[Table] ADD C1 varchar(50) not null default ''
GO

(幽蛰 写于 2018.02.05)