Лекция № 7

Тема: "Работа с представлениями"

       

План

1. Понятие представления

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

3. Изменение и удаление представлений

4. Работа с представлениями в среде SQL Server Management Studio

5. Работа с представлениями в среде SQL Manager for MySQL

 

 

1. Понятие представления

Часто при работе с БД пользователю приходится часто вводить тексты одних и тех же запросов для выборки данных. Было бы удобно иметь какой-то способ сохранения таких запросов для будущего использования.

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

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

Представление имеет ряд преимуществ:

- легкое многократное выполнение запросов любой сложности без необходимости вводить сам текст запроса;

- возможность использования имени представления в других запросах, что фактически означает использование подзапроса, но с более короткой записью (вместо самого текста подзапроса можно указать имя представления);

- повышение защищенности базы данных. Можно организовать работу таким образом, что пользователь не будет иметь доступа к таблицам, а сможет работать только через представления.

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

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

- если в представлении отображаются данные из нескольких связанных таблиц, то такое представление не является редактируемым. Его можно только просматривать;

- представление не может включать в себя запросы, объединенные операцией UNION;

- представления в MySQL не могут содержать подзапросы, но могут вместо подзапросов использовать другие представления.

 

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

Для создания представления используют команду вида:

 

Сreate View имя_представления

As

    текст_запроса

    [Where условие

    [With Check Option]]

 

Пример. Создать представление, которое выведет ФИО всех студентов в алфавитном порядке

 

Create View stud_list

As

    Select fam, imya, otch

    From students

   

После выполнения такой команды в базе данных будет создан новый объект с именем "stud_list", но сами данные выведены на экран не будут.

 

Пример. Используя созданное представление, вывести список студентов на экран с сортировкой по фамилии. Если рассматривать представление как таблицу, то вывести из нее данные можно так:

 

Select *

From stud_list

Order by fam

 

Пример. Для каждой группы учебного заведения рассчитать количество студентов.

 

Create View kol_stud_grup

As

    Select grupa, count(students.id_stud) as kol

    From grupy inner join students

               on grupy.id_grup=students.id_grup

    Group by grupa

 

Пример. Выведем количество студентов по группам.

 

Select *

From kol_stud_grup

 

Если в запросе представления указан раздел задания условий Where, то вместе с ним можно задать параметр . Данный параметр указывает, что если при редактировании или добавлении данных в представление вводить данные, не удовлетворяющие ограничениям Where, то такие данные не сохраняются. Если же задано ограничение Where, но не указан параметр With Check Option, то при редактировании или добавлении данных в представление никаких онраничений на ввод не существует.

Пример. Пусть имеется представление, которое отбирает студентов мужского пола.

 

Create View list_stud_men

As

    Select *

    From students

    Where pol='м'

    With Check Option

       

Если в даное представление попытаться ввести данные с полом, отличным от 'м', то такие данные не сохраняются.

 

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

Как говорилось выше в представлении нельзя использовать подзапросы, но можно использовать другие представления.

 

Пример. Для каждого студента вывести размер стипендии, рассчитываемый по формуле:

- 1500, средний балл 5;

- 1300, средний балл от 4 и выше;

- 0, в противном случае.

Стипендию получают только студенты, обучающиеся на бюджете.

Вначале создадим представление, в котором отберем средний балл каждого студента.

 

Create View stud_srbal

As

    Select id_stud, avg(ocenka) as srbal

    From ocenki

    Group by id_stud

 

Имея представление, свяжем его как таблицу с таблицей "students" и рассчитаем стипендию для каждого студента.

 

Create View stip_list

As

    Select fam, imya, case when srbal=5 then 600

                           when srbal>=4 then 550

                           else 0 end as stip

    From students inner join stud_srbal

                  on students.id_stud=stud_srbal.id_stud

    Where finance='Бюджет'

    Order by fam

 

Выведем список стипендиатов.

 

Select *

From stip_list

 

3. Изменение и удаление представлений

Для внесения изменений в представление использую команду вида:

 

Alter View имя_представления

As

    текст_запроса

    [Where условие

    [With Check Option]]

 

Указывается имя существующего представления, а затем новый запрос с новыми параметрами.

 

Для удаления представления используется команда:

 

Drop View имя_представления

 

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

 

4. Работа с представлениями в среде SQL Server Management Studio

При работе в "Среде SQL Server Management Studio" список представлений, имеющихся в базе данных, находится в папке Представления. Для создания нового представления достаточно выбрать в контекстном меню папки команду "Создать представление". В ответ откроется новое окно, в котором нужно выбрать таблицы, по которым будет строиться представление.

Окно конструктора представлений похоже на окно конструктора запросов в Access.

В верхней части окна выберите поля, которые вы хотите поместить в представление.

В следующем разделе для каждого выбранного поля можно задать параметры: псевдоним для поля, тип сортировки и условия для отбора по полю (фильтр).

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

С помощью кнопки "Выполнить код SQL" можно проверить результат работы сформированного запроса, который отображается в нижней части окна конструктора.

После задания всех параметров сохраните представление для использования в будущем.

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

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

Просмотр зависимостей

Для просмотра зависимостей между представлением и другими объектами базы данных следует в контекстном меню представления выбрать команду "Просмотреть зависимости". В окне с помощью переключателей можно просмотреть объекты, который зависят от представления, или объекты, от которых зависит само представление.

Открытие представления

Для просмотра и редактирования данных в контекстном меню нужного представления выберите команду "Изменить первые 200 строк". Обратите внимание, что изменять данные можно только через те представления, которые построены по одной таблице и не имеют агрегатных функций расчета и группировок данных.

Удаление представления

В контекстном меню представления выберите команду Удалить. Если в БД нет объектов, зависящих от удаляемого, то операция будет выполнена успешно. В противном случае нужно предварительно удалить все зависимые объекты.

 

5. Работа с представлениями в среде SQL Manager for MySQL

При работе в "Среде SQL Manager for MySQL" список представлений, имеющихся в базе данных, находится в папке Представления. Для создания нового представления достаточно выбрать в контекстном меню папки команду "Новый объект: Представление". В ответ откроется новое окно, в котором нужно ввести имя представления, а ниже текст запроса. После задания всех параметров щелкните по команде Compile. В результате в БД будет создано представление, а в верхней части окна задания параметров представления появится закладка Данные, на которой можно просмотреть данные представления. Измекнить данные через представление в данном окне нельзя.

В дальнейщем для открытия, просмотра или изменения представления достаточно открыть его двойным щелчком.

Удаление представления

В контекстном меню представления выберите команду Удалить представление. 

 

Вопросы для самоконтроля

1. Для чего используют представления? Какие у них преимущества и ограничения?

2. Опишите команду создания представления. Как открыть представление для просмотра?

3. Что означает параметр With Check Option  в команде создания представления?

4. Как изменить или удалить представление?