Ответ
VIEW (Представление) — это виртуальная таблица, результат сохранённого SQL-запроса. Она не хранит данные физически, а каждый раз при обращении выполняет запрос к базовым таблицам.
Основные преимущества использования:
- Абстракция и безопасность: Можно скрыть сложность запросов (JOIN, агрегатные функции) и ограничить доступ пользователей только к определённым столбцам или строкам.
- Согласованность: Если структура базовых таблиц изменится, можно обновить VIEW, и клиентские приложения, работающие с ней, могут не потребовать изменений.
- Упрощение: Сложную бизнес-логику выборки данных можно инкапсулировать в VIEW.
Пример создания и использования в SQL:
-- Создание VIEW, показывающей только активных пользователей и их заказы
CREATE VIEW active_user_orders AS
SELECT
u.id AS user_id,
u.username,
u.email,
o.id AS order_id,
o.total_amount,
o.created_at
FROM users u
INNER JOIN orders o ON u.id = o.user_id
WHERE u.is_active = TRUE AND o.status = 'completed';
-- Использование VIEW как обычной таблицы
SELECT username, COUNT(order_id) as total_orders
FROM active_user_orders
GROUP BY username
ORDER BY total_orders DESC;
Важные ограничения:
- Не все VIEW являются обновляемыми (updatable). Как правило, нельзя выполнять
INSERT/UPDATE/DELETEдля VIEW, созданных на основе JOIN, агрегатных функций или DISTINCT. - Производительность зависит от производительности базового запроса. Для сложных VIEW может потребоваться индексация базовых таблиц или использование материализованных представлений (Materialized Views), которые кэшируют результат (не все СУБД поддерживают).