INSERT в PostgreSQL: добавление данных

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

Основы оператора INSERT

Базовый синтаксис:

INSERT INTO table_name (column1, column2) VALUES (value1, value2);

Добавление нескольких строк за один запрос:

INSERT INTO users (name, age) VALUES ('Алексей', 30), ('Мария', 25);

Вставка с указанием всех столбцов

Если данные добавляются во все столбцы таблицы, можно опустить их перечисление:

INSERT INTO users VALUES (1, 'Алексей', 30);

Вставка данных из другого запроса

Можно вставлять данные из другого запроса с помощью SELECT:

INSERT INTO archived_users (id, name, age)
SELECT id, name, age FROM users WHERE age > 40;

Вставка с конфликтами (ON CONFLICT)

Для предотвращения ошибок при вставке дублирующихся значений используется ON CONFLICT:

INSERT INTO users (id, name, age) VALUES (1, 'Алексей', 30)
ON CONFLICT (id) DO NOTHING;

Обновление данных при конфликте:

INSERT INTO users (id, name, age) VALUES (1, 'Алексей', 30)
ON CONFLICT (id) DO UPDATE SET name = EXCLUDED.name, age = EXCLUDED.age;

Возвращение вставленных данных

Для получения вставленных данных используется RETURNING:

INSERT INTO users (name, age) VALUES ('Ольга', 28) RETURNING id;