Изменение

СИНТАКСИС:

ALTER [IGNORE] TABLE table_name alter_specification [, alter_specification ...]

  alter_specification:
    ADD [COLUMN] create_definition or
    CHANGE [COLUMN] old_column_name create_definition or
    ALTER [COLUMN] column_name { SET default | DROP DEFAULT } or
    DROP [COLUMN] column_name or DROP PRIMARY KEY or DROP INDEX key_name
    DROP FOREIGN KEY key_name

ОПИСАНИЕ:

Команда ALTER TABLE может быть использована для изменения определения таблицы. ALTER TABLE работает с временно созданной таблицей в которую копирует все данные из текущей таблицы. Когда копия готова, старая таблица удаляется, а новая переименуется в нее. Это выполнено таким способом, что все изменения автоматически переназначаются на новую таблицу.

Пока работает ALTER TABLE, старая таблица доступна для других клиентов. Обновления и запись в таблицу останавливаются и будут выполнены только после того, как новая таблица будет готова. Если IGNORE не определен, то копирование будет прервано и процесс отработан назад в случае наличия любых уникальных ключей, дублированных в новой таблице. >

  • [COLUMN] факультативный параметр и может быть опущен.
  • Конструкция ALTER [COLUMN] может быть использована для изменения или удаления старого значения по умолчанию.
  • Если вы удаляете column_name, которое является частью составного ключа, то часть ключа будет удалена. Если все части ключа удалены, то будет удален весь ключ.
  • DROP PRIMARY KEY удаляет первый уникальный ключ в таблице.
  • CHANGE делает лучшее преобразование существующей информации в новый формат.
  • Синтаксис DROP FOREIGN KEY пока существует для запланированных функциональных возможностей. В настоящее время не делает ничего.
  • Примеры

    Чтобы переименовать столбец INTEGER из a в b, можно сделать следующее:
    mysql> ALTER TABLE t1 CHANGE a b INTEGER
    При изменении типа столбца, но не его имени синтаксис выражения CHANGE все равно требует указания обоих имен столбца, даже если они одинаковы. Например:
    mysql> ALTER TABLE t1 CHANGE b b BIGINT NOT NULL;