SQLを使用してSQLデータベースの列の名前を変更するだけで(型や制約を変更せず、名前だけを変更する場合)、どうすればよいですか?それとも不可能ですか?
これは、SQLをサポートしていると主張するすべてのデータベース用です。実際のデータベースの実装に関係なく機能するSQL固有のクエリを探しています。
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
特に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標準の私のコピーは、それが標準であることを示していません(特に、RENAMEはキーワードの1つではありません)。 SQL 9075:2008に実際にあるかどうかはわかりません。
SQLサーバーでは、使用できます
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です。しかし、多くのデータベースシステムに完全には実装されていません。
標準はALTER TABLE
ですが、遭遇する可能性のあるすべてのDBMSで必ずしもサポートされているわけではないため、包括的な構文を探している場合は運が悪いかもしれません。
SQL
の代わりに、Microsoft SQL Server Management Studioのテーブルデザインパネルからこれを行うことができます。
最初の方法
列をゆっくりダブルクリックします。列名は編集可能なテキストボックスになります。
第二の方法
SqlManagement Studio >> DataBases >> tables >> specificTable >> Column Folder >> column >> Remanを右クリック
第三の方法
表>>右クリック>>デザイン