126

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

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

4

11 回答 11

131

专门针对 SQL Server,使用sp_rename

USE AdventureWorks;
GO
EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
GO
于 2008-10-06T14:45:23.750 回答
106

在 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
于 2008-10-06T14:57:15.753 回答
39

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

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

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

于 2015-06-04T22:45:49.640 回答
27

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

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

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

于 2013-10-25T01:56:21.313 回答
22

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

SP_RENAME 'TABLE_NAME.OLD_COLUMN_NAME','NEW_COLUMN_NAME'
于 2015-07-31T07:09:27.247 回答
9

在 Informix 中,您可以使用:

RENAME COLUMN TableName.OldName TO NewName;

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

于 2008-10-10T22:05:30.587 回答
9

在 sql server 中你可以使用

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

或者

sp_rename '<TableName.OldColumnName>','<NewColumnName>','COLUMN'
于 2016-10-13T11:04:08.377 回答
6

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

exec sp_rename 'TableName.OldColumnName', 'New colunmName'
于 2017-04-06T02:55:22.563 回答
3

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

于 2008-10-06T15:02:19.673 回答
2

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

于 2008-10-10T22:10:30.450 回答
1

或者SQL,您可以在 Microsoft SQL Server Management Studio 中的表设计面板中执行此操作。

第一种方式

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

第二种方式

SqlManagement Studio>>DataBases>>tables>>specificTable>>Column Folder>>右键单击列>>Reman

第三条路

表格>>右键>>设计

于 2014-11-13T10:27:57.907 回答