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

Вставлення даних: INSERT

Досі ви читали дані. Настав час написати. 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 нічого не ламає) та самодокументи.

Багаторядний INSERT

Один оператор, кілька рядків — набагато швидше, ніж N окремих INSERTs:

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», адресою електронної пошти «marco.bianchi@example.com», містом «Verona», країною «Italia» та signed_up_on «2025-07-15». Явно назвіть усі стовпці.

Завантаження редактора…
Показати підказку

Порядок значень у VALUES має відповідати порядку вказаних вами стовпців.

Рішення доступне після 3 спроб

Повторна вправа

вправи#sql.m8.l1.e2
Спроби: 0Завантаження…

Вставте нову категорію «Ігри» як дочірню категорію «Elettronica» (id = 1). Використовуйте речення RETURNING, щоб повернути ідентифікатор та назву новоствореної категорії.

Завантаження редактора…
Показати підказку

RETURNING приймає список стовпців (або '*') так само, як SELECT.

Рішення доступне після 3 спроб