Перейти к основному содержимому
Модуль 8 · Урок 1 из 429/57 в курсе~10 min
Уроки модуля (1/4)

Вставка данных: ВСТАВИТЬ

До сих пор вы читали данные. Пришло время написать кое-что. INSERT — это команда, добавляющая новые строки в таблицу.

Основной синтаксис

SQL
INSERT INTO tabella (col1, col2, …)
VALUES (val1, val2, …);

Пример нашего набора данных:

SQL
INSERT INTO customers (first_name, last_name, email, city, country, signed_up_on)
VALUES ('Marco', 'Bianchi', 'marco.bianchi@example.com', 'Verona', 'Italia', '2025-07-15');

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

Многорядная ВСТАВКА

Один оператор, несколько строк — гораздо быстрее, чем N отдельных INSERT:

SQL
INSERT INTO categories (name, parent_id) VALUES
  ('Gaming',         1),
  ('Smart Home',     1),
  ('Cucina vegana',  8);

ВОЗВРАТ: чтение только что вставленных значений.

Характерное для PostgreSQL предложение: RETURNING возвращает строки, которые были только что созданы. Чрезвычайно удобно для получения автоматически сгенерированного id:

SQL
INSERT INTO categories (name, parent_id)
VALUES ('Gaming', 1)
RETURNING id, name;

Выходные данные представляют собой таблицу из одной строки с id (назначенным SERIAL) и name.

Что произойдет, если столбец отсутствует

Если вы пропустите столбец в INSERT:

  • если это NOT NULL без DEFAULT → ошибка;
  • если у него есть DEFAULT (включая SERIAL для идентификатора) → он используется;
  • если он принимает NULL → он становится NULL.
SQL
-- Va bene: id è SERIAL (auto), country ha NOT NULL ma forniamo tutti i campi
INSERT INTO customers (first_name, last_name, email, city, country, signed_up_on)
VALUES ('Olivia', 'Marini', 'olivia.marini@example.com', 'Bari', 'Italia', '2025-07-20');

-- Errore: first_name è NOT NULL e non è fornito
INSERT INTO customers (last_name, email, city, country, signed_up_on)
VALUES ('Marini', 'olivia.marini@example.com', 'Bari', 'Italia', '2025-07-20');

Ваша очередь

Упражнение#sql.m8.l1.e1
Попыток: 0Загрузка…

Вставьте в таблицу клиентов нового клиента с именем «Марко», фамилией «Бьянки», адресом электронной почты «marco.bianchi@example.com», городом «Верона», страной «Италия» и подписью «15 июля 2025 г.». Явно назовите все столбцы.

Загрузка редактора…
Показать подсказку

Порядок значений в VALUES должен соответствовать порядку названных вами столбцов.

Решение доступно после 3 попыток

Обзор упражнения

Упражнение#sql.m8.l1.e2
Попыток: 0Загрузка…

Вставьте новую категорию «Игры» как дочернюю категорию «Elettronica» (id = 1). Используйте предложение RETURNING, чтобы вернуть идентификатор и имя вновь созданной категории.

Загрузка редактора…
Показать подсказку

RETURNING принимает список столбцов (или '*') точно так же, как SELECT.

Решение доступно после 3 попыток