Глиф Учебники

Как переименовать таблицу в SQL

Справочник · SQL · 2 минуты чтения

SQL
ALTER TABLE products RENAME TO goods;

Эта команда работает в SQLite, MySQL, MariaDB и PostgreSQL. Данные, индексы и ограничения остаются на месте — меняется только имя.

В разных СУБД

СУБДКоманда
SQLite, PostgreSQL, MySQLALTER TABLE products RENAME TO goods;
MySQL, MariaDBRENAME TABLE products TO goods;
Microsoft SQL ServerEXEC sp_rename 'products', 'goods';

RENAME TABLE в MySQL переименовывает несколько таблиц за раз, и это удобно, чтобы поменять две таблицы местами одной командой:

SQL
RENAME TABLE products TO products_old, products_new TO products;

Что будет со ссылками

Внутри базы переименование почти всегда проходит гладко:

А вот всё, что записано текстом вне базы, придётся поправить самому: запросы в программах, отчёты, скрипты резервного копирования. После переименования старое имя даёт ошибку no such table: products в SQLite, Table 'shop.products' doesn't exist в MySQL и relation "products" does not exist в PostgreSQL.

Если таблицу читает работающий сайт или программа, переименование сломает их в ту же секунду. Обновите код и переименуйте таблицу одновременно — или временно создайте представление со старым именем: CREATE VIEW products AS SELECT * FROM goods;. В SQLite через такое представление можно только читать: INSERT в него закончится ошибкой cannot modify products because it is a view.

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

SQL
ALTER TABLE goods RENAME COLUMN name TO title;

Подробнее о столбцах — в справке Как добавить столбец.

Переименовать базу данных

Перед переименованием базы или массовым переименованием таблиц сделайте резервную копию. Ошибка в имени посреди переноса оставит часть таблиц в одной базе, часть — в другой.