MySQL / 8. Изменение таблицы с помощью предложения ALTER TABLE

Переименование таблицы

Задача
Необходимо изменить имя таблицы.

Решение
Используйте для этого ALTER TABLE или RENAME TABLE.

Обсуждение
Для того чтобы переименовать таблицу, используйте опцию RENAME предложения ALTER TABLE:

ALTER TABLE старое_имя RENAME TO новое_имя;

В MySQL версии 3.23.23 было введено явное предложение RENAME TABLE:

RENAME TABLE старое_имя TO новое_имя;

RENAME TABLE позволяет изменить названия нескольких таблиц, благодаря чему вы, например, можете осуществить перестановку имен двух таблиц в одном предложении:

RENAME TABLE имя1 TO врем_имя, имя2 TO имя1, врем_имя to имя2;

Такого же эффекта можно достичь и при помощи ALTER TABLE, только понадобится три отдельных предложения. При этом на короткие промежутки времени между предложениями таблицы становятся доступны пользователям, что может быть нежелательно. Единственное предложение RENAME TABLE позволяет избежать таких проблем.

Предложение RENAME TABLE также удобно использовать для циклического сдвига таблиц. Если вы хотите сделать так, чтобы таблица лога никогда не переставала быть доступной для клиентских приложений, создайте ее пустую версию с временным именем, затем сдвигайте файлы, используя предложение RENAME TABLE. Например, если вы хотите хранить ежемесячные таблицы протоколов, имена которых содержат год и месяц, можно сделать что-то типа:

CREATE TABLE log_temp (...);
RENAME TABLE log TO log_2001_05, log_temp TO log;

Если же вам нужно осуществить циклический сдвиг ежедневных таблиц за последнюю неделю, можно каждый день выполнять такие предложения:

CREATE TABLE log_temp (...);
DROP TABLE IF exists log_7;
RENAME TABLE log_6 TO log_7,
log_5 TO log_6,
log_4 TO log_5,
log_3 TO log_4,
log_2 TO log_3,
log_1 TO log_2,
log TO log_1,
log_tmp TO log;

Статьи по MySQL на эту тему:

Добавление и удаление индексов
Использование предложения ALTER TABLE для нормализации таблицы
Удаление дубликатов путем добавления индекса