Эффективное использование INSERT, UPDATE, DELETE, RETURNIN... | Вопросы для собеседования | Skilio
Эффективное использование INSERT, UPDATE, DELETE, RETURNING и UPSERT в PostgreSQL
Вопрос:

Как выполнить операции вставки, обновления и удаления в базе данных PostgreSQL? Приведите простые примеры SQL для каждой операции.

Подсказки:

  1. Рассмотрите использование оператора INSERT INTO для добавления данных, оператора UPDATE для изменения данных и оператора DELETE FROM для удаления данных.
  2. Помните, что эти операции часто требуют указания целевой таблицы и могут включать условия для указания записей, которые нужно обновить или удалить.

Выше ожиданий:

  1. Знает операцию RETURNING в PostgreSQL для получения значений из строк, которые были вставлены, обновлены или удалены.
  2. Знает ON CONFLICT для обработки нарушений ограничений уникальности при вставке, также известной как операция «upsert».
  3. Знает важность транзакций для обеспечения успешного выполнения серии операций и возможности отката в случае ошибок.
  4. Знает оператор WHERE для выбора конкретных строк для обновления или удаления.
  5. Знает концепцию индексов и то, как они могут улучшить производительность операций манипулирования данными.
Ответ:

Для выполнения операций манипулирования данными в PostgreSQL используйте операторы INSERT INTO, UPDATE и DELETE FROM.

Операция вставки

Для вставки новой строки в таблицу используйте оператор INSERT INTO. Этот оператор указывает целевую таблицу и значения, которые нужно добавить.

INSERT INTO employees (name, position, salary) 
VALUES ('John Doe', 'Software Engineer', 75000);

Операция обновления

Для обновления существующих записей в таблице используйте оператор UPDATE. Этот оператор позволяет изменять один или несколько столбцов существующих строк.

UPDATE employees 
SET salary = 80000 
WHERE name = 'John Doe';

Операция удаления

Для удаления записей из таблицы используйте оператор DELETE FROM. Этот оператор удаляет строки, которые соответствуют заданному условию.

DELETE FROM employees 
WHERE name = 'John Doe';

Операция upsert

Для обработки нарушений ограничений уникальности при вставке можно использовать ON CONFLICT, обычно называемое upsert. Это позволяет вставить строку или обновить её, если она уже существует.

INSERT INTO employees (id, name, salary) 
VALUES (1, 'Alice Brown', 90000) 
ON CONFLICT (id) 
DO UPDATE SET salary = EXCLUDED.salary;

Транзакции

Чтобы гарантировать успешное выполнение серии операций, используйте транзакции. Транзакции позволяют группировать несколько операторов в единицу работы, которая может быть подтверждена или отменена.

BEGIN;

INSERT INTO employees (name, position, salary) 
VALUES ('Eve White', 'Manager', 95000);

UPDATE employees 
SET salary = 96000 
WHERE name = 'Eve White';

COMMIT;
-- Используйте ROLLBACK вместо COMMIT для отмены изменений в случае ошибки.

Использование оператора WHERE

Оператор WHERE позволяет опеределить условие для операциях обновления и удаления.

UPDATE employees 
SET position = 'Senior Software Engineer' 
WHERE id = 2;

DELETE FROM employees 
WHERE salary < 60000;

Предложение RETURNING

Получить значения из вновь вставленной или отредактированной строки(строк).

INSERT INTO employees (name, position, salary) 
VALUES ('Jane Smith', 'Data Analyst', 70000) 
RETURNING id, name;

Индексы

Индексы могут улучшить производительность операций манипулирования данными, позволяя быстрее получать доступ к строкам. При работе с большими наборами данных следует рассмотреть возможность создания индексов по столбцам, используемым в предложениях WHERE.

CREATE INDEX idx_employee_name ON employees (name);
0
SQL Новичок Опубликовано
© Skilio, 2025
Условия использования
Политика конфиденциальности
Мы используем файлы cookie, для персонализации сервисов и повышения удобства пользования сайтом. Если вы не согласны на их использование, поменяйте настройки браузера.