DBAtlas · 데이터베이스 운영 아틀라스

테이블 / 객체 이름 변경

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_key

RENAME은 키 이름을 바꾸며, 대상이 이미 있으면 덮어쓴다. 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로 새 이름으로 재색인하고 기존 인덱스를 삭제한다. 애플리케이션이 인덱스 이름에 의존하지 않도록 고정 alias 뒤에서 운영하는 것이 권장된다.

DBAtlas에서 열기 →