Spec-Zone .ru
спецификации, руководства, описания, API
|
Начните с таблицы 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=
табличная опция. См. Раздел
5.1.4, "Системные Переменные Сервера". value
С 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;