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

StackOverflow https://stackoverflow.com/questions/174582

質問

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

他のヒント

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のテーブルデザインパネルからこれを実行できます。

最初の方法

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

2番目の方法

  

SqlManagement Studio&gt;&gt; DataBases&gt;&gt; tables&gt;&gt; specificTable&gt;&gt; Column   フォルダ&gt;&gt;列を右クリック&gt;&gt;リマン

サードウェイ

表&gt;&gt;右クリック&gt;&gt;デザイン

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top