作者:手机用户2602924833 | 来源:互联网 | 2023-07-16 09:25
修改数据列在开发和生产过程中,列名的拼写错误或者列名的更改是需要操作数据表的,大多数情况下都是不需要修改的.以下几种情况下我们并不能直接修改数据列:1、用于索引的列。2、用于CHECK
修改数据列
在开发和生产过程中,列名的拼写错误或者列名的更改是需要操作数据表的,大多数情况下都是不需要修改的.
以下几种情况下我们并不能直接修改数据列:
1、用于索引的列。
2、用于 CHECK、FOREIGN KEY、UNIQUE 或 PRIMARY KEY 约束的列。
3、与默认值(由 DEFAULT 关键字定义)相关联的列,或绑定到默认对象的列。
4、绑定到规则的列。
使用SSMS数据库管理工具修改列
1、连接数据库,打开要修改的数据库,选择数据表-》右键点击-》选择设计。
![](https://www.#.com/imgs/3/3/2/1/30/3cb07caaea97ac54d03293f289af6988.jpe)
2、在新打开的窗口视图中-》点击要修改的行-》可以修改列名、列类型、是否可空、属性等-》修改完成点击保存按钮(或者ctrl+s)。
![](https://www.#.com/imgs/2/2/2/6/12/c7ce1a7000e2d778ca1d1d4893b2b7bf.jpe)
使用T-SQL脚本修改列
修改列名
语法:exec sp_rename 表明.旧列名,新列名;
示例:exec sp_rename '[test1].height6','height7';
![](https://www.#.com/imgs/3/2/9/9/73/14deb8573f5b132106bb52dca625a5b8.jpe)
![](https://www.#.com/imgs/2/9/4/7/15/fdf16d496c40dfaab1e6f5f4486c08e4.jpe)
修改列数据类型
语法:alter table 数据库名.dbo.表名 alter column 列名 类型 [约束];
示例:alter table [testss].dbo.[test1] alter column height7 int null;
![](https://www.#.com/imgs/2/0/2/4/15/6f37d13f575572016167e4d3d07e6223.jpe)
![](https://www.#.com/imgs/4/1/1/7/41/7552e6d54b26ffeb93d354bd223f03a4.jpe)
修改列是否可空
语法:alter table 数据库名.dbo.表名 alter column 列名 类型 约束;
示例:alter table [testss].dbo.[test1] alter column height7 int not null;
![](https://www.#.com/imgs/6/7/7/2/50/3f5a1f4a51746c249953fb7ce9e5e2c3.jpe)
![](https://www.#.com/imgs/7/0/5/0/74/66a50852b1d50d6514c9cabbc8b3ce87.jpe)
修改列默认值
如果默认值不存在
语法:alter table 数据库名.dbo.表名 add constraint 约束名 default 默认值 for 列名;
示例:alter table [testss].dbo.[test1] add constraint df_h default 1 for height7;
![](https://www.#.com/imgs/7/7/4/7/7/eb6d7b2f41e10e8eff11c7beb950c277.jpe)
![](https://www.#.com/imgs/3/2/7/5/18/1f6c804513613bbbfca62526966aed24.jpe)
如果默认值存在
语法:
--第一步判断默认值否存在,如果存在就删除,如果不存在则不删除
if exists (select * from sys.check_constraints where object_id = object_id(默认值约束名) and parent_object_id = object_id(表名))
alter table 表名 drop constraint 默认值约束名
--第二步添加默认值
alter table 表名 add constraint 约束名 default 默认值 for 列名;
示例:
--第一步判断约束是否存在,如果存在就删除,如果不存在则不删除
if exists (select * from sys.check_constraints where object_id = object_id('df_h') AND parent_object_id = object_id('[testss].dbo.[test1]'))
alter table [testss].dbo.[test1] drop constraint df_h
--第二步添加默认值
alter table [testss].dbo.[test1] add constraint df_h default 2 for height7;
![](https://www.#.com/imgs/4/4/0/6/57/c4e2d8ca8ac34528a8307341db7ab49e.jpe)
总结
在开发或者生产数据库中,数据列一经建好,不要轻易改动,随意改动可能会引起数据库的级联操作失败和代码错误。