Задача
Вы хотите избавиться от столбца таблицы, добавить новый столбец или переместить столбец внутри таблицы.
Решение
Используйте инструкции 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), а затем добавить в новое место.