重命名表 / 对象
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。表名中带 schema 前缀,新名称中不带。依赖的视图/存储过程需手动更新。
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 重建到新名称后删除旧索引。建议通过稳定的别名访问,使应用不依赖索引名称。