Оператор 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;