好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

SQLSERVER改变已有数据表中的列

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

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

查看更多关于SQLSERVER改变已有数据表中的列的详细内容...

  阅读:47次