Представления


Содержание лекционного занятия:

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

Представление (view) — это предопределенный запрос, который хранится в базе Данных. Представление можно рассматривать как виртуальную таблицу, которая формируется из одной или нескольких реальных таблиц базы данных (и/или ра­нее созданных представлений). Работа с представлением после его создания полностью аналогична работе с таблицей. Представления обычно используются в двух случаях:

  • для объединения данных, хранящихся в нескольких таблицах (разбиение на таблицы обычно производится при нормализации базы данных) с целью их представления в удобном для просмотра и редактирования виде;
  • для разграничения доступа к информации — с помощью представлений можно разрешить пользователю доступ только к части информации, хранящейся в таб­лице базы данных.

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

Для создания представления используется оператор CREATE VIEW. Поскольку пред­ставление всегда создается на основе таблиц и/или ранее созданных представле­ний, оператор CREATE VIEW отличается от оператора создания таблицы — вместо указания имен и типов полей данный оператор должен содержать запрос:

CREATE VIEW имя_представления AS SELECT ...

Чтобы познакомиться с примером создания представления, следует несколько мо­дифицировать программу, которую мы используем для изучения SQL. Дело в том, что оператор CREATE VIEW не возвращает никаких данных. Поэтому для его выполне­ния вместо метода Open, который мы задействовали для выполнения оператора SELECT, требуется метод ExecSQL. Чтобы не усложнять задачу, просто добавим на форму еще одну кнопку (назовем ее Exec SQL), при щелчке на которой будет вызываться этот метод. Таким образом, для выполнения оператора SELECT следует щелкнуть на кноп­ке Выполнить запрос, а для выполнения операторов, не возвращающих данных, — на кнопке Exec SQL. Обработчик щелчка на кнопке Exec SQL приведен в листинге 2.

Листинг 2. Обработчик события OnClick кнопки Exec SQL

procedure TfrmMain.btnExecSQLClickCSender: TObject): begin

if Queryl.Active then Queryl.Close:

Queryl.SQL.Clear;

Queryl.SQL.AssigndnemSQL.Lines):

Queryl.ExecSQL: end;

Теперь в качестве примера создадим представление на основе таблиц Товары и Про­дажи. Из первой таблицы выберем поля Код товара и Наименование, из второй — Цена и Продано. Для связи таблиц будем использовать соединение равенства. За­прос, создающий представление с именем Test, имеет следующий вид:

CREATE VIEW Test AS

SELECT Товары.[Код товара]. Товары.Наименование,

Продажи.Цена. Продажи.Продано

FROM Товары, Продажи

WHERE Товары.[Код товара]=Продажи.[Код товара]

После создания представления с ним можно работать как с обычной таблицей. Например, можно вызвать следующий запрос:  SELECT * FROM Test

Результат выполнения этого запроса (рис. 36) аналогичен результату, который возвратил бы запрос, следующий после ключевого слова AS в операторе CREATE VIEW.

Рис. 36. Результат выборки всех записей из представления Test

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

CREATE VIEW Test2 AS

SELECT Товары.[Код товара]. Товары.Наименование.

Продажи.Цена. Продажи.Продано.

Продажи.Цена*Продажи.Продано AS [Сумма продаж]

FROM Товары, Продажи

WHERE Товары.[Код товара]=Продажи.[Код товара]

Здесь для вычисляемого поля задан псевдоним Сумма продаж. Результат выборки всех записей из такого представления приведен на рис. 37.

Рис. 37. Представление с вычисляемым полем

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

Для удаления представлений используется оператор DROP VIEW, синтаксис которо­го представлен ниже: DROP VIEW view_name Команды, удаляющие созданные нами представления, имеют следующий вид:

DROP VIEW Test DROP VIEW Test2

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

  1. Как описываются маркеры параметров, и какая для этого предусмотрена функция?
  2.  Каким образом можно связать несколько параметров?
  3. С помощью какого параметра можно освободить буферы всех столбцов?

Рекомендуемая литература:

  1. Избачков Ю.С., Петров В.Н., Информационные системы: Учебник для вузов. 2-е изд. – СПб.: Питер, 2005.-656
  2.  Информатика: Учебник/Под ред. проф. Н.В. Макаровой, - М.: Финансы и статистика, 1997, 2000.