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

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

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

Ответ 1

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

Ответ 2

В частности, для SQL Server используйте sp_rename

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

Ответ 3

В MySQL синтаксис ALTER TABLE ... CHANGE:

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

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

Ответ 4

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

SP_RENAME 'TABLE_NAME.OLD_COLUMN_NAME','NEW_COLUMN_NAME'

Ответ 5

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

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

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

Ответ 6

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

RENAME COLUMN TableName.OldName TO NewName;

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

Ответ 7

В сервере sql вы можете использовать

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

или

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

Ответ 8

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

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

Ответ 9

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

Ответ 10

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

Ответ 11

В качестве альтернативы SQL вы можете сделать это в Microsoft SQL Server Management Studio из таблицы Design Panel.

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

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

Второй путь

SqlManagement Studio → Базы данных → таблицы → specificTable → Столбец Папка → Щелкните правой кнопкой мыши по столбцу → Reman

Третий путь

Таблица → RightClick → Дизайн