除了向表中添加新列,还可以使用ALTER TABLE来修改既有列的定义。
实现这个操作的语法如下:
ALTER TABLE table_name
ALLTER COLUMN column_name
[type_name] [NULL | NOT NULL][COLLATE collation_name]
参 数 | 描 述 |
Table_name | 包含需要修改的列的表名 |
Column_name | 需要修改的列名 |
type_name | 需要修改的列的数据类型 |
NULL | NOT NULL | 需要修改的可空性选项 |
COLLATE collation_name | 需要修改的列排序规则(对于基于字符的数据类型)。排序规则定义了3个设置;用于保存非Unicode字符数据类型的代码页、非Unicode字符数据类型的排列次序以及Unicode数据类型的排列次序。 |
这个示例演示如何改变既有表列的可空性和数据类型。HumanResources.Employee表中的Gender列最初是NOT NULL,并且LoginID列的初始数据类型是nvarchar(256);
USE AdventureWorks
GO
--使Gender列可空
ALTER TABLE HumanResources.Employee
ALTER COLUMN Gender nchar(1) NULL
--将nvarchar(256)扩展为nvarchar(300)
ALTER TABLE humanResources.Employee
ALTER COLUMN LoginID nvarchar(300) NOT NULL
这种修改列的方法有一些局限性。例如,除非列数据类型是varchar、nvarchar或varbinary,否则不能修改用在索引中的列——即使那样,数据类型的新大小必须比原来的大小大。也不能对有主键或者外键约束的列使用ALTER COLUMN。