2008-10-06 4 views
87

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

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

+1

Какая система баз данных? – skaffman 2008-10-06 14:52:44

+1

Вторичный скаффман, это не вопрос «SQL», это (возможно) вопрос «SQLServer». – 2008-10-06 15:04:33

+1

Любая система баз данных, предназначенная для использования SQL. Oracle, MySQL и т. Д. Я ищу независимый от базы данных ответ. – MetroidFan2002 2008-10-06 15:08:44

ответ

78

О PostgreSQL (и многих других СУБД), вы можете сделать это с регулярным 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 
+8

Это не поддерживается в MySQL, не так ли? – ustun 2011-10-21 11:41:16

+3

Нет, его не поддерживается в MySQL – rick 2013-05-13 19:16:20

96

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

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

Кажется, что Microsoft-специфическая и ничего в исходном запросе не указала Microsoft СУБД. – bortzmeyer 2008-10-06 14:54:25

+1

Да, ответ, который я искал, является «стандартным» SQL и не зависит от какой-либо конкретной реализации. Тем не менее, это хороший ответ для тех, кто использует систему Microsoft. – MetroidFan2002 2008-10-06 15:12:41

+0

Я отредактировал ответ, чтобы принять это во внимание – 2014-10-03 11:05:26

3

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

9

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

RENAME COLUMN TableName.OldName TO NewName; 

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

2

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

14

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

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

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

-1

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

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

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

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

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

Третий путь

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

25

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

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

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

15

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

SP_RENAME 'TABLE_NAME.OLD_COLUMN_NAME','NEW_COLUMN_NAME' 
4

В SQL Server можно использовать

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

или

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

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

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