Руководство по SQL. Изменение таблицы.

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

Запрос с использованием команды ALTER TABLE для добавления новой колонки имеет следующий вид:


ALTER TABLE имя_таблицы ADD имя_колонки тип_данных;

Для удаления колонки:


ALTER TABLE имя_таблицы DROP имя_колонки;

Для изменения типа данных:


ALTER TABLE имя_таблицы MODIFY COLUMN имя_колонки тип_данных;

Для добавления констрейнта (например, NOT NULL):


ALTER TABLE имя_таблицы MODIFY имя_колонки тип_данных NOT NULL;

Для удаления констрейнта (например, NOT NULL):


ALTER TABLE имя_таблицы DROP CONSTRAINT someConstraint;

Пример:

Предположим, что у нас есть таблица developers, которая содержит следующие записи:


+----+-------------------+------------+------------+--------+
| ID | NAME              | SPECIALTY  | EXPERIENCE | SALARY |
+----+-------------------+------------+------------+--------+
|  1 | Eugene Suleimanov | Java       |          2 |   2500 |
|  2 | Peter Romanenko   | Java       |          3 |   3500 |
|  3 | Andrei Komarov    | JavaScript |          3 |   2500 |
|  4 | Konstantin Geiko  | C#         |          2 |   2000 |
|  5 | Asya Suleimanova  | UI/UX      |          2 |   1800 |
|  6 | Kolya Nikolaev    | Javascript |          5 |   3400 |
|  7 | Ivan Ivanov       | C#         |          1 |    900 |
|  8 | Ludmila Geiko     | UI/UX      |          2 |   1800 |
+----+-------------------+------------+------------+--------+

Допустим, что мы хотим добавить новую колонку AGE (возраст).
Для этого нам необходимо использовать следующую команду:


mysql> ALTER TABLE developers ADD AGE INT;

Теперь наша таблица содержит данные такого вида:


+----+-------------------+------------+------------+--------+------+
| ID | NAME              | SPECIALTY  | EXPERIENCE | SALARY | AGE  |
+----+-------------------+------------+------------+--------+------+
|  1 | Eugene Suleimanov | Java       |          2 |   2500 | NULL |
|  2 | Peter Romanenko   | Java       |          3 |   3500 | NULL |
|  3 | Andrei Komarov    | JavaScript |          3 |   2500 | NULL |
|  4 | Konstantin Geiko  | C#         |          2 |   2000 | NULL |
|  5 | Asya Suleimanova  | UI/UX      |          2 |   1800 | NULL |
|  6 | Kolya Nikolaev    | Javascript |          5 |   3400 | NULL |
|  7 | Ivan Ivanov       | C#         |          1 |    900 | NULL |
|  8 | Ludmila Geiko     | UI/UX      |          2 |   1800 | NULL |
+----+-------------------+------------+------------+--------+------+

Теперь попробуем удалить колонку AGE.
Для этого выполним следующий запрос:


mysql> ALTER TABLE developers DROP AGE;

В результате выполнения данного запроса, наша таблица будет иметь записи следующего вида:

+----+-------------------+------------+------------+--------+
| ID | NAME              | SPECIALTY  | EXPERIENCE | SALARY |
+----+-------------------+------------+------------+--------+
|  1 | Eugene Suleimanov | Java       |          2 |   2500 |
|  2 | Peter Romanenko   | Java       |          3 |   3500 |
|  3 | Andrei Komarov    | JavaScript |          3 |   2500 |
|  4 | Konstantin Geiko  | C#         |          2 |   2000 |
|  5 | Asya Suleimanova  | UI/UX      |          2 |   1800 |
|  6 | Kolya Nikolaev    | Javascript |          5 |   3400 |
|  7 | Ivan Ivanov       | C#         |          1 |    900 |
|  8 | Ludmila Geiko     | UI/UX      |          2 |   1800 |
+----+-------------------+------------+------------+--------+

На этом мы заканчиваем изучения способа изменения структуры таблицы.
В следующей статье мы рассмотрим способ удаления всех данных из таблицы.