Команда ALTER TABLE позволяет изменить структуру таблицы. Эта команда позволяет добавлять и удалять столбцы, создавать и уничтожать индексы, переименовывать столбцы и саму таблицу. Команда имеет следующий синтаксис:
ALTER TABLE table_name alter_spec
Параметр alter_spec имеет значения, представленные в таблице
Синтаксис
Описание команды
ADD create_definition [FIRST|AFTER column_name]
Добавление нового столбца create_definition. create_definition представляет собой название нового столбца и его тип. Конструкция FIRST добавляет новый столбец перед столбцом column_name. Конструкция AFTER добавляет новый столбец после столбца column_name. Если место добавления не указано, по умолчанию столбец добавляется в конец таблицы.
ADD INDEX [index_name] (index_col_name,...)
Добавление индекса index_name для столбца index_col_name. Если имя индекса index_name не указывается, ему присваивается имя совпадающее с именем столбца index_col_name.
ADD PRIMARY KEY (index_col_name,...)
Делает столбец index_col_name или группу столбцов первичным ключом таблицы.
CHANGE old_col_name new_col_name type
Изменение столбца с именем old_col_name на столбец с именем new_col_name и типом type.
DROP col_name
Удаление столбца с именем col_name.
DROP PRIMARY KEY
Удаление первичного ключа таблицы.
DROP INDEX index_name
Удаление индекса index_name.
Добавим в таблицу forums новый столбец test, разместив его после столбца name.
mysql> ALTER TABLE forums ADD test int(10) AFTER name;
Выполнив команду DESCRIBE forums, можно увидеть, что столбец test успешно добавлен после столбца name
Давайте переименуем созданный столбец test в текстовый столбец new_test
mysql> ALTER TABLE forums CHANGE test new_test text;
Как видно из рисунка, столбец успешно переименован:
При изменении только типа столбца, а не его имени, указание имени все-равно необходимо, хотя в этом случае оно будет фактически повторяться.
mysql> ALTER TABLE forums CHANGE new_test new_test int(5) not null;
Результат выполнения этого запроса приведен на рисунке:
Теперь удалим столбец new_test:
mysql> ALTER TABLE forums DROP new_test;
Как видно из рисунка, после удаления этого столбца таблица forums приобрела исходную структуру: