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

Удаление, добавление и перемещение столбца

Задача
Вы хотите избавиться от столбца таблицы, добавить новый столбец или переместить столбец внутри таблицы.

Решение
Используйте инструкции DROP и ADD предложения ALTER TABLE для удаления и добавления столбца. Для перемещения столбца следует удалить его и повторно вставить туда, куда нужно.

Обсуждение
Чтобы удалить столбец из таблицы, укажите инструкцию DROP, затем имя столбца. Удалим из mytbl столбец i, оставив в таблице только столбец c:

ALTER TABLE mytbl DROP i;

DROP не работает, если вы пытаетесь удалить единственный оставшийся столбец таблицы. (Чтобы проверить утверждение, попробуйте удалить столбец c после того, как столбец i уже удален.)

Для добавления столбца в таблицу используйте инструкцию ADD и укажите определение столбца. Следующее предложение восстанавливает столбец i в таблице mytbl:

ALTER TABLE mytbl ADD i INT;

Теперь mytbl снова содержит те же два столбца, что и при первом создании таблицы, но ее структура изменилась. Дело в том, что новые столбцы по умолчанию добавляются в конец таблицы. Так что столбец i, который был первым, теперь превратится в последний:

mysql> SHOW COLUMNS FROM mytbl;

+-----+---------+-----+-----+---------+--------+
| Field | Type     | Null | Key | Default | Extra |
+-----+---------+-----+-----+----------+-------+
| c      | char(1) | YES |        | NULL     |          |
| i       | int(11)  | YES |        | NULL     |          |
+-----+---------+-----+-----+----------+-------+

Если вы хотите поместить столбец в определенную позицию в таблице, используйте спецификатор FIRST, чтобы сделать его первым столбцом, или AFTER имя_столбца, чтобы разместить его после столбца с именем имя_столбца. Опробуйте приведенные ниже предложения ALTER TABLE, используя после каждого из них предложение SHOW COLUMNS, чтобы посмотреть на то, что произошло:

ALTER TABLE mytbl DROP i;
ALTER TABLE mytbl ADD i INT FIRST;ALTER TABLE mytbl DROP i;
ALTER TABLE mytbl ADD i INT AFTER c;

Спецификаторы FIRST и AFTER работают только с инструкцией ADD. То есть если вы хотите изменить положение существующего столбца, вам придется сначала удалить его (посредством DROP), а затем добавить в новое место.

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

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