Базы данных. Пономарев А.А. - 87 стр.

UptoLike

Составители: 

Для использования оператора ALTER TABLE необходимы привилегии
ALTER, INSERT и CREATE для данной таблицы.
Опция IGNORE является расширением MySQL по отношению к ANSI
SQL92. Она управляет работой ALTER TABLE при наличии дубликатов
уникальных ключей в новой таблице. Если опция IGNORE не задана, то для
данной копии процесс прерывается и происходит откат назад. Если IGNORE
указывается, тогда для строк с дубликатами уникальных ключей только
первая строка используется, а остальные удаляются.
Можно запустить несколько выражений ADD, ALTER, DROP и CHANGE
в одной команде ALTER TABLE. Это является расширением MySQL по
отношению к ANSI SQL92, где допускается только одно выражение из
упомянутых в одной команде ALTER TABLE.
Опции CHANGE col_name, DROP col_name и DROP INDEX также
являются расширениями MySQL по отношению к ANSI SQL92.
Опция MODIFY представляет собой расширение Oracle для команды
ALTER TABLE.
Необязательное слово COLUMN представляет собой ''белый шум'' и
может быть опущено.
При использовании ALTER TABLE имя_таблицы RENAME TO
новое_имя без каких-либо других опций MySQL просто переименовывает
файлы, соответствующие заданной таблице. В этом случае нет
необходимости создавать временную таблицу. В выражении
create_definition для ADD и CHANGE используется тот же синтаксис,
что и для CREATE TABLE. Следует учитывать, что этот синтаксис включает
имя столбца, а не просто его тип.
Столбец можно переименовывать, используя выражение CHANGE
имя_столбца create_definition. Чтобы сделать это, необходимо
указать старое и новое имена столбца и его тип в настоящее время.
Например, чтобы переименовать столбец INTEGER из a в b, можно сделать
следующее:
mysql> ALTER TABLE t1 CHANGE a b INTEGER;
При изменении типа столбца, но не его имени синтаксис выражения
CHANGE все равно требует указания обоих имен столбца, даже если они
одинаковы. Например:
mysql> ALTER TABLE t1 CHANGE b b BIGINT NOT NULL;
Однако, начиная с версии MySQL 3.22.16a, можно также использовать
выражение MODIFY для изменения типа столбца без переименовывания его:
mysql> ALTER TABLE t1 MODIFY b BIGINT NOT NULL;
При использовании CHANGE или MODIFY для того, чтобы уменьшить
длину столбца, по части которого построен индекс (например, индекс по
первым 10 символам столбца VARCHAR), нельзя сделать столбец короче, чем
число проиндексированных символов.
87