Рекомендации по выполнению работы

Цель работы

Целью лабораторной работы является изучение способов получения информации из нескольких таблиц:

- записать запросы, демонстрирующие выборки из нескольких таблиц с использованием оператора 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) используются для создания отчетов?

 

Рекомендации по выполнению работы

Запросы к нескольким таблицам являются наиболее часто используемым типом запросов. Реляционные БД нормализованы, и хранимая информация разбита по большому количеству таблиц.