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 — локальная установка не требуется.
Все уроки этого курса
- INSERT с несколькими строками
- UPSERT: ON CONFLICT DO UPDATE (PostgreSQL)
- UPDATE с FROM и обновления в стиле JOIN
- DELETE с USING и безопасные шаблоны