SQLSERVER改变已有数据表中的列
SQLSERVER改变已有数据表中的列
包括改变字段的位置,增加列,更改列名称,更改列数据类型,列长度,增加标识列,增加主键,约束
上面这些在做数据库升级或者迁移的时候很多时候都要用到的
1.改变字段位置,只需要在表设计器中拖动字段到其他地方



2.添加新列
例如为adventurworks数据库中employees表添加备注列(Comment),数据类型为字符型(变长型,长度50字符),该列允许为空
1 ALTER TABLE table_name 2 ADD column_name data_type NULL
1 USE [AdventureWorks] 2 GO 3 ALTER TABLE [HumanResources].[Employee] 4 ADD Comment CHAR(50) NULL 5 GO
3.更改列名称
更改列名称不会影响列中的数据,但如果其他数据库对象引用了已修改的列,则用户必须同时做相应的修改
1 --将表test13中的列名由e重命名为x 2 --语法:exec sp_rename '表名.原列名','新列名','column'; 3 USE [pratice] 4 GO 5 exec sp_rename 'dbo.test13.e','x','column';
4.更改列的数据类型以及长度
当表中有数据的时候,要注意转换的时候的长度和精度,以及转换的规则
1 --语法 2 ALTER TABLE table_name 3 ALTER COLUMN column_name data_type
1 --例如:将Employees表中的备注列Remark的数据类型更改为字符型(变长型,长度为255字符) 2 USE [AdventureWorks] 3 GO 4 ALTER TABLE [HumanResources].[Employee] 5 ALTER COLUMN Remark VARCHAR(255)
5.增加标识列
一个表只能有一个列定义为IDENTITY属性,而且该列必须以tinyint,smallint,int,bigint,numeric,decimal数据类型定义,标识符列
不允许空值。按需指定种子和增量值,二者默认值均为1。
1 --给Employees表添加一个员工编号(EmployeesCode)列,并将其设置为标识列 2 USE [AdventureWorks] 3 GO 4 ALTER TABLE [HumanResources].[Employee] 5 ADD EmployeesCode INT IDENTITY(1,1) NOT NULL
6.定义主键
每张表都应该有一个主键,主键可以由一列或者多列组成(复合主键),标识数据的唯一性,提高查询和排序速度
如果是复合主键,那么这些列的里的数据都不能重复,不单只是某一列
1 --使用TSQL语句为表定义主键约束保证数据完整性 2 --为Employees表添加主键约束,将EmployeeID,LoginID,ManagerID列设置为复合主键 3 USE [AdventureWorks] 4 GO 5 ALTER TABLE [HumanResources].[Employee] 6 ADD CONSTRAINT PK_EMPLOYEES 7 PRIMARY KEY CLUSTERED([EmployeeID],[LoginID],[ManagerID])
上个星期在客户那里因为要修改主键,忘记了TSQL怎麽写,要看着SSMS来设置,感觉慢了,所以写TSQL是最快的个人感觉
当然有添加也会有删除啦 把ADD 改为DROP
1 USE [AdventureWorks] 2 GO 3 ALTER TABLE [HumanResources].[Employee] 4 DROP CONSTRAINT PK_EMPLOYEES
7.删除列
当表中的某些列确定不再需要时,可以删除该列。在删除前,必须首先删除基于该列的索引和约束
1 --语法 2 ALTER TABLE table_name 3 DROP COLUMN [COLUMN_NAME]
1 --删除Employees表的Lastname列 2 USE [AdventureWorks] 3 GO 4 ALTER TABLE [HumanResources].[Employee] 5 DROP COLUMN [LastName]
这篇文章非常基础,我也只是做一些笔记 o(∩_∩)o
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)