如何在SQL表中重命名列?

10

如何通过MS SQL 2005的alter table来重命名列?

例如:

alter table tablename rename "old col name" to "new col name"
5个回答

21
sp_rename 'TableName.ColumnName', 'NewColumnName', 'COLUMN'

4
我希望不使用sp_rename来实现,如何进行修改?你不能。你可以在表中创建一个新列,使用新名称,将旧列的内容复制到新列中,然后删除旧列(需要两个ALTER和一个UPDATE),但除此之外,唯一的方法是使用sp_rename。这里是ALTER TABLE文档的链接documentation,您可以在其中查看可用的选项。更改不是其中之一。文档的这一部分涵盖了ALTER TABLE的ALTER COLUMN子句中可以执行的操作:
ALTER COLUMN column_name 
{ 
    [ type_schema_name. ] type_name [ ( { precision [ , scale ] 
        | max | xml_schema_collection } ) ] 
    [ COLLATE collation_name ] 
    [ NULL | NOT NULL ] 
| {ADD | DROP } { ROWGUIDCOL | PERSISTED | NOT FOR REPLICATION}
}
注意,没有提到新名称。因此,重申一遍,在SQL Server中不能使用ALTER TABLE重命名列。如果他们实现了标准语法(他们没有),它应该是ALTER TABLE [table_name] RENAME {COLUMN} [column_name] TO [new_column_name]。

更改表'Customer'的'newColumnName'列名为'[First_Name]',类型大小是多少?是否正确,MS SQL没有CHANGE关键字? - Penguen

2

请参考此处有关sp_rename的说明。

尽管我记得它并不总是可用。


@Phsika:不要以为你能做到,有时候也会让我感到沮丧。 - Hans Olsson

1

尝试使用以下代码重命名列:

EXEC sp_RENAME 'table_name.old_Column_name', 'new_Column_name', 'COLUMN'

0

对于MySQL,语法如下:

ALTER TABLE <db>.<table> CHANGE COLUMN <old_column_name> <new_column_name> <column_type>;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接