Выражение INSERT

Выражение INSERT — это DML-оператор, который применяется для добавления новых строк в таблицу.

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

Синтаксис

INSERT INTO <target_table> [ ( <target_col_name> [ , ... ] ) ]
       {
         VALUES ( { <value> | DEFAULT | NULL } [ , ... ] ) [ , ( ... ) ]  |
         <query>
       }

Параметры

  • <target_table> — имя целевой таблицы, в которую будут вставлены строки


  • <target_col_name> — имена колонок, в которые будут вставлены значения. Если какие-то колонки таблицы не указаны, то в них будут вставлены значения по умолчанию. Параметр является опциональным. Если его не указывать, то должны быть указаны добавляемые значения для всех колонок.


  • VALUES ( value | DEFAULT | NULL [ , ... ] ) [ , ( ... ) ] — указывает одно или несколько значений для вставки в соответствующие колонки целевой таблицы.

    • value — явно указанное значение; может быть литералом или выражением.

    • DEFAULT — значение по умолчанию для соответствующей колонки целевой таблицы.

    • NULL — пустое значение.

    Значения разделяются запятыми.

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


  • query — запрос, результат которого будет вставлен в целевую таблицу. Таким образом можно вставлять строки в целевую таблицу из одной или нескольких исходных таблиц.

Пример вставки явно заданных значений

Вставим в таблицу capitals значения для колонок country и capital:

CREATE TABLE capitals (country VARCHAR, capital VARCHAR);
INSERT INTO capitals VALUES
    ('Russia', 'Moscow'),
    ('Italy', 'Rome'),
    ('Spain', 'Madrid'),
    ('France', 'Paris');

SELECT * FROM capitals;
+---------+---------+
| country | capital |
+---------+---------+
| France  | Paris   |
+---------+---------+
| Italy   | Rome    |
+---------+---------+
| Russia  | Moscow  |
+---------+---------+
| Spain   | Madrid  |
+---------+---------+

Пример вставки результатов вложенного запроса

Теперь создадим другую таблицу capitals_m и сделаем вставку строк из capitals, которые будут результатом вложенного запроса SELECT. Вставим такие строки из capitals, в которых значение capital содержит M.

CREATE TABLE capitals_m (country VARCHAR, capital VARCHAR);

INSERT INTO capitals_m (country, capital)
    SELECT * FROM capitals
        WHERE capital LIKE '%M%';

SELECT * FROM capitals_m;
+---------+---------+
| country | capital |
+---------+---------+
| Russia  | Moscow  |
+---------+---------+
| Spain   | Madrid  |
+---------+---------+