Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции по бд.doc
Скачиваний:
6
Добавлен:
01.05.2025
Размер:
4.79 Mб
Скачать

Использование представлений для управления выводом данных

Представления являются очень удобным средством для создания итоговых отчетов на основе данных таблиц, которые обновляются очень часто.

Предположим, у вас есть таблица с информацией о городе проживания, поле, оплате труда и возрасте сотрудников фирмы. Тогда вы имеете возможность создать на основе таблицы представление, предлагающее сведения о сотрудниках по каждому городу, включающее средний возраст, среднюю зарплату, общее число сотрудников и общее число сотрудниц. После создания такого представления, его можно будет использовать для извлечения подобной информации из таблицы вместо того, чтобы каждый раз создавать соответствующий оператор SELECT, который в подобном случае может быть довольно сложным.

Единственной особенностью синтаксиса оператора, с помощью которого создается представление с итоговыми данными, по сравнению с обычным представлением является наличие в операторе итоговых функций. По поводу использования итоговых функций обратитесь снова к тексту урока 9, "Подведение итогов по данным запроса".

Хранение представлений

Представление существует только в оперативной памяти. Представление не требует дискового пространства, как другие объекты базы данных, кроме пространства, занимаемого определением самого представления. Владельцем представления является создатель представления или владелец схемы. Владелец схемы автоматически получает все соответствующие привилегии доступа к представлению и право предоставлять привилегии доступа к нему другим пользователям точно так же, как и в отношении обычных таблиц. С представлениями команда GRANT и ее опция GRANT OPTION работают точно так же, как и с таблицами. За подробностями обратитесь к тексту урока 19, "Обеспечение сохранности данных".

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

Представления создаются с помощью команды CREATE VIEW. Представление можно создать на базе данных одной или нескольких таблиц, а также других представлений. Чтобы создать представление, пользователь должен иметь соответствующие привилегии доступа к системе, зависящие от реализации языка.

Базовый синтаксис оператора CREATE VIEW следующий.

CREATE [ RECURSIVE ] VIEW ИМЯ_ПРЕДСТАВЛЕНИЯ

[ИМЯ_СТОЛБЦА [, ИМЯ_СТОЛБЦА]]

AS

{ОПЕРАТОР SELECT}

WITH [CASCADED | LOCAL] CHECK OPTION]

Примеры различных способов создания представлений с помощью оператора CREATE VIEW обсуждаются в следующих разделах.

В ANSI SQL никакого стандарта для оператора ALTER VIEW не предусматривается.

Создание представления для данных одной таблицы

Представление может быть создано на основе данных одной таблицы. Синтаксис соответствующего оператора следующий (указанная здесь опция WITH CHECK OPTION будет обсуждаться чуть позже).

CREATE VIEW ИМЯ_ПРЕДСТАВЛЕНИЯ AS 

SELECT * | СТОЛБЕЦ1 [ , СТОЛБЕЦ2 ] 

FROM ИМЯ_ТАБЛИЦЫ

[ WHERE ВЫРАЖЕНИЕ1 [, ВЫРАЖЕНИЕ2 ]]

[ WITH CHECK OPTION ]

[ GROUP BY ]

В своем самом простом виде представление строится на основе всех данных таблицы, как в следующем примере.

CREATE VIEW CUSTOMERS AS SELECT * FROM CUSTOMER_TBL;

В следующем примере создаваемое представление должно содержать только указанные столбцы таблицы.

CREATE VIEW EMP_VIEW AS

      SELECT LAST_NAME, FIRST_NAME, MIDDLE_NAME

      FROM EMPLOYEE_TBL;

Из следующего примера видно, как создаются представления на основе одной или нескольких таблиц с подведением итогов.

CREATE VIEW CITY_PAY AS

      SELECT E.CITY, AVG (P.PAY_RATE) AVG_PAY

      FROM EMPLOYEE_TBL E

      EMPLOYEE_PAY_TBL P 

        WHERE E.EMP_ID = P.EMP_ID 

        GROUP BY E.CITY;

Теперь выберем данные только что созданного представления.

SELECT *   FROM CITY_PAY;

CITY            AVG_PAY

        --------------------------

        GREENWOOD

        INDIANAPOLIS    13.33333 

          WHITELAND

       

После создания представления его использование в операторах SELECT позволяет их значительно упростить.