ALTER TABLE. Изменение таблиц в базе данных MySQL

Команда ALTER TABLE в MySQL

Команда ALTER TABLE используется для осуществления изменений таблицы:

  • Добавление колонок
  • Удаление колонок
  • Модификация колонок
  • Изменения имени таблицы
  • Изменения кодировки таблицы
  • Добавление и удаление ограничений

Для дальнейших примеров будем использовать таблицу books из базы данных Bookstore, которую создали в одном из предыдущих постов.

Чтобы просмотреть изменения колонок в таблице, воспользуйтесь командой:
SHOW COLUMNS FROM table_name;

Перед началом работ выберем базу данных, с которой будем работать.

Как добавить колонку к таблице MySQL?

Синтаксис добавления колонки в таблицу:

Для примера добавим к таблице books колонку с именем discount, в которой будет хранится процент скидки на книги и amount для хранения количества книг.

Можно добавлять, удалять и модифицировать сразу несколько колонок за раз.

Каждая новая колонка добавляется в конец таблицы. Если вы хотите добавить новую колонку после определенной колонки, то используйте команду AFTER.

Добавим колонку shelf_position сразу после колонки price.

Как удалить колонку из таблицы MySQL?

Синтаксис удаления колонки из таблицы:

Если в таблице осталась только одна колонка, то ее удалить нельзя.

Удалим колонку edition с номером издания книги.

Как переставить колонки в таблице MySQL?

Чтобы переставить колонку используйте команду AFTER, также понадобится повторно определить тип данных.

Переместим колонку с ценой Price на место после колонки Author:

Как изменить имя и тип данных у колонки в таблице MySQL? 

Синтаксис смены имени и типа данных у колонки:

Сменим имя у колонки сreation_date на entry_date и тип данных c TIMESTAMP на DATE.

Если вы хотите сменить только тип данных, оставив имя колонки прежним, то воспользуйтесь следующим синтаксисом:

Как изменить значение по умолчанию в колонке таблицы MySQL?

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

Синтаксис установки значения по умолчанию для колонки:

Установим для колонки discount значение по умолчанию:

Чтобы удалить значение по умолчанию, используйте синтаксис:

Удалим созданное значение по умолчанию для колонки discount:

Как изменить имя таблицы MySQL?

Синтаксис переименования таблицы:

Изменим имя таблицы books на books_collection;

Как изменить метаданные о таблице в MySQL?

С помощью команды ALTER можно также изменить некоторые метаданные о таблице.

Для начала давайте их выведем.

Вывод для таблицы books будет выглядеть следующим образом.

mysql> SHOW TABLE STATUS LIKE 'books'\G;
*************************** 1. row ***************************
           Name: books
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 24
 Avg_row_length: 682
    Data_length: 16384
Max_data_length: 0
   Index_length: 0
      Data_free: 5242880
 Auto_increment: 25
    Create_time: 2019-01-18 20:00:32
    Update_time: NULL
     Check_time: NULL
      Collation: utf8_general_ci
       Checksum: NULL
 Create_options:
        Comment: 
1 row in set (0.00 sec)

mysql>

Для примера мы можем изменить тип движка таблиц:

И добавить комментарий к таблице: