Как переименовать столбец в таблице базы данных с помощью SQL?
Если я хочу просто переименовать столбец (не изменять его тип или ограничения, а только его имя) в базе данных SQL с помощью SQL, как это сделать? Или это невозможно?
Это для любой базы данных, претендующей на поддержку SQL, я просто ищу SQL-запрос, который будет работать независимо от фактической реализации базы данных.
11 ответов:
на 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
специально для SQL Server, используйте
sp_renameUSE 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'
вы можете использовать следующую команду для переименования столбца любой таблицы в SQL Server:
exec sp_rename 'TableName.OldColumnName', 'New colunmName'
стандарт будет
ALTER TABLE, но это не обязательно поддерживается каждой СУБД, с которой вы, вероятно, столкнетесь, поэтому, если вы ищете всеобъемлющий синтаксис, вам может не повезти.
вместо
SQL, Это можно сделать в среде Microsoft SQL Server Management Studio с помощью панели "дизайн таблицы".Первый Способ
медленно дважды щелкните в столбце. Имя столбца станет редактируемым текстовым полем.
Второй Способ
Sqlmanagement Studio> > базы данных> > таблицы> > specificTable> > столбец Папка > > щелкните правой кнопкой мыши на колонке> > Reman
третий Путь
Таблица> > Щелкните Правой Кнопкой Мыши> > Дизайн
Comments