MySQL — команда ALTER

Команда MySQL ALTER очень полезна, когда вы хотите изменить имя своей таблицы, любого поля таблицы или если вы хотите добавить или удалить существующий столбец в таблице.

Начнем с создания таблицы под названием testalter_tbl .

root@host# mysql -u root -p password;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql> create table testalter_tbl
   -> (
   -> i INT,
   -> c CHAR(1)
   -> );
Query OK, 0 rows affected (0.05 sec)
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)

Удаление, добавление или перемещение столбца

Если вы хотите удалить существующий столбец i из приведенной выше таблицы MySQL, вы будете использовать предложение DROP вместе с командой ALTER, как показано ниже —

mysql> ALTER TABLE testalter_tbl  DROP i;

Предложение DROP не будет работать, если в таблице остался единственный столбец.

Чтобы добавить столбец, используйте ДОБАВИТЬ и укажите определение столбца. Следующий оператор восстанавливает столбец i в testalter_tbl —

mysql> ALTER TABLE testalter_tbl ADD i INT;

После выполнения этого оператора testalter будет содержать те же два столбца, что и при первом создании таблицы, но не будет иметь такой же структуры. Это связано с тем, что по умолчанию в конец таблицы добавляются новые столбцы. Итак, хотя изначально я был первым столбцом в mytbl, теперь он последний.

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)

Чтобы указать, что вам нужен столбец в определенной позиции в таблице, либо используйте FIRST, чтобы сделать его первым столбцом, либо AFTER col_name, чтобы указать, что новый столбец должен быть помещен после col_name.

Попробуйте выполнить следующие инструкции 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 или 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;

Если вы теперь используете CHANGE для преобразования j из BIGINT обратно в INT без изменения имени столбца, оператор будет таким, как показано ниже —

mysql> ALTER TABLE testalter_tbl CHANGE j j INT;

Влияние ALTER TABLE на атрибуты NULL и значения по умолчанию — При ИЗМЕНЕНИИ или ИЗМЕНЕНИИ столбца вы также можете указать, может ли столбец содержать значения NULL и каково его значение по умолчанию. Фактически, если вы этого не сделаете, MySQL автоматически присвоит значения этим атрибутам.

Следующий блок кода является примером, в котором столбец 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)

Вы можете удалить ограничение по умолчанию из любого столбца, используя предложение DROP вместе с командой ALTER .

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)

Изменение (изменение) типа таблицы

Вы можете использовать тип таблицы, используя предложение TYPE вместе с командой ALTER. Попробуйте следующий пример, чтобы изменить тип таблицы testalter_tbl на MYISAM .

Чтобы узнать текущий тип таблицы, используйте оператор SHOW TABLE STATUS .

mysql> ALTER TABLE testalter_tbl TYPE = MYISAM;
mysql>  SHOW TABLE STATUS LIKE 'testalter_tbl'\G
*************************** 1. row ****************
           Name: testalter_tbl
           Type: 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:
        Comment:
1 row in set (0.00 sec)

Переименование (изменение) таблицы

Чтобы переименовать таблицу, используйте RENAME опцию в ALTER TABLE заявление.

Попробуйте следующий пример переименовать testalter_tbl в alter_tbl .

mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;

Вы можете использовать команду ALTER для создания и удаления команды INDEX в файле MySQL. Мы подробно обсудим эту команду в следующей главе.

Выберите поля, которые будут показаны. Прочие будут скрыты. Перктаскивайте мышкой для изменения порядка полей.
  • Изображение
  • SKU
  • Рейтинг
  • Цена
  • Запасы
  • Доступность
  • В корзину
  • Описание
  • Содержимое
  • Вес
  • Размеры
  • Дополнительная информация
  • Атрибуты
  • Custom attributes
  • Настраиваемые поля
Сравнить
Список желаний 0
Открыть страницу желаний Продолжить покупки