如何使用SQL重命名数据库表中的列?

时间:2008-10-06 14:44:42

标签: sql sql-server database rename

如果我希望简单地使用SQL在SQL数据库中重命名列(不改变其类型或约束,只是其名称),我该怎么做?或者是不可能的?

这适用于声称支持SQL的任何数据库,我只是在寻找一个特定于SQL的查询,无论实际的数据库实现如何都可以使用。

11 个答案:

答案 0 :(得分:110)

特别是对于SQL Server,请使用sp_rename

USE AdventureWorks;
GO
EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
GO

答案 1 :(得分:92)

在PostgreSQL(以及许多其他RDBMS)上,您可以使用常规ALTER TABLE语句来执行此操作:

=> SELECT * FROM Test1;
 id | foo | bar 
----+-----+-----
  2 |   1 |   2

=> ALTER TABLE Test1 RENAME COLUMN foo TO baz;
ALTER TABLE

=> SELECT * FROM Test1;
 id | baz | bar 
----+-----+-----
  2 |   1 |   2

答案 2 :(得分:32)

在MySQL中,语法为ALTER TABLE ... CHANGE

ALTER TABLE <table_name> CHANGE <column_name> <new_column_name> <data_type> ...

请注意,您不能只重命名并保留类型和约束;您必须在列的新名称后重新键入数据类型和约束。

答案 3 :(得分:19)

我认为这是更改列名的最简单方法。

SP_RENAME 'TABLE_NAME.OLD_COLUMN_NAME','NEW_COLUMN_NAME'

答案 4 :(得分:18)

不幸的是,对于独立于数据库的解决方案,您需要了解有关该列的所有信息。如果它在其他表中用作外键,则也需要修改它们。

ALTER TABLE MyTable ADD MyNewColumn OLD_COLUMN_TYPE;
UPDATE MyTable SET MyNewColumn = MyOldColumn;
-- add all necessary triggers and constraints to the new column...
-- update all foreign key usages to point to the new column...
ALTER TABLE MyTable DROP COLUMN MyOldColumn;

对于最简单的情况(没有约束,触发器,索引或键),它将采用上述3行。对于任何更复杂的事情,当你填写缺失的部分时,它会变得非常混乱。

但是,如上所述,如果您知道需要提前修改哪个数据库,则可以使用更简单的数据库特定方法。

答案 5 :(得分:9)

在Informix中,您可以使用:

RENAME COLUMN TableName.OldName TO NewName;

这是在SQL标准解决问题之前实现的 - 如果它在SQL标准中得到解决。我的SQL 9075:2003标准副本没有将其显示为标准(除其他外,RENAME不是关键字之一)。我不知道它是否实际上在SQL 9075:2008中。

答案 6 :(得分:5)

在sql server中你可以使用

exec sp_rename '<TableName.OldColumnName>','<NewColumnName>','COLUMN'

sp_rename '<TableName.OldColumnName>','<NewColumnName>','COLUMN'

答案 7 :(得分:4)

您可以使用以下命令重命名SQL Server中任何表的列:

exec sp_rename 'TableName.OldColumnName', 'New colunmName'

答案 8 :(得分:3)

ALTER TABLE是标准SQL。但它并没有在许多数据库系统中完全实现。

答案 9 :(得分:2)

标准是ALTER TABLE,但是您可能遇到的每个DBMS都不一定支持,所以如果您正在寻找一个包罗万象的语法,那么您可能会运气不好。

答案 10 :(得分:0)

SQL之外,您可以在Microsoft SQL Server Management Studio中从表设计面板执行此操作。

第一种方式

慢慢双击该列。列名称将成为可编辑的文本框。

第二种方式

  

SqlManagement Studio&gt;&gt; DataBases&gt;&gt; tables&gt;&gt; specificTable&gt;&gt;列   文件夹&gt;&gt;右键单击列&gt;&gt; Reman

第三种方式

表&gt;&GT;右击&GT;&GT;设计