Создание и управление представлениями. Материализованные и изменяемые представления

В SQL представления (или view) используются для создания виртуальных таблиц, которые отображают данные из одной или нескольких таблиц. Представления могут быть изменяемыми или материализованными. Рассмотрим создание и управление представлениями, а также различия между ними.

Создание и управление представлениями

Создание представления

Простой пример представления:

CREATE VIEW EmployeeView AS
SELECT EmployeeID, FirstName, LastName, Department
FROM Employees
WHERE Status = 'Active';

В этом примере создается представление EmployeeView, которое отображает активных сотрудников из таблицы Employees.

Обновление и удаление представлений

  • Обновление представления:

    Чтобы изменить представление, используйте команду CREATE OR REPLACE VIEW (в некоторых системах DROP VIEW и повторное создание):

    CREATE OR REPLACE VIEW EmployeeView AS
    SELECT EmployeeID, FirstName, LastName, Department, Salary
    FROM Employees
    WHERE Status = 'Active';
  • Удаление представления:

    DROP VIEW EmployeeView;

Материализованные представления

Материализованные представления (или материализованные таблицы) хранят данные на диске, что позволяет ускорить запросы к большим объемам данных. Они обновляются либо по расписанию, либо вручную.

Создание материализованного представления

Пример на PostgreSQL:

CREATE MATERIALIZED VIEW EmployeeSummary AS
SELECT Department, COUNT(*) AS EmployeeCount, AVG(Salary) AS AvgSalary
FROM Employees
GROUP BY Department;

В этом примере создается материализованное представление EmployeeSummary, которое агрегирует данные о сотрудниках по отделам.

Обновление материализованного представления

Обновление данных в материализованном представлении:

  • В PostgreSQL:

    REFRESH MATERIALIZED VIEW EmployeeSummary;

    Это команда обновляет данные в материализованном представлении.

  • В Oracle:

    BEGIN
       DBMS_MVIEW.REFRESH('EmployeeSummary');
    END;

    Также можно настроить автоматическое обновление, используя расписания и DBMS_SCHEDULER или DBMS_JOB.

Изменяемые представления

Изменяемые представления позволяют выполнять операции INSERT, UPDATE и DELETE на данные, используя представление. Но они могут иметь ограничения.

Создание изменяемого представления

Пример на SQL Server:

CREATE VIEW EmployeeView AS
SELECT EmployeeID, FirstName, LastName, Department
FROM Employees
WHERE Status = 'Active'
WITH SCHEMABINDING;
  • WITH SCHEMABINDING: Этот параметр предотвращает изменения в базовых таблицах, которые могут нарушить представление.

Обновление данных через изменяемое представление

UPDATE EmployeeView
SET Department = 'New Department'
WHERE EmployeeID = 123;

Ограничения:

  • Изменяемое представление должно быть основано на одной таблице.

  • Простое представление: Обновление данных через простое представление обычно разрешено, если не используются агрегатные функции или объединения.

  • Комплексные представления: Если представление включает соединения, агрегатные функции или подзапросы, оно может быть только для чтения.

Итог

  • Обычные представления (views) создаются для упрощения запросов и улучшения безопасности, но не хранят данные.

  • Материализованные представления хранят данные на диске, что позволяет ускорить запросы, но требуют обновления.

  • Изменяемые представления позволяют выполнять изменения данных, но могут иметь ограничения в зависимости от сложности представления.

Эти подходы и их реализация могут отличаться в зависимости от используемой системы управления базами данных, поэтому важно проверять документацию конкретной СУБД для получения детальной информации.

Last updated