#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 месяца
Также стоит посмотреть