1,判断数据表列是否存在
使用COL_LENGTH(表名,列名)
IF COL_LENGTH('dbo.WEB_ResourceKind',N'IsAppMsgPush') IS NULL
2,新增标识列
Alter Table 表名 Add 列名 列类型 IDENTITY(1,1)【起始值,递增值】constraint 约束名primary key (主键)【constraint 约束名primary key (主键)可选】
已有标识列 或 已有主键 均不能再添加,需要删除约束,删除约束见4.4
alter table WEB_ResourceKind Add NewID IDENTITY(1,1)
--或者
alter table WEB_ResourceKind Add NewID IDENTITY(1,1) constraint XXX primary key (NewID)
3,新增普通列
Alter Table 表名 Add 列名 列类型 NOT NULL【可选1】 Default(X)【可选2】 With Values【可选3】
可选1:可否为空,不加默认 可为空
可选2:默认值
可选3:如果不加,则现有数据不会设置为默认值、加上则现有数据会设置为默认值
alter table WEB_ResourceKind add IsAppMsgPush tinyint not null default(1) with values
4,修改列
4.1 修改列名
exec sp_rename "表名.列名","新列名","column"
会有个提示,忽略即可
exec sp_rename "WEB_ResourceKind.IsAppMsgPush","CanAppMsgPush","column";
4.2 修改列类型
Alter Table 表名 Alter Column 列名 类型 Not Null【Not Null可选】
alter table WEB_ResourceKind alter column IsAppMsgPush bigint
4.3 新增列默认值
Alter Table 表名 Add Default 默认值 For 列名
alter table WEB_ResourceKind alter column IsAppMsgPush bigint
4.4 修改列默认值
先查找约束名,再删除约束,然后再添加新默认值
还有个存储过程 exec sp_helpconstraint @objname=表名,这个可以查出所有关于表的约束,也可以尝试使用
select c.name 约束名 from sysconstraints a inner join syscolumns b on a.colid=b.colid
inner join sysobjects c on a.constid=c.id where a.id=object_id('表名') and b.name=N'列名'
alter table 表名 drop constraint 约束名
alter table 表名 add default (新默认值) for 列名 with values --【with values可选】
5,删除列
Alter Table 表名 Drop Column 列名
alter table WEB_ResourceKind drop column IsAppMsgPush
列如果存在约束,删除不了,参考4.4,找到约束名,删除之后,再删除列