English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Когда нам нужно изменить имя таблицы или поля таблицы, нам нужно использовать команду MySQL ALTER.
Прежде чем начать этот раздел учебника, давайте сначала создадим таблицу с именем: testalter_tbl.
root@host# mysql -u root -p password; Введите пароль:******* mysql> use w3codebox; База данных изменена mysql> create table testalter_tbl -> ( -> i INT, -> c CHAR(1) -> ; Запрос выполнен успешно, не затронуты строки (0.05 сек) mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | i | int(11) | YES | | NULL | | | c | char(1) | YES | | NULL | | +-------+---------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
Следующие команды используют команду ALTER и подзапрос DROP для удаления поля i, созданного выше для таблицы:
mysql> ALTER TABLE testalter_tbl DROP i;
Если в таблице данных осталось только одно поле, удалить его с помощью DROP невозможно.
В MySQL используется подзапрос ADD для добавления столбца в таблицу данных, как показано в следующем примере: добавление поля i в таблицу testalter_tbl с определением типа данных:
mysql> ALTER TABLE testalter_tbl ADD i INT;
После выполнения вышеуказанных команд поле i будет автоматически добавлено в конец полей таблицы.
mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | c | char(1) | YES | | NULL | | | i | int(11) | YES | | NULL | | +-------+---------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
Если вам нужно указать положение нового поля, вы можете использовать ключевые слова MySQL FIRST (устанавливает положение в первом столбце) и AFTER имя поля (устанавливает положение после определенного поля).
Попробуйте следующую команду ALTER TABLE, после успешного выполнения выполните SHOW COLUMNS, чтобы увидеть изменения в структуре таблицы:
ALTER TABLE testalter_tbl DROP i; ALTER TABLE testalter_tbl ADD i INT FIRST; ALTER TABLE testalter_tbl DROP i; ALTER TABLE testalter_tbl ADD i INT AFTER c;
Ключевые слова FIRST и AFTER можно использовать в подзапросах ADD и MODIFY, поэтому если вы хотите изменить положение поля в таблице данных, вам нужно сначала удалить поле с помощью DROP, а затем добавить его с помощью ADD и установить положение.
Если вам нужно изменить тип и имя поля, вы можете использовать подзапрос MODIFY или CHANGE в команде ALTER.
Например, чтобы изменить тип поля c с CHAR(1) на CHAR(10), можно выполнить следующую команду:
mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);
Использование подзапроса CHANGE значительно отличается по синтаксису. После ключевого слова CHANGE сразу следует имя поля, которое вы хотите изменить, затем указывается новое имя поля и тип.
mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;
Если вы хотите сейчас изменить поле j из BIGINT на INT, SQL-запрос будет выглядеть так:
mysql> ALTER TABLE testalter_tbl CHANGE j j INT;
Когда вы изменяете поле, вы можете указать, включать ли значение или устанавливать ли значения по умолчанию.
В следующем примере указано, что поле j должно быть NOT NULL и иметь значение по умолчанию 100 .
mysql> ALTER TABLE testalter_tbl -> MODIFY j BIGINT NOT NULL DEFAULT 100;
Если вы не установите значение по умолчанию, MySQL автоматически установит значение поля по умолчанию в NULL.
Вы можете использовать ALTER для изменения значения по умолчанию поля, попробуйте следующий пример:
mysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000; mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | c | char(1) | YES | | NULL | | | i | int(11) | YES | | 1000 | | +-------+---------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
Вы также можете использовать команду ALTER и подпредложение DROP для удаления значения по умолчанию поля, например:
mysql> ALTER TABLE testalter_tbl ALTER i DROP DEFAULT; mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | c | char(1) | YES | | NULL | | | i | int(11) | YES | | NULL | | +-------+---------+------+-----+---------+-------+ 2 rows in set (0.00 sec) Изменение типа таблицы:
Изменить тип таблицы данных можно с помощью команды ALTER и подпредложения TYPE. Попробуйте следующий пример, мы изменим тип таблицы testalter_tbl на MYISAM:
Внимание:Просмотреть тип таблицы данных можно с помощью предложения SHOW TABLE STATUS.
mysql> ALTER TABLE testalter_tbl ENGINE = MYISAM; mysql> SHOW TABLE STATUS LIKE 'testalter_tbl'\G *************************** 1. row **************** Имя: testalter_tbl Тип: MyISAM Row_format: Fixed Rows: 0 Avg_row_length: 0 Data_length: 0 Max_data_length: 25769803775 Index_length: 1024 Data_free: 0 Auto_increment: NULL Create_time: 2007-06-03 08:04:36 Update_time: 2007-06-03 08:04:36 Check_time: NULL Create_options: Комментарий: 1 row in set (0.00 sec)
Если нужно изменить имя таблицы, можно использовать предложение RENAME в语句е ALTER TABLE.
Попробуйте следующий пример для переименования таблицы testalter_tbl в alter_tbl:
mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;
Команда ALTER также может использоваться для создания и удаления индексов таблиц MySQL, о чем мы расскажем в следующих главах.