テーブル/オブジェクトの名前を変更
Oracle
-- Table
ALTER TABLE old_name RENAME TO new_name;
-- or
RENAME old_name TO new_name;
-- Column
ALTER TABLE customer RENAME COLUMN name TO full_name;テーブル/ビュー/シーケンスには RENAME または ALTER ... RENAME TO を使用する。依存オブジェクト(ビュー、シノニム)は無効になり、再コンパイルが必要になる場合がある。
PostgreSQL
ALTER TABLE old_name RENAME TO new_name;
ALTER TABLE customer RENAME COLUMN name TO full_name;
ALTER VIEW old_view RENAME TO new_view;ALTER ... RENAME TO はほとんどのオブジェクトタイプで使用できる。外部キーとインデックスの参照は、名前が変わっても自動的に維持される(OID ベース)。
MySQL
RENAME TABLE old_name TO new_name;
-- or
ALTER TABLE old_name RENAME TO new_name;
-- Column (8.0+)
ALTER TABLE customer RENAME COLUMN name TO full_name;RENAME TABLE はアトミックで、単一の文で複数のテーブルを移動できる。列名の変更は 8.0+ では RENAME COLUMN を使用する。それ以前は CHANGE を使用し、型も指定する必要がある。
SQL Server
-- Table
EXEC sp_rename 'dbo.old_name', 'new_name';
-- Column
EXEC sp_rename 'dbo.customer.name', 'full_name', 'COLUMN';SQL Server には RENAME TABLE 文がなく、システムプロシージャ sp_rename を使用する。スキーマのプレフィックスはテーブル名には付けるが、新しい名前には付けない。依存するビュー/プロシージャは手動で更新する必要がある。
MongoDB
// Rename a collection
db.old_name.renameCollection("new_name");
// or the admin command
db.adminCommand({ renameCollection: "db.old_name", to: "db.new_name" });renameCollection でコレクション名を変更する。フィールド名を変更するには updateMany で $rename 演算子を使用する。シャードコレクションは 5.0+ で名前変更でき、それより古いバージョンではサポートされない。
Redis
# Rename a key
RENAME old_key new_key
# Without overwriting if the target exists
RENAMENX old_key new_keyRENAME はキーの名前を変更する。ターゲットが既に存在する場合は上書きされる。RENAMENX はターゲットが存在しない場合のみ動作する。ソースキーが存在しない場合はエラーが返る。
Elasticsearch
# An index cannot be renamed directly; reindex + alias approach
POST _reindex
{ "source": { "index": "old_name" }, "dest": { "index": "new_name" } }
DELETE old_name
# or use an alias for a seamless switch
POST _aliases
{ "actions": [ { "add": { "index": "new_name", "alias": "customer" } } ] }インデックス名を変更するコマンドはない。_reindex で新しい名前に再インデックスし、古いものを削除する。アプリケーションをインデックス名に依存させないよう、固定のエイリアス経由で運用することを推奨する。