Как выполнить операции вставки, обновления и удаления в базе данных PostgreSQL? Приведите простые примеры SQL для каждой операции.
Подсказки:
- Рассмотрите использование оператора
INSERT INTO
для добавления данных, оператораUPDATE
для изменения данных и оператораDELETE FROM
для удаления данных. - Помните, что эти операции часто требуют указания целевой таблицы и могут включать условия для указания записей, которые нужно обновить или удалить.
Выше ожиданий:
- Знает операцию
RETURNING
в PostgreSQL для получения значений из строк, которые были вставлены, обновлены или удалены. - Знает
ON CONFLICT
для обработки нарушений ограничений уникальности при вставке, также известной как операция «upsert». - Знает важность транзакций для обеспечения успешного выполнения серии операций и возможности отката в случае ошибок.
- Знает оператор
WHERE
для выбора конкретных строк для обновления или удаления. - Знает концепцию индексов и то, как они могут улучшить производительность операций манипулирования данными.
Для выполнения операций манипулирования данными в 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);