Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Select l_name from student




Union all select distinct prof from professor order by l_name

Получим

l_ name

Волушкова

Дудаков

Иванов

Иванов

 

Климок

Колдунов

Михно

Сидоров

Сорокин

Сорокин

Сорокин

Федоров

Инструкция union выполняет объединение таблиц как множеств строк. Точно так же используются инструкции intersect [all] и except [all], означающие пересечение и вычитание таблиц соответ­ственно (как множеств).

Пример 49 Например, чтобы узнать, какие фамилии встречаются как среди студентов, т,ак и среди преподавателей, можно выполнить запрос

select l_name from student

intersect select prof from professor order by l_name

l_ name Сорокин

Задача 79 (Библиотека) Постройте список всех фамилий (авторов и читателей).

Задача 80 (Библиотека) Проверьте (с помощью intersect), есть ли среди читателей такие, имена которых полностью совпадают, с именем какого-либо автора.

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

Представления — это запросы, которые хранятся в базе данных и ис­пользуются как таблицы. Когда представление используется в качестве таблицы, то вместо него подставляется результат выполнения запроса. Для того чтобы отличать таблицы, реально хранящиеся в базе данных, от представлений реально хранящиеся таблицы называют основными. Представление создается с помощью оператора 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 Изменение данных.





Поделиться с друзьями:


Дата добавления: 2017-03-18; Мы поможем в написании ваших работ!; просмотров: 458 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Начинайте делать все, что вы можете сделать – и даже то, о чем можете хотя бы мечтать. В смелости гений, сила и магия. © Иоганн Вольфганг Гете
==> читать все изречения...

2282 - | 2063 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.