Ответ
Представление (View) — это виртуальная таблица, результат сохраненного SQL-запроса. Данные физически не дублируются, представление обращается к данным базовых таблиц при каждом вызове.
Основные цели использования:
-
Абстракция и упрощение: Сокрытие сложности многотабличных запросов с JOIN и агрегациями.
CREATE VIEW order_summary AS SELECT o.id, o.order_date, c.name as customer_name, SUM(oi.quantity * oi.unit_price) as total_amount FROM orders o JOIN customers c ON o.customer_id = c.id JOIN order_items oi ON o.id = oi.order_id GROUP BY o.id, o.order_date, c.name; -- Теперь сложный запрос становится простым SELECT * FROM order_summary WHERE total_amount > 1000; -
Контроль доступа (безопасность): Можно предоставить пользователю доступ только к определенным столбцам и строкам через View, скрыв чувствительные данные или всю структуру таблиц.
CREATE VIEW public_employee_info AS SELECT id, first_name, last_name, department FROM employees; -- Зарплата (salary) и другие поля скрыты. -
Обеспечение согласованности: Представление может гарантировать, что все пользователи работают с одними и теми же вычисляемыми полями или условиями отбора.
Важные особенности:
- Материализованные представления (Materialized Views): В некоторых СУБД (PostgreSQL, Oracle) данные могут кэшироваться физически для повышения производительности, с возможностью периодического обновления (
REFRESH MATERIALIZED VIEW). - Обновляемые представления: Не все представления допускают операции
INSERT/UPDATE/DELETE. Это возможно, обычно, только для простых представлений, основанных на одной таблице. - Производительность: Неоптимизированное представление с тяжелыми JOIN и агрегациями может снижать производительность. Важно индексировать базовые таблицы.