修改列属性

表中每一列都有一组属性,例如名称、数据类型、为空性和数据长度。列的所有属性构成表中列的定义。

列的数据类型

如果可以将现有列中的现有数据隐式转换为新的数据类型,则可以更改该列的数据类型。有关详细信息,请参阅ALTER TABLE (Transact-SQL)

列的数据长度

选择数据类型时,将自动定义长度。只能增加或减少具有 binary、char、nchar、varbinary、varchar 或 nvarchar 数据类型的列的长度属性。对于其他数据类型的列,其长度由数据类型确定,无法更改。如果新指定的长度小于原列长度,则列中超过新列长度的所有值将被截断,而无任何警告。无法更改用 PRIMARY KEY 或 FOREIGN KEY 约束定义的列的长度。

列的精度

数值列的精度是选定数据类型所使用的最大位数。非数值列的精度指最大长度或定义的列长度。

除 decimal 和 numeric 外,所有数据类型的精度都是自动定义的。如果要重新定义那些具有 decimal 和 numeric 数据类型的列所使用的最大位数,则可以更改这些列的精度。SQL Server 数据库引擎不允许更改不具有这些指定数据类型之一的列的精度。

列的小数位数

numeric 或 decimal 列的小数位数是指小数点右侧的最大位数。选择数据类型时,列的小数位数默认设置为 0。对于含有近似浮点数的列,因为小数点右侧的位数不固定,所以未定义小数位数。如果要重新定义小数点右侧可显示的位数,则可以更改 numeric 或 decimal 列的小数位数。

列的为空性

可以将列定义为允许或不允许为空值。默认情况下,列允许为空值。仅当现有列中不存在空值且没有为该列创建索引时,才可以将该列更改为不允许为空值。若要使含有空值的现有列不允许为空值,请执行下列步骤:

  1. 添加具有 DEFAULT 定义的新列,插入有效值而不是 NULL。

  2. 将原有列中的数据复制到新列。

  3. 删除原有列。

可以将不允许为空值的现有列更改为允许为空值,除非为该列定义了 PRIMARY KEY 约束。

稀疏列和列集

稀疏列是包含表中大多数行的 null 值的列。当一个列中有 20% 到 40% 的值都将为 NULL 时,应考虑使用稀疏列。稀疏列是对 null 值采用优化的存储方式的普通列。有关详细信息,请参阅使用稀疏列

使用稀疏列的表可以指定一个列集以返回表中的所有稀疏列。列集是一种非类型化的 XML 表示形式,它将表的所有稀疏列组合成为一种结构化的输出。列集与计算列的相似之处在于,列集并不是物理地存储在表中。有关详细信息,请参阅使用列集

设置列属性

查看列属性

重命名列