126

SQL を使用している SQL データベースで、単純に列の名前を変更したい (型や制約を変更するのではなく、名前だけを変更する) 場合、どうすればよいですか? それとも無理ですか?

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

4

11 に答える 11

131

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

USE AdventureWorks;
GO
EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
GO
于 2008-10-06T14:45:23.750 に答える
106

ALTER TABLEPostgreSQL(および他の多くのRDBMS)では、通常のステートメントでそれを行うことができます。

=> 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
于 2008-10-06T14:57:15.753 に答える
39

MySQL では、構文はALTER TABLE ... CHANGE次のとおりです。

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

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

于 2015-06-04T22:45:49.640 に答える
27

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

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 行が必要です。より複雑なものの場合、不足している部分を埋めると、非常に面倒になる可能性があります。

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

于 2013-10-25T01:56:21.313 に答える
22

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

SP_RENAME 'TABLE_NAME.OLD_COLUMN_NAME','NEW_COLUMN_NAME'
于 2015-07-31T07:09:27.247 に答える
9

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

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

また

sp_rename '<TableName.OldColumnName>','<NewColumnName>','COLUMN'
于 2016-10-13T11:04:08.377 に答える
9

Informix では、以下を使用できます。

RENAME COLUMN TableName.OldName TO NewName;

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

于 2008-10-10T22:05:30.587 に答える
3

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

于 2008-10-06T15:02:19.673 に答える
2

標準はALTER TABLEですが、遭遇する可能性のあるすべての DBMS で必ずしもサポートされているとは限りません。

于 2008-10-10T22:10:30.450 に答える
1

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

最初の道

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

第二の道

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

第三の道

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

于 2014-11-13T10:27:57.907 に答える