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

UptoLike

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

Начиная с MySQL 4.0, вышеуказанная возможность может быть
активизирована явным образом. Команда ALTER TABLE ... DISABLE
KEYS блокирует в MySQL обновление неуникальных индексов для таблиц
MyISAM. После этого можно применить команду ALTER TABLE ...
ENABLE KEYS для воссоздания недостающих индексов. Так как MySQL
делает это с помощью специального алгоритма, который намного быстрее в
сравнении со вставкой ключей один за другим, блокировка ключей может
дать существенное ускорение на больших массивах вставок.
Применяя функцию C API mysql_info(), можно определить,
сколько записей было скопировано, а также (при использовании IGNORE) -
сколько записей было удалено из-за дублирования значений уникальных
ключей.
Выражения FOREIGN KEY, CHECK и REFERENCES фактически ничего
не делают. Они введены только из соображений совместимости, чтобы
облегчить перенос кода с других серверов SQL и запуск приложений,
создающих таблицы со ссылками.
Ниже приводятся примеры, показывающие некоторые случаи
употребления команды ALTER TABLE. Пример начинается с таблицы t1,
которая создается следующим образом:
mysql> CREATE TABLE t1 (a INTEGER,b CHAR(10));
Для того чтобы переименовать таблицу из t1 в t2:
mysql> ALTER TABLE t1 RENAME t2;
Для того чтобы изменить тип столбца с INTEGER на TINYINT NOT
NULL (оставляя имя прежним) и изменить тип столбца b с CHAR(10) на
CHAR(20) с переименованием его с b на c:
mysql> ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c
CHAR(20);
Для того чтобы добавить новый столбец TIMESTAMP с именем d:
mysql> ALTER TABLE t2 ADD d TIMESTAMP;
Для того чтобы добавить индекс к столбцу d и сделать столбец a
первичным ключом:
mysql> ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a);
Для того чтобы удалить столбец c:
mysql> ALTER TABLE t2 DROP COLUMN c;
Для того чтобы добавить новый числовой столбец AUTO_INCREMENT
с именем c:
mysql> ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL
AUTO_INCREMENT,
ADD INDEX (c);
Заметьте, что столбец c индексируется, так как столбцы
AUTO_INCREMENT должны быть индексированы; кроме того, столбец c
объявляется как NOT NULL, поскольку индексированные столбцы не могут
быть NULL.
89