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

11

Лабораторная работа 4. Подчиненные и составные запросы

Цель работы: Получит навыки программирования подчиненных и составных SQL-запросов.

Общие сведения

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

  • инструкция SQL с подчиненным запросом зачастую является самым естественным способом выражения запроса, так как она лучше всего соответствует словесному описанию запроса;

  • подчиненные запросы облегчают написание инструкции SELECT, поскольку позволяют разбивать запрос на части (на запрос и подчиненные запросы), а затем складывать эти части вместе;

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

Применение подчиненных запросов

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

Пример 4.1. Вывести всю информацию о поставках, объемы которых превышаю средний объем поставок в таблице поставок.

select *

from Delivery

where Quantity > (select avg(Quantity)

from Delivery)

Результат:

SID PID KID Quantity

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

2 3 2 500

2 3 4 600

2 5 2 700

3 6 3 500

4 6 7 800

5 1 6 500

5 2 2 900

5 2 7 500

5 4 2 600

5 4 6 500

5 5 2 800

5 6 3 700

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

Подчиненные SQL-запросы всегда выступают в качестве части предложения WHERE или HAVING. В предложении WHERE они помогают отбирать из таблицы результатов запроса отдельные строки, а в предложении HAVING — группы строк.

Подчиненный запрос

Подчиненный завсегда заключается в круглые скобки. Структура предложений в подчиненном запросе идентична структуре в инструкции SELECT; в подчиненном запросе все предложения (SELECT, FROM, WHERE) выполняют свои обычные функции.

Между подчиненным запросом и инструкцией SELECT имеется ряд отличий:

  • таблица результатов подчиненного запроса всегда состоит из одного столбца. Это означает, что в предложении SELECT подчиненного запроса всегда указывается один возвращаемый столбец;

  • в подчиненный запрос не может входить предложение ORDER BY. Результаты подчиненного запроса используются только внутри главного запроса и для пользователя остаются невидимыми, поэтому нет смысла их сортировать;

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

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