Как переименовать столбец в таблице базы данных с помощью SQL?

Если я хочу просто переименовать столбец (не изменить его тип или ограничения, а только его имя) в базе данных SQL с помощью SQL, как это сделать? Или это невозможно?

Это для любой базы данных, утверждающей, что поддерживает SQL, я просто ищу SQL-запрос, который будет работать независимо от фактической реализации базы данных.

11 ответов


на PostgreSQL (и многих других СУБД) вы можете сделать это с помощью regular 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> ...

обратите внимание, что вы не можете просто переименовать и оставить тип и ограничения как есть; вы должны повторно ввести тип данных и ограничения после нового имени столбца.


Я думаю, что это самый простой способ изменить имя столбца.

SP_RENAME 'TABLE_NAME.OLD_COLUMN_NAME','NEW_COLUMN_NAME'

к сожалению, для независимого от базы данных решения вам нужно будет знать все о столбце. Если он используется в других таблицах в качестве внешнего ключа, их также необходимо изменить.

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 строки. Для чего-то более сложного он может стать очень грязным, когда вы заполняете недостающие части.

однако, как упоминалось выше, есть более простая база данных конкретные методы, Если вы знаете, какую базу данных необходимо изменить заранее.


в Informix, вы можете использовать:

RENAME COLUMN TableName.OldName TO NewName;

Это было реализовано до того, как стандарт SQL решил проблему - если она решена в стандарте SQL. Моя копия стандарта SQL 9075:2003 не показывает его как стандартный (среди прочего, переименование не является одним из ключевых слов). Я не знаю, действительно ли это в SQL 9075:2008.


в sql server можно использовать

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

или

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

ALTER TABLE является стандартным SQL. Но это не полностью реализовано во многих системах баз данных.


для переименования столбца любой таблицы в SQL Server можно использовать следующую команду:

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

стандарт будет ALTER TABLE, но это не обязательно поддерживается каждой СУБД, с которой вы, вероятно, столкнетесь, поэтому, если вы ищете всеобъемлющий синтаксис, вам может не повезти.


вместо SQL, вы можете сделать это в Microsoft SQL Server Management Studio, из панели дизайна таблицы.

Первый Способ

медленный двойной щелчок по столбцу. Имя столбца станет редактируемым текстовым полем.

Второй Способ

Sqlmanagement Studio>>базы данных> > таблицы> > specificTable> > столбец Папка> > щелкните правой кнопкой мыши столбец> > Reman

третий Путь

Table>>RightClick> > Design