Рекомендации по выполнению работы
Цель работы
Целью лабораторной работы является изучение способов получения информации из нескольких таблиц:
- записать запросы, демонстрирующие выборки из нескольких таблиц с использованием оператора join и без него;
- изучить способы выполнения и принцип действия рекурсивных запросов;
- научится использовать вложенные подзапросы;
- ознакомиться с возможностями построения вложенных коррелированных подзапросов с применением кванторов.
Введение
Запросы к нескольким таблицам являются наиболее часто используемым типом запросов. Существует два основных способа объединения таблиц – с помощью оператора JOIN языка SQL, и с помощью условия в разделе WHERE.
Методика выполнения работы
1. Записать запросы, соединяющие две таблицы с помощью JOIN и без него.
2. Записать запросы, соединяющие более чем две таблицы с помощью JOIN и без него.
3. Продемонстрировать следующие возможности SQL:
- использование псевдонимов на примере рекурсивного запроса;
- привести пример запроса с подзапросом;
- использование агрегатных функций в подзапросе;
- подзапросы, возвращающие единственное и множественные значения;
- подзапросы, использующие вычисление;
- использование подзапросов в HAVING.
4. Ознакомится с принципом и продемонстрировать работу коррелированных подзапросов:
- привести пример соединения таблицы со своей копией;
- привести пример коррелированного запроса, использующего две разные таблицы;
- привести пример запроса с оператором EXIST;
- привести пример запроса с оператором ALL;
- привести пример запроса с оператором ANY.
5. Модифицировать приложение лабораторной работы №5. Добавить окно для вывода результатов запроса в видео отчета QuickReport.
Примерные варианты заданий
В работе необходимо предусмотреть интерфейс в виде отчета для вывода по крайней мере трех результатов сложных запросов в соответствии с таблицей вариантов 6.1.
Таблица 6.1 – Варианты заданий к лабораторной работе №6
№ вар | Запросы к базе данных |
1. Вывести Ф.И.О. всех авторов, писавших на тему «Локальные вычислительные сети». 2. Вывести любого автора, который печатался в журнале «Микропроцессорные системы». 3. Вывести Ф.И.О. автора самой последней (по дате) публикации. | |
1. Вывести всех студентов, слушающих курс «СУБД». 2. Вывести преподавателей, не имеющих своего курса. 3. Вывести Ф.И.О. преподавателя, который провел последнее (по дате) занятие. | |
1. Вывести всех пациентов хирурга Иванова. 2. Вывести всех хирургов, которые ведут хотя бы одного пациента. 3. Вывести Ф.И.О. самого старшего пациента. | |
1. Вывести всех служащих, имеющих высшее образование. 2. Вывести Ф.И.О. сотрудников, которые не имеют детей. 3. Вывести Ф.И.О. самого молодого мужчины. | |
1. Вывести все телефоны фирмы «Оптима Крым» 2. Вывести названия фирмы, которая не имеет контрагентов 3. Вывести название фирмы, занимающей помещение с максимальной площадью | |
1. Вывести Ф.И.О. служащих, работающих над проектом «Победа» 2. Вывести названия работ, в которых задействованы программисты 3. Вывести минимальную тарифную ставку | |
1. Вывести всех служащих, говорящих на английском языке 2. Вывести Ф.И.О. служащих, которые не были в отпуске в 2007 г. 3. Вывести Ф.И.О. служащего с максимальным окладом | |
1. Вывести Ф.И.О. студентов факультета АВТ 2. Вывести Ф.И.О. студентов, которые не изучают программирование. 3. Вывести Ф.И.О. студентов, получающих максимальную стипендию | |
1. Вывести название ВУЗов, осуществляющих подготовку по специальности «компьютерные сети». 2. Вывести Ф.И.О. студентов, которые не сдали ни одного экзамена. 3. Вывести название специальности с минимальным сроком обучения. | |
1. Вывести всех пассажиров поезда № 28 «Севастополь-Киев», выехавших 29.01.2007 2. Вывести все поезда, которые не следуют через станцию «Джанкой» 3. Вывести время отправления первой (по времени) электрички «Севастополь-Симферополь». | |
1. Вывести все предметы, которые изучают на факультете АВТ 2. Вывести всех преподавателей, которые не преподают на факультете АВТ. 3. Вывести название предметов с максимальным количеством часов. | |
1. Вывести всех осужденных, проходящих по делу №26. 2. Вывести всех осужденных, которые не имеют псевдонима. 3. Вывести Ф.И.О. осужденного на максимальный срок | |
1. Вывести всех спортсменов, игравших во Франции. 2. Вывести всех спортсменов, которые не играют в Динамо (Киев). 3. Вывести список лучших бомбардиров (забивших максимальное количество мячей). |
Таблица 6.1 (продолжение)
№ вар | Запросы к базе данных |
1. Вывести всех артистов, выступивших в «Доме офицеров» 31.12.2006. 2. Вывести всех артистов, которые не выступали в «Альбервил-холле». 3. Вывести название зала с максимальным количеством мест. | |
1. Вывести всех сотрудников строительных фирм. 2. Вывести всех сотрудников, у которых нет детей 3. Вывести сотрудников с максимальным окладом | |
1. Вывести всех водителей, возивших грузы более 10 тонн. 2. Вывести Ф.И.О. любого водителя, который водит КАМАЗ. 3. Вывести название груза максимальной массы. | |
1. Вывести Ф.И.О. клиентов гостиницы «Крым». 2. Вывести гостинцы, в которых нет номеров «Люкс». 3. Вывести все гостиницы максимального разряда. | |
1. Вывести все препараты для лечения гриппа. 2. Вывести список диагнозов, для которых существует нетрадиционный метод лечения. 3. Вывести диагноз с минимальной стоимостью лечения. | |
1. Вывести инженеров, обслуживающих машины типа PentiumIV 2. Вывести название адрес ВЦ, в которых нет машин типаMacintosh. 3. Вывести список инженеров с минимальным окладом | |
1. Вывести сумму партвзносов, полученных партией «Зеленых» в 2006 году. 2. Вывести все партии, которые имеют свою газету. 3. Вывести название газеты с максимальным тиражем. |
Содержание отчета
Отчет должен содержать следующие разделы:
1) Цель работы.
2) Выполнение работы (таблицы исходных данных, тексты запросов в соответствии заданием, сформулированные на естественном языке и структурированном языке запросов SQL, результаты выполнения запросов)
3) Выводы.
Примечание. Запросы должны иметь логический смысл. Без формулировки запросов на естественном языке отчет приниматься не будет.
Контрольные вопросы
1) В чем различие соединения таблиц по условию и с использованием JOIN?
2) В чем различие вложенных запросов и запросов с соединением?
3) Какие формы записи подзапроса недопустимы?
4) В чем особенность подзапроса, перед которым стоит знак арифметического сравнения?
5) Что такое коррелированный подзапрос?
6) Опишите алгоритм выполнения запроса с коррелированным подзапросом.
7) Назначение операторов EXIST, ALL, ANY.
8) Что такое отчет? Какие средства среды Delphi (C++ Builder) используются для создания отчетов?
Рекомендации по выполнению работы
Запросы к нескольким таблицам являются наиболее часто используемым типом запросов. Реляционные БД нормализованы, и хранимая информация разбита по большому количеству таблиц.