개요

테이블 이름 변경은 ALTER TABLE로도 가능하지만, RENAME TABLE을 쓰면 다수 테이블을 한 번에 처리 가능하며 같은 서버 내 다른 데이터베이스로 이동까지 가능함

핵심 차이

  • ALTER TABLE RENAME은 단일 테이블 대상
  • RENAME TABLE은 여러 테이블을 한 문장으로 변경 가능
  • 스키마 간 이동 지원 current_db.table에서 other_db.table로 변경 가능
  • 동일 트랜잭션처럼 동작하는 원자성 제공, 다중 변경 중 하나라도 실패 시 전체 미적용
  • 권한 요구 사항 존재, 원본 테이블에 ALTER와 DROP, 대상 스키마에 CREATE 권한 필요
  • 트리거와 외래키 메타데이터는 함께 유지되나, 뷰나 저장 프로시저의 하드코딩된 참조는 자동 갱신되지 않음

사용법

  • 단일 테이블 이름 변경
RENAME TABLE old_table TO new_table;
  • 단일 테이블 이름 변경 ALTER 사용
ALTER TABLE old_table RENAME new_table;
  • 다수 테이블 이름 일괄 변경
RENAME TABLE old_table1 TO new_table1,
             old_table2 TO new_table2,
             old_table3 TO new_table3;
  • 다른 데이터베이스로 이동 같은 서버 내
RENAME TABLE current_db.table_name TO other_db.table_name;

주의 사항

  • 대상 이름이 이미 존재하면 실패
  • 교차 서버 이동 불가, 같은 서버 인스턴스 내 스키마 간 이동만 가능
  • 실행 시 메타데이터 락 획득, 짧은 구간 동안 읽기나 쓰기 대기 가능
  • 배치 변경 전 사전 검증 권장, 이름 충돌 여부와 권한 확인
  • 뷰나 프로시저 참조는 수동 점검 필요, 린트나 간단한 탐색 쿼리로 영향 범위 확인 권장

정리

단일 변경만 필요하면 ALTER로 충분하나, 다수 변경이나 스키마 이동까지 고려하면 RENAME TABLE이 더 실용적 선택 원자적 일괄 변경과 스키마 간 이동을 활용하되, 권한과 의존성 영향 검증을 선행할 것

참고자료