Spec-Zone .ru
спецификации, руководства, описания, API

13.1.6.2. ALTER TABLE Примеры

Начните с таблицы t1 это создается как показано здесь:

CREATE TABLE t1 (a INTEGER,b CHAR(10));

Переименовать таблицу от t1 к t2:

ALTER TABLE t1 RENAME t2;

Изменить столбец a от INTEGER к TINYINT NOT NULL (отъезд имени то же самое), и изменить столбец b от CHAR(10) к CHAR(20) так же как переименование этого от b к c:

ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);

Добавить новое TIMESTAMP столбец называют d:

ALTER TABLE t2 ADD d TIMESTAMP;

Добавить индексирование на столбце d и a UNIQUE индексируйте на столбце a:

ALTER TABLE t2 ADD INDEX (d), ADD UNIQUE (a);

Удалить столбец c:

ALTER TABLE t2 DROP COLUMN c;

Добавить новое AUTO_INCREMENT целочисленный столбец называют c:

ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT,  ADD PRIMARY KEY (c);

Мы индексировали c (как a PRIMARY KEY) потому что AUTO_INCREMENT столбцы должны быть индексированы, и мы объявляем c как NOT NULL потому что столбцы первичного ключа не могут быть NULL.

Когда Вы добавляете AUTO_INCREMENT столбец, значения столбцов заполнены в порядковыми номерами автоматически. Для MyISAM таблицы, можно установить первый порядковый номер, выполняясь SET INSERT_ID=value прежде ALTER TABLE или при использовании AUTO_INCREMENT=value табличная опция. См. Раздел 5.1.4, "Системные Переменные Сервера".

С MyISAM таблицы, если Вы не изменяетесь AUTO_INCREMENT столбец, на порядковый номер не влияют. Если Вы отбрасываете AUTO_INCREMENT столбец и затем добавляет другого AUTO_INCREMENT столбец, числа повторно упорядочиваются, начинаясь 1.

Когда репликация используется, добавляя AUTO_INCREMENT столбец к таблице не мог бы произвести то же самое упорядочивание строк на ведомом устройстве и ведущем устройстве. Это происходит, потому что порядок, в котором нумеруются строки, зависит от определенного механизма хранения, используемого для таблицы и порядка, в который были вставлены строки. Если важно иметь тот же самый порядок на ведущее устройство и ведомое устройство, строки должны быть упорядочены прежде, чем присвоиться AUTO_INCREMENT число. Принятие, что Вы хотите добавить AUTO_INCREMENT столбец к таблице t1, следующие операторы производят новую таблицу t2 идентичный t1 но с AUTO_INCREMENT столбец:

CREATE TABLE t2 (id INT AUTO_INCREMENT PRIMARY KEY)SELECT * FROM t1 ORDER BY col1, col2;

Это предполагает что таблица t1 имеет столбцы col1 и col2.

Этот набор операторов также произведет новую таблицу t2 идентичный t1, с добавлением AUTO_INCREMENT столбец:

CREATE TABLE t2 LIKE t1;ALTER TABLE t2 ADD id INT AUTO_INCREMENT PRIMARY KEY;INSERT INTO t2 SELECT * FROM t1 ORDER BY col1, col2;
Важный

Гарантировать то же самое упорядочивание и на ведущем устройстве и на ведомом устройстве, всех столбцах t1 должен быть сослан в ORDER BY пункт.

Независимо от метода, используемого, чтобы создать и заполнить копию, имеющую AUTO_INCREMENT столбец, заключительный шаг должен отбросить исходную таблицу и затем переименовать копию:

DROP t1;ALTER TABLE t2 RENAME t1;