Gymterview
junior

Что такое представление (view) и для чего оно применяется?

Представление (View) — виртуальная таблица, определяемая SQL-запросом. Представление не хранит данные самостоятельно: при каждом обращении к нему СУБД выполняет сохранённый SELECT-запрос и возвращает актуальный результат. Представления работают в запросах и DML-операторах так же, как обычные таблицы.

Аналогия из жизни: представление — это сохранённый фильтр в таблице Excel. Данные остаются в исходной таблице, но вы видите их через определённый «срез», и при изменении данных срез обновляется автоматически.

Для чего применяется

  • Упрощение сложных запросов — один раз написали SELECT с JOIN, потом обращаемся к представлению как к обычной таблице
  • Ограничение доступа к данным — пользователю даётся доступ к представлению, содержащему только допустимые столбцы или строки, а не к базовой таблице
  • Абстракция от структуры БД — приложение работает с представлением, и при изменении схемы таблиц достаточно обновить представление
  • Стандартизация вычислений — логика расчёта (например, полная стоимость заказа с налогом) описана в одном месте
Пример
CREATE VIEW active_employees AS
SELECT id, name, department, salary
FROM employees
WHERE status = 'active';

-- Использование
SELECT * FROM active_employees WHERE department = 'IT';

Ограничения

Не все представления поддерживают INSERT/UPDATE/DELETE. Обновляемое представление должно ссылаться на одну таблицу, не содержать агрегатных функций, DISTINCT, GROUP BY, UNION. Для обхода этого ограничения используются триггеры INSTEAD OF.

На собеседовании: ключевое — представление не хранит данных, это сохранённый запрос. Частая ошибка — забыть про ограничения на обновляемость представлений.