如何使用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