- •Введение
- •Лабораторная работа №1 Создание и модификация базы данных.
- •Варианты работы
- •Лабораторная работа №2 Работа с базами данных. Индексация, фильтрация и поиск данных в базе
- •Лабораторная работа №3 Создание формы для редактирования таблиц
- •Лабораторная работа 4 Создание программного файла Visual FoxPro.
- •Порядок выполнения
- •Лабораторная работа 5 Создание связанных таблиц в субд oracle с декларативными ограничениями данных.
- •Варианты работы
- •Лабораторная работа №6 Создание сложных запросов с использованием подзапросов и агрегированных функций
- •Варианты работы
- •Лабораторная работа 7 Создание анонимного блока
- •Варианты работы
- •Лабораторная работа 8 Создание хранимой процедуры или триггера баз данных
- •Варианты работы
Лабораторная работа №6 Создание сложных запросов с использованием подзапросов и агрегированных функций
Целью работы является формирование навыков создания запросов к базе данных. Следует изучить команду SELECT, агрегированные функции и использование подзапросов. При выборке данных могут быть использованы четыре связанные таблицы, находящиеся в схеме MAI:
таблица отделов OTD с первичным ключом nom_otd и полями:
nom_otd – номер отдела;
name_nach – фамилия начальника;
etaj – этаж, на котором находится отдел;
nom_tel – номер телефона отдела.
таблица сотрудников SOTR с первичным ключом nom_sotr и внешним ключом nom_otd и полями:
nom_sotr – номер сотрудника;
nom_otd – номер отдела, где работает сотрудник;
name1 – фамилия сотрудника;
name2 – имя сотрудника;
name3 – отчество сотрудника;
zarpl – зарплата сотрудника;
adres – адрес сотрудника;
city – город сотрудника.
Таблица детей сотрудников DETI с составным первичным ключом nom_sort,name_child и внешним ключом nom_sotr:
nom_sotr – номер сотрудника;
name_child – имя ребенка;
voz- возраст ребенка;
school – номер школы, где учится ребенок. Это поле может иметь пустое значение, если ребенок не учится в школе.
Таблица школ SHOOL с первичным ключом nomer и полями:
nomer – номер школы;
name_dir – фамилия директора школы;
phone - телефон школы.
Порядок выполнения
Выполнить запрос к базе данных в соответствии с вариантом, используя подзапрос и агрегированные (групповые) функции. Определить число строк при помощи функции COUNT(*), выдаваемых запросом. Составить отчет, в котором должна быть представлены запросы, определение количества строк и ответы на контрольные вопросы.
Связь таблиц показана на рис. 4
Рис. 4
Варианты работы
Вариант 1
Выбрать сотрудников, у которых в школе с номером 10 учатся более двух детей.
Вариант 2
Выбрать сотрудников имеющих 2 и более детей, учащихся в школе, где директор – Иванов В.П.
Вариант 3
Выбрать школы, в которых учатся дети сотрудников, работающих в отделе N 119.
Вариант 4
Выбрать сотрудников, имеющих более 3 детей, один из которых учится в школе.
Вариант 5
Выбрать отделы, в которых более 3 сотрудников не имеют детей.
Вариант 6
Выбрать отделы, сотрудники которых имеют более одного ребенка с возрастом 20 лет.
Вариант 7
Выбрать отделы, в которых сотрудники имеют детей в возрасте менее 7 лет учатся в школе.
Вариант 8
Выбрать сотрудников, имеющих только двух детей, один из которых учится в школе, а другой - нет.
Вариант 9
Выбрать детей, родители которых не имеют однофамильцев среди сотрудников.
Вариант 10
Выбрать сотрудников, которые получают зарплату выше средней зарплаты его отдела.
Вариант 11
Выбрать сотрудников, дети которых учатся в разных школах.
Вариант 12
Выбрать сотрудников, имеющих детей одного возраста.
Контрольные вопросы
В какой части опции WHERE оператора SELECT должен находиться подзапрос?
В чем преимущество подзапросов?
Какая реляционная операция выполняется при многотабличной выборке?
Какая логическая операция используется, если подзапрос возвращает несколько строк?
С какими функциями используется опция группировки?