Ход Работы

Лабораторная работа №6 «Использование подзапросов»

Цель: «Сформировать навыки и умения реализации вложенных подзапросов»

Ход Работы

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

Часто невозможно решить поставленную задачу путем использования одного запроса. Это особенно актуально в тех случаях, когда при использовании условия поиска в предложении
WHERE <сравниваемое значение> <оператор> <значение, с которым сравнивать>

значение, с которым надо сравнивать, заранее не определено и должно быть вычислено в момент выполнения оператора SELECT.

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

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

В общем случае оператор SELECT с подзапросом имеет вид

SELECT... FROM...

WHERE <сравниваемое значение> <оператор> SELECT... FROM... WHERE...

Задание 1. Вывести номера студентов, обучающихся в группе с количеством человек >32

Рис 9 схема данных запроса

use uch_proc

select fio

from student

where ng in (select ng

from gruppa

where kol > 32)

В начале выполняется подзапрос, в котором выбираются все группы с количеством человек более 32. Внешний запрос выбирает запись из таблицы ‘студент’ и определяет входит ли номер группы в список номеров групп, выбранных подзапросом.

Задание 2. С помощью подзапроса вывести ФИО преподавателей, которые ведут предметы, с количеством часов chas > 150

Рис 10 схема данных запроса

use uch_proc

select fio

from prepodavatel

where tabn in (select tabn

from isuchenie

where kp in (select kp

from predmet

where chas > 150 and ng ='102'))

В начале выполняется подзапрос, в котором выбираются коды предметов с количеством часов более 150 и для группы ‘101’. Второй подзапрос выбирает табельные номера преподавателей, которые ведут предметы, указанные в 1-м подзапросе. Внешний запрос выбирает запись из таблицы ‘преподаватель’ и определяет входит ли его табельный номер в список значений второго подзапроса.

Задание 3.

С помощью подзапроса вывести табельный номер преподавателей, которые ведут предмет ‘история’ в группе ‘101’.

Рис 11 схема данных запроса

use uch_proc

select tabn

from isuchenie

where ng = '101' and kp in (select kp

from predmet

where np ='история'

)

Подзапрос выбирает код предмета с названием 'история'. Внешний запрос выводит табельные номера преподавателей, которые ведут предмет с таким номером в группе ‘101’

2. Использование оператора EXISTS

Бывают случаи, когда в условии поиска нужно указать, что из таблицы требуется отобрать только те записи, для которых подзапрос возвращает один или более значений. В этом случае в условии поиска указывается предложение EXISTS (<подзапрос>)

Это предложение содержит истину, если запрос возвращает хотя бы одну запись.

Задание 4.

Вывести ФИО студентов, которые хотя бы раз получали ‘4’.

Рис 12 схема данных запроса

use uch_proc

select fio

from student

where ns in (select ns

from uspevaemost

where ozenka = 4 and uspevaemost.ns= student.ns and uspevaemost.ng= student.ng)

Если студент хотя бы раз получал 4, то его номер будет выбран в подзапросе.

Контрольные задания.
  1. С помощью подзапроса вывести фамилии преподавателей с кафедры ‘иностранный язык’.
  2. С помощью подзапроса вывести фамилии преподавателей, которые ведут предметы с vidz=’пр’.
  3. С помощью подзапроса вывести наименование предметов, у которых в таблице ‘изучение’ количество часов более 70.
  4. С помощью подзапроса вывести номер группы и количество человек в ней, если в этой группе ведет преподаватель с табельным номером ‘103’
  5. Вывести ФИО преподавателей, которые ведут хотя бы один предмет.
  6. Вывести ФИО студентов, которые хотя бы раз получали ‘2’. или ‘3’.
  7. Определите с помощью подзапроса номера студентов, группу и их оценки, кто изучает предмет с кодом ‘02’ и видом занятия ‘пр’.

Сформулируйте и создайте несколько подзапросов в индивидуальной базе данных


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: