SQL SERCER 表字段修改 总结

这两天研究了SQL SERVER的字段修改.有一些心得,写出来为日后参考:
1,删除字段: ALTER TABLE [tablename] DROP COLUMN [fieldname]
删除的时候该字段必须没有被任何外键引用,没有任何约束.
2,删除约束: ALTER TABLE [tablename] DROP CONSTRAINT constraint_name
删除约束是约束名不可加单引号.
3,增加默认值约束: ALTER TABLE [tablename] ADD CONSTRAINT constraint_name DEFAULT 'default_value' FOR [fieldname]
用FOR关键字指定为那个字段增加默认值约束.
4,修改字段: ALTER TABLE [tablename] ALTER COLUMN [fieldname] new_datatype isnull
要更改的列的 new_data_type 应符合下列准则:
A,原来的数据类型必须可以隐式转换为新数据类型。(发现,如果原来的数据类型是text的就再也不能修改数据类型了)
B,new_data_type 类型不能为 timestamp。
C,对 ALTER COLUMN,ANSI 空默认值始终打开;如果没有指定,列将可为空。
D,对 ALTER COLUMN,ANSI 填充始终打开。
E,如果要更改的列是标识列,new_data_type 必须是支持标识属性的数据类型。
F,将忽略SET ARITHABORT的当前设置。ALTER TABLE语句的行为如同ARITHABORT选项为ON时一样。
G,只有列中不包含空值时,ALTER COLUMN 中才可指定 NOT NULL。
将空值更新为非空值:UPDATE [tablename] SET [nullfield] = 'some_value' WHERE [nullfield] IS NULL

5,增加带默认值约束的字段:
ALTER TABLE [tablename] ADD [new_field_name] new_datatype isnull CONSTRAINT constraint_name DEFAULT 'default_value' WITH VALUES
A, 'WITH VALUES' 可以不写,写的话,就用该DEFAULT约束指定的值,填充在所有已有记录新加的字段上,否则使用'NULL'填充在所有已有记录新加的字段上.
B, 添加到表中的新列要么允许空值,要么必须指定默认值。
6,使用sp_rename存储过程修改字段名称:sp_rename @objname = '[tablename].[fieldname]' , @newname = 'newfieldname' ,@objtype = 'COLUMN'
参数objname必须指定为[表名].[欲修改的字段名]这样的形式,要修改字段名的话objtype就必须指定为'COLUMN'.值得注意的是newname这个参数中的字段名不可以使用"[]",但可以在其中使用空格,不过在以后使用这个字段名时要为其加上"[]",如果不小心使用"[]"的话字段名称会被修改成[[newfieldname]]]这样的怪样子的.这个一定要记住了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值