0Pricing
SQL Academy · Урок

INSERT с несколькими строками

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

«INSERT с несколькими строками» — бесплатный урок SQL Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения SQL Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс SQL Academy содержит 4 уроков всего.

INSERT одной строки

В простейшей форме указываются столбцы и передаются значения:

INSERT INTO users (email, full_name)
VALUES ('alice@example.com', 'Alice Adams');

INSERT нескольких строк

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

INSERT INTO users (email, full_name) VALUES
  ('alice@example.com', 'Alice Adams'),
  ('bob@example.com',   'Bob Brown'),
  ('carol@example.com', 'Carol Chen');

Почему несколько строк работают быстрее

Меньше обращений к базе данных, меньше циклов разбора и планирования, один сброс WAL. При массовой вставке сотен строк несколько значений в VALUES работают в 5–10 раз быстрее, чем вставка по одной строке.

Значения DEFAULT

Не указывайте столбец, чтобы использовать его DEFAULT (или NULL):

INSERT INTO orders (user_id, total)
VALUES (1, 99.50);
-- id, created_at, status filled by DEFAULTs

Явный DEFAULT

Или используйте ключевое слово DEFAULT:

INSERT INTO orders (id, user_id, total, status)
VALUES (DEFAULT, 1, 99.50, DEFAULT);

RETURNING

Получите столбцы вставленных строк без второго запроса (PostgreSQL):

INSERT INTO users (email, full_name)
VALUES ('alice@example.com', 'Alice Adams')
RETURNING id, created_at;

INSERT … SELECT

Скопируйте или преобразуйте строки из другой таблицы:

INSERT INTO archive_orders (id, user_id, total)
SELECT id, user_id, total
FROM orders
WHERE created_at < NOW() - INTERVAL '5 years';

Массовая загрузка с помощью COPY

Для десятков тысяч строк и более используйте команду COPY — это значительно более быстрый способ:

COPY users (email, full_name) FROM '/tmp/users.csv' (FORMAT csv, HEADER true);

-- Or from STDIN in a client:
COPY users (email, full_name) FROM STDIN;
 alice@example.com\tAlice
 bob@example.com\tBob
 \.

Не используйте большие транзакции без необходимости

Одна транзакция = один атомарный блок. Если импорт миллиона строк завершится ошибкой на полпути, вся операция откатится. Иногда это именно то, что нужно; иногда строки лучше обрабатывать пакетами по 10 тысяч.

Советы по производительности INSERT

Для больших вставок:

  • Удалите вторичные индексы, выполните вставку и создайте их заново
  • Отключите триггеры и проверки FK, если это безопасно
  • По возможности используйте COPY
  • Настройте maintenance_work_mem для перестроения индексов

Предварительный обзор обработки конфликтов

Чтобы «вставить, если строки ещё нет, иначе обновить», используйте INSERT ... ON CONFLICT — это будет рассмотрено в следующем уроке.

Итоги

INSERT прост в использовании; несколько значений в VALUES и INSERT … SELECT покрывают повседневные случаи. RETURNING избавляет от лишних обращений к базе данных. Для массовой загрузки используйте COPY.

Быстрая проверка

Как быстрее всего загрузить 100 000 строк из файла CSV в PostgreSQL?

Часто задаваемые вопросы

Урок «INSERT с несколькими строками» бесплатный?

Да — полный текст урока «INSERT с несколькими строками» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс SQL Academy, подпишись на CoddyKit PRO. Курс SQL Academy содержит 4 уроков всего.

Чему я научусь в уроке «INSERT с несколькими строками»?

Добавляйте одну или несколько строк одним оператором и используйте INSERT ... SELECT для копирования данных между таблицами Ты практикуешь SQL Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать SQL Academy?

Предыдущий опыт не требуется. SQL Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «INSERT с несколькими строками»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке SQL Academy?

Да. Каждый урок SQL Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. INSERT с несколькими строками
  2. UPSERT: ON CONFLICT DO UPDATE (PostgreSQL)
  3. UPDATE с FROM и обновления в стиле JOIN
  4. DELETE с USING и безопасные шаблоны
← Назад к SQL Academy