例如:
修改(列名前 要有column关键字)
ALTER TABLE [USER] ALTER column [NAME] varchar(35) null
新增
ALTER TABLE [USER] ADD [PRICE] numeric(18, 8) NULL DEFAULT 0
ALTER TABLE
通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。
语法
ALTER TABLE table
{ [ ALTER COLUMN column_name
{ new_data_type [ ( precision [ , scale ] ) ]
[ COLLATE < collation_name > ]
[ NULL | NOT NULL ]
| {ADD | DROP } ROWGUIDCOL }
]
| ADD
{ [ < column_definition > ]
| column_name AS computed_column_expression
} [ ,...n ]
| [ WITH CHECK | WITH NOCHECK ] ADD
{ < table_constraint > } [ ,...n ]
| DROP
{ [ CONSTRAINT ] constraint_name
| COLUMN column } [ ,...n ]
| { CHECK | NOCHECK } CONSTRAINT
{ ALL | constraint_name [ ,...n ] }
| { ENABLE | DISABLE } TRIGGER
{ ALL | trigger_name [ ,...n ] }
}
< column_definition > ::=
{ column_name data_type }
[ [ DEFAULT constant_expression ] [ WITH VALUES ]
| [ IDENTITY [ ( seed , increment ) [ NOT FOR REPLICATION ] ] ]
]
[ ROWGUIDCOL ]
[ COLLATE < collation_name > ]
[ < column_constraint > ] [ ...n ]
< column_constraint > ::=
[ CONSTRAINT constraint_name ]
{ [ NULL | NOT NULL ]
| [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
[ WITH FILLFACTOR = fillfactor ]
[ ON { filegroup | DEFAULT } ]
]
| [ [ FOREIGN KEY ]
REFERENCES ref_table [ ( ref_column ) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[ NOT FOR REPLICATION ]
]
| CHECK [ NOT FOR REPLICATION ]
( logical_expression )
}
< table_constraint > ::=
[ CONSTRAINT constraint_name ]
{ [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
{ ( column [ ,...n ] ) }
[ WITH FILLFACTOR = fillfactor ]
[ ON { filegroup | DEFAULT } ]
]
| FOREIGN KEY
[ ( column [ ,...n ] ) ]
REFERENCES ref_table [ ( ref_column [ ,...n ] ) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[ NOT FOR REPLICATION ]
| DEFAULT constant_expression
[ FOR column ] [ WITH VALUES ]
| CHECK [ NOT FOR REPLICATION ]
( search_conditions )
}
参数
table
是要更改的表的名称。如果表不在当前数据库中或者不属于当前用户所拥有,可以显式指定数据库和所有者。
ALTER COLUMN
指定要更改给定列。如果兼容级别是 65 或小于 65,将不允许使用 ALTER COLUMN。
要更改的列不能是:
数据类型为 text、image、ntext 或 timestamp 的列。
表的 ROWGUIDCOL 列。
计算列或用于计算列中的列。
被复制列。
用在索引中的列,除非该列数据类型是 varchar、nvarchar 或 varbinary,数据类型没有更改,而且新列大小等于或者大于旧列大小。
用在由 CREATE STATISTICS 语句创建的统计中的列。首先用 DROP STATISTICS 语句删除统计。由查询优化器自动生成的统计会由 ALTER COLUMN 自动除去。
用在 PRIMARY KEY 或 [FOREIGN KEY] REFERENCES 约束中的列。
用在 CHECK 或 UNIQUE 约束中的列,除非用在 CHECK 或 UNIQUE 约束中的可变长度列的长度允许更改。
有相关联的默认值的列,除非在不更改数据类型的情况下允许更改列的长度、精度或小数位数。
column_name
是要更改、添加或除去的列的名称。对于新列,如果数据类型为 timestamp,column_name 可以省略。对于 timestamp 数据类型的列,如果未指定 column_name,将使用名称 timestamp。
new_data_type
是要更改的列的新数据类型。要更改的列的 new_data_type 应符合下列准