Касперский Интернет Секьюрити для всех устройств на 2 устройства - лицензия на 1 год

Изменить структуру таблицы в базе данных .

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

Изменить структуру таблицы в базе данных, где:
alter_specification:
    ADD [COLUMN] create_definition [FIRST | AFTER column_name ]
    или   ADD [COLUMN] (create_definition, create_definition,...)
    или   ADD INDEX [index_name] (index_col_name,...)
    или   ADD PRIMARY KEY (index_col_name,...)
    или   ADD UNIQUE [index_name] (index_col_name,...)
    или   ADD FULLTEXT [index_name] (index_col_name,...)
    или   ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
    или   CHANGE [COLUMN] old_col_name create_definition
        [FIRST | AFTER column_name]
    или   MODIFY [COLUMN] create_definition [FIRST | AFTER column_name]
    или   DROP [COLUMN] col_name
    или   DROP PRIMARY KEY
    или   DROP INDEX index_name
    или   DISABLE KEYS
    или   ENABLE KEYS
    или   RENAME [TO] new_tbl_name
    или   ORDER BY col
    или   table_options

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

create_definition - наименование и тип поля

Ниже приводятся примеры, показывающие некоторые случаи употребления команды 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;

Для того чтобы переместить в базе данных `tovar` столбец с именем t1, присвоив ему тип поля TEXT, за столбец t2:

mysql> ALTER TABLE `tovar` MODIFY `t1` TEXT AFTER `t2`;

Для того чтобы добавить новый числовой столбец 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.

При добавлении столбца AUTO_INCREMENT значения этого столбца автоматически заполняются последовательными номерами (при добавлении записей). Первый номер последовательности можно установить путем выполнения команды SET INSERT_ID=# перед ALTER TABLE или использования табличной опции AUTO_INCREMENT = #. See section 5.5.6 Синтаксис команды SET.

Если столбец AUTO_INCREMENT для таблиц MyISAM, не изменяется, то номер последовательности остается прежним. При удалении столбца AUTO_INCREMENT и последующем добавлении другого столбца AUTO_INCREMENT номера будут начинаться снова с 1.

Пример отображения командного окна
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 4.1.12-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use primer;
Database changed
mysql> DESCRIBE klient;
+-------+------------+------+-----+---------+----------------+
| Field | Type       | Null | Key | Default | Extra          |
+-------+------------+------+-----+---------+----------------+
| kod   | int(5)     |      | PRI | NULL    | auto_increment |
| fio   | tinytext   | YES  |     | NULL    |                |
| pol   | tinyint(1) |      |     | 0       |                |
+-------+------------+------+-----+---------+----------------+
3 rows in set (0.02 sec)

mysql> ALTER TABLE klient MODIFY fio text;
Query OK, 0 rows affected (0.09 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> DESCRIBE klient;
+-------+------------+------+-----+---------+----------------+
| Field | Type       | Null | Key | Default | Extra          |
+-------+------------+------+-----+---------+----------------+
| kod   | int(5)     |      | PRI | NULL    | auto_increment |
| fio   | text       | YES  |     | NULL    |                |
| pol   | tinyint(1) |      |     | 0       |                |
+-------+------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

mysql>_

В данном примере мы изменили тип поля fio.


MySQL



© Copyright 2005 www.e-inform.ru
|