如果我想使用SQL在SQL数据库中简单地重命名一列(而不更改其类型或约束,仅更改其名称),该怎么做?还是不可能?
这适用于任何声称支持SQL的数据库,我只是在寻找一个特定于SQL的查询,无论实际的数据库实现如何,该查询都将起作用。
如果我想使用SQL在SQL数据库中简单地重命名一列(而不更改其类型或约束,仅更改其名称),该怎么做?还是不可能?
这适用于任何声称支持SQL的数据库,我只是在寻找一个特定于SQL的查询,无论实际的数据库实现如何,该查询都将起作用。
Answers:
在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
sp_rename
按照Galwegian的答案使用:stackoverflow.com/a/174586/834431
专门用于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> ...
请注意,您不能只重命名并保留类型和约束。您必须在列的新名称之后重新输入数据类型和约束。
RENAME
语法的类型/约束。重命名MySQL中的一列
不幸的是,对于独立于数据库的解决方案,您将需要了解有关该列的所有信息。如果在其他表中将其用作外键,则也需要对其进行修改。
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行。对于任何更复杂的东西,当您填写缺少的部分时,它可能会变得非常混乱。
但是,如上所述,如果您知道需要提前修改哪个数据库,则有一些更简单的数据库特定方法。
我认为这是更改列名的最简单方法。
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中。
RENAME COLUMN TableName.OldName TO NewName;
www-01.ibm.com/support/knowledgecenter/SSGU8G_11.50.0/…– hitzi 2014
您可以使用以下命令来重命名SQL Server中任何表的列:
exec sp_rename 'TableName.OldColumnName', 'New colunmName'
ALTER TABLE是标准SQL。但是它并没有在许多数据库系统中完全实现。
替代 SQL
,您可以在Microsoft SQL Server Management Studio中做到这一点,从表设计面板。
第一路
缓慢双击该列。列名将变为可编辑的文本框。
第二路
SqlManagement Studio >>数据库>>表>>特定表>>列文件夹>>右键单击列>> Reman
第三路
表格>>右键单击>>设计