#7 – Представления и транзакции
Відеоурок
В PostgreSQL команды CREATE VIEW и транзакции играют важную роль в построении гибких, безопасных и удобных систем работы с базами данных. Первая помогает упростить сложные запросы, вторая — гарантирует целостность данных. Разберём обе темы по порядку.
Что такое VIEW и зачем он нужен
Представление (или VIEW) — это виртуальная таблица, результат заранее определённого SQL-запроса. Она не хранит данные физически, а лишь показывает их так, как вы задали в момент создания. Это позволяет скрыть сложную логику запросов и упростить доступ к данным.
Пример:
CREATE VIEW sales_report AS
SELECT users.name, SUM(orders.price) AS total_price
FROM users
FULL JOIN orders ON orders.user_id = users.id
GROUP BY users.name;
Теперь вместо длинного JOIN-запроса вы можете просто обращаться к sales_report:
SELECT * FROM sales_report;
Представления часто используют для:
- создания аналитических отчётов (как в примере выше);
- ограничения доступа к чувствительным данным (например, показывать только имя и email без паролей);
- упрощения повторяющихся запросов в больших проектах;
- логического разделения слоёв данных — как аналог “представления” таблиц в приложении.
Транзакции: безопасность изменений
Транзакция — это последовательность SQL-команд, которые выполняются как единое целое. Если хотя бы одна из них завершается ошибкой — все изменения откатываются. Это гарантирует целостность данных.
Основные команды:
BEGIN; // начало транзакции
UPDATE users SET age = 10 WHERE id = 1;
INSERT INTO users (name, email) VALUES ('John', '[email protected]');
COMMIT; -- подтверждение изменений
Если в процессе вы поняли, что допустили ошибку, можно отменить всё:
ROLLBACK; // отмена изменений
После COMMIT транзакция завершается, и ROLLBACK уже не сработает — данные зафиксированы в базе.
Зачем нужны транзакции
Транзакции особенно важны в следующих случаях:
- При множественных изменениях данных (например, при оформлении заказа и изменении баланса пользователя).
- При обработке финансовых операций, где нельзя потерять часть данных.
- Для защиты от ошибок во время выполнения SQL-команд.
- В многопользовательских системах — чтобы разные запросы не конфликтовали между собой.
Вихідний код
Весь код буде доступний після підписки на проект! Завдання до уроку
Необхідно оформити передплату на проект, щоб отримати доступ до всіх домашніх завдань
Велике завдання за курсом
Вам необхідно оформити передплату на сайті, щоб мати доступ до всіх великих завдань. У завдання входить методика рішення, а також готовий проект з відповіддю до завдання.
PS: подібні завдання доступні при підписці від 1 місяця
Також варто подивитися