web-dev-qa-db-ja.com

SQLを使用してデータベーステーブルの列の名前を変更するにはどうすればよいですか?

SQLを使用してSQLデータベースの列の名前を変更するだけで(型や制約を変更せず、名前だけを変更する場合)、どうすればよいですか?それとも不可能ですか?

これは、SQLをサポートしていると主張するすべてのデータベース用です。実際のデータベースの実装に関係なく機能するSQL固有のクエリを探しています。

104
MetroidFan2002

PostgreSQL(および他の多くのRDBMS)では、通常の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
93
bortzmeyer

特にSQL Serverの場合は、 sp_rename を使用します

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

MySQLの構文は ALTER TABLE ... CHANGE :です。

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

型と制約をそのままにして名前を変更することはできないことに注意してください。列の新しい名前の後にデータ型と制約を再入力する必要があります。

32
jaspher chloe

これが列名を変更する最も簡単な方法だと思います。

SP_RENAME 'TABLE_NAME.OLD_COLUMN_NAME','NEW_COLUMN_NAME'
19
Kunal Relan

残念ながら、データベースに依存しないソリューションでは、列に関するすべてを知る必要があります。他のテーブルで外部キーとして使用されている場合は、同様に変更する必要があります。

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行が必要です。より複雑なものについては、欠けている部分を埋めていくと非常に面倒になります。

ただし、前述のように、事前に変更する必要があるデータベースがわかっている場合は、データベース固有の方法がより簡単です。

18
Shadow Man

Informixでは、次を使用できます。

RENAME COLUMN TableName.OldName TO NewName;

これは、SQL標準で問題が解決される前に実装されました-SQL標準で解決された場合。 SQL 9075:2003標準の私のコピーは、それが標準であることを示していません(特に、RENAMEはキーワードの1つではありません)。 SQL 9075:2008に実際にあるかどうかはわかりません。

9

SQLサーバーでは、使用できます

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

または

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

次のコマンドを使用して、SQL Serverのテーブルの列の名前を変更できます。

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

ALTER TABLEは標準SQLです。しかし、多くのデータベースシステムに完全には実装されていません。

3
Paul Tomblin

標準はALTER TABLEですが、遭遇する可能性のあるすべてのDBMSで必ずしもサポートされているわけではないため、包括的な構文を探している場合は運が悪いかもしれません。

2
Rob

SQLの代わりに、Microsoft SQL Server Management Studioのテーブルデザインパネルからこれを行うことができます。

最初の方法

列をゆっくりダブルクリックします。列名は編集可能なテキストボックスになります。

第二の方法

SqlManagement Studio >> DataBases >> tables >> specificTable >> Column Folder >> column >> Remanを右クリック

第三の方法

表>>右クリック>>デザイン

0
Uzair Xlade