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

如果我想简单地使用SQL在一个SQL数据库中重命名列(不改变它的types或约束,只是它的名字),我该怎么做? 或者是不可能的?

这是任何声称支持SQL的数据库,我只是在寻找一个特定于SQL的查询,而不pipe实际的数据库实现如何。

在PostgreSQL(以及其他许多RDBMS)上,可以使用常规的ALTER TABLE语句来完成:

 essais=> SELECT * FROM Test1; id | foo | bar ----+-----+----- 2 | 1 | 2 essais=> ALTER TABLE Test1 RENAME COLUMN foo TO baz; ALTER TABLE essais=> SELECT * FROM Test1; id | baz | bar ----+-----+----- 2 | 1 | 2 

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

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

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

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

请注意,您不能只是重命名并保留types和约束; 您必须在列的新名称之后重新input数据types和约束。

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

 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行。 对于任何更复杂的事情,当你填写缺less的部分时,它会变得非常混乱。

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

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

 SP_RENAME 'TABLE_NAME.OLD_COLUMN_NAME','NEW_COLUMN_NAME' 

在Informix中,您可以使用:

 RENAME COLUMN TableName.OldName TO NewName; 

这是在SQL标准解决这个问题之前实现的 – 如果它是在SQL标准中解决的话。 我的SQL 9075:2003标准副本没有显示它是标准的(除此之外,RENAME不是关键字之一)。 我不知道它是否在SQL 9075:2008中。

在SQL Server中,您可以使用

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

要么

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

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

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

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

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

除了SQL ,您还可以在Microsoft SQL Server Management Studio中从表格devise面板中执行此操作。

第一条路

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

第二条路

SqlManagement Studio >>数据库>>表>>特定表>>列文件夹>>右键单击列>> Reman

第三条道路

表>>右击>>devise