Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SQL.doc
Скачиваний:
20
Добавлен:
22.02.2015
Размер:
530.43 Кб
Скачать

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

Представления — это запросы, которые хранятся в базе данных и ис­пользуются как таблицы. Когда представление используется в качестве таблицы, то вместо него подставляется результат выполнения запроса. Для того чтобы отличать таблицы, реально хранящиеся в базе данных, от представлений реально хранящиеся таблицы называют основными. Представление создается с помощью оператора create view:

create view <имя представления> as <SQL-3anpoc>

Пример 50 Например, предстлвление, содержащее информацию о сда-че студентами экзамена, по анализу:

create view analysis as select stud_nomer, dat, res from ball where dis = 'Анализ'

Напомним, что таблицы является неупорядоченной совокупностью строк, то же должно относиться и к представлениям: порядок следо­вания строк в представлении не определен. Поэтому в операторе SQL, образующем представление, инструкции order by быть не должно. Дру­гое важное условие на SQL-запрос: все его столбцы должны иметь име­на. Если в представлении в качестве столбцов используются какие-то выражения, то они обязательно должны быть поименованы с помощью as.

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

create view avg_ball as select stud_nomer, avg(res) as avg_res from ball group by stud_nomer

Теперь представление avg_ball можно использовать как т,аблицу, со­держащую два столбца: stud_nomer и avg_res. Например, чтобы выве­сти ее содержимое:

select * from avg_ball

stud nomer

avg_ res

010001

85

010002

66

011003

63

011004

63

011005

16

При изменении основной таблицы ball изменения автоматически от­разятся и в представлении avg_ball.

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

Задача 81 (Библиотека) Создайте представление, которое содер­жит информацию о выданных в настоящий момент книгах (когда вы­дана, кому, срок возврати).

Задача 82 (Университет) Создайте представление, которое будет, хранить информацию о всех персоналиях, с указанием их имени и по­ложения, например,

1_ пате

f name

т пате

position

additional

Иванов

Иван

Иванович

студент

1 курс

Колдунов

Владислав

Алексеевич

профессор

доктор физ.-мат. наук

Другой пример использования представлений — двойная группиров­ка данных. С помощью одного оператора select можно выполнить толь­ко одну группировку, например, найти средний балл для каждого сту­дента. Если же требуется еще и среди этих средних баллов найти самый высокий, то для этого придется использовать представление, так как вложенные агрегатные функции язык SQL не допускает:

select max(avg_res) . .

from avg_ball

Нельзя написать непосредственно:

select max(avg(res)) from ball group by stud_nomer

Однако, SQL допускает в качестве исходных таблиц запроса использо­вать другие запросы.

Пример 52 Запрос (5) можно переписать в виде:

select max(avg_res)

from (select avg(res) as avg_res

from ball

group by stud_nomer)

To есть, вместо имени представления в инструкции from просто пишется SQL запрос, реализующий это представление.

Задача 83 (Супермаркет) Напишите следующий запрос с использо­ванием представлений и с использованием запросов в качестве исход­ных таблиц. Найти фирмы, продукция которых илкет, самую высокую среднюю цену.

Задача 84 (Банк) Напишите следующий запрос с использованием представлений и с использованием, запросов в качестве исходных таб­лиц. Найти количество счетов тех клиентов, которые имеют наи­большую общую сумму на своих счетах.

Задача 85 (CD) Напишите следующий запрос с использованием пред­ставлений и с использованием запросов в качестве исходных таблиц. Найт,и среднюю цену компакт-дисков, имеющих наибольшее количе­ство треков.

Задача 86 (CD) Напишите следующий запрос с использованием пред­ставлений и с использованием запросов в качестве исходных таблиц. Определить, сколько раз в каких ролях записывались арт,ист.ы, кото­рые выступали в какой-либо роли наибольшее число раз (по сравнению с другими артистами).

4 Изменение данных.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]