ЛР №5
.docxМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
«Национальный исследовательский университет «МИЭТ»
Факультет «Микроприборы и системы управления» (МПСУ)
Кафедра «Вычислительная техника» (ВТ)
Лабораторная работа №5 по дисциплине
«Базы данных»
Тема: «Использование оператора SELECT языка SQL»
Цель работы: изучить основные возможности оператора SELECT языка SQL и получить практические навыки создания и выполнения запросов на этом языке при работе с СУБД Access.
Продолжительность работы: 4 часа.
Выполнила студентка группы «ИВТ-44»: Никитина София Геннадьевна
Преподаватель: Немченко Дмитрий Игоревич
2021 г.
Содержание
Выполнение работы 3
Итоговые запросы 3
Одно- и многотабличные запросы 4
Запросы с сортировкой и группировкой 5
Запросы с условием поиска 6
Вывод 10
Выполнение работы
Лабораторное задание
Для БД, разработанной в предыдущей лабораторной работе, при домашней подготовке сформулировать не менее 15 запросов для получения всесторонней информации о предметной области и записать их на языке SQL. Среди запросов должны быть:
- итоговые;
- одно- и многотабличные запросы;
- запросы с сортировкой и группировкой;
- должны быть использованы все 5 видов условий поиска.
Проверить соответствие содержимого таблиц результатов формулировке запросов и отметить обнаруженные несоответствия (результаты занести в Отчет).
Итоговый запрос
Найдем общее количество студентов из базы данных.
SELECT SUM([Количество студентов]) FROM Группа
Рисунок 1. Итоговый запрос по общему количеству студентов.
Найдем общее количество групп из базы данных.
SELECT Count(Группа.[ИД группы]) AS [Count-ИД группы] FROM Группа;
Рисунок 2. Итоговый запрос по общему количеству групп.
Найдем среднее количество студентов в группе.
SELECT Avg(Группа.[Количество студентов]) AS [Avg-Количество студентов] FROM Группа;
Рисунок 3. Итоговый запрос по среднему количеству студентов в группе.
Однотабличный запрос
Выберем из таблицы «Студент» необходимые атрибуты.
SELECT Студент.[Номер студенческого билета], Студент.Фамилия, Студент.Имя, Студент.Отчество, Студент.[Номер группы]
FROM Студент;
Рисунок 4. Однотабличный запрос по таблице «Студент».
Многотабличный запрос
Из таблицы «Вид родственника» возьмем раздел «Название вида», а из таблицы «Родственник студента» ФИО родителя и номер студенческого студента.
SELECT [Родственник студента].[Номер студенческого], [Вид родственников].[Название вида], [Родственник студента].Фамилия, [Родственник студента].Имя, [Родственник студента].Отчество
FROM [Вид родственников] INNER JOIN [Родственник студента] ON [Вид родственников].[ИД вида] = [Родственник студента].[ИД родственника];
Рисунок 5. Многотабличный запрос.
Запрос с сортировкой
Выведем деканов по алфавиту:
SELECT Факультет.Декан, Факультет.Деканат, Факультет.[Название факультета]
FROM Факультет
ORDER BY Факультет.Декан;
Рисунок 6. Запрос с сортировкой по алфавиту.
Запрос с группировкой
Сосчитаем количество мужчин и женщин среди студентов:
SELECT Пол, COUNT(*) FROM Студент GROUP BY Пол
Рисунок 7. Запрос с группировкой студентов по полу.
Сосчитаем количество льгот у студента:
SELECT Студент.[Номер студенческого билета], Студент.Фамилия, Студент.Имя, Студент.Отчество, Count(Льгота.[Вид льготы]) AS [Count-Вид льготы]
FROM Студент INNER JOIN Льгота ON Студент.[Номер студенческого билета] = Льгота.[Номер студенческого билета]
GROUP BY Студент.[Номер студенческого билета], Студент.Фамилия, Студент.Имя, Студент.Отчество;
Рисунок 8. Запрос с группировкой студентов, имеющих льготы .
Запрос с условием поиска 1: «Сравнение»
Выведем студентов младше 18 с помощью WHERE:
SELECT Студент.[Номер студенческого билета], Студент.Фамилия, Студент.Имя, Студент.Отчество, Студент.[Дата рождения]
FROM Студент
WHERE (((Date()-[Студент].[Дата рождения])<18*365.25));
В данном случае коэффициент 365.25 служит для того, чтобы считать человека совершеннолетним в день своего рождения.
Рисунок 9. Отображение изначальной таблицы и таблицы с условием поиска «Сравнение».
Запрос с условием поиска 2: «Проверка на принадлежность диапазону значений»
Выведем аудитории деканатов третьего корпуса с помощью HAVING:
SELECT Факультет.[Название факультета], Факультет.Деканат, Факультет.Декан
FROM Факультет
GROUP BY Факультет.[Название факультета], Факультет.Деканат, Факультет.Декан
HAVING (((Факультет.Деканат) Between 3000 And 3999));
где первая цифра отвечает за номер корпуса.
Рисунок 10. Таблица аудиторий третьего корпуса с условием поиска «Диапазон значений».
Запрос с условием поиска 3: «Проверка на принадлежность множеству»
Выведем студентов, у которых в родственниках указан опекун или попечитель в качестве родственника:
SELECT Студент.*
FROM Студент INNER JOIN ([Вид родственников] INNER JOIN [Родственник студента] ON [Вид родственников].[ИД вида] = [Родственник студента].[ИД родственника]) ON Студент.[Номер студенческого билета] = [Родственник студента].[Номер студенческого]
WHERE ((([Вид родственников].[ИД вида]) IN (3,4)));
ИД вида опекуна и попечителя находятся под номерами 3 и 4 соответственно.
Рисунок 11. Таблица студентов-сирот с условием поиска «Соответствие множеству» и таблица всех родственников.
Запрос с условием поиска 4: «Проверка на соответствие шаблону»
Выведем студентов, у которых в льготах указана инвалидность с помощью «= “ ”»
SELECT Льгота.[Вид льготы], Студент.*
FROM Студент INNER JOIN Льгота ON Студент.[Номер студенческого билета] = Льгота.[Номер студенческого билета]
WHERE (((Льгота.[Вид льготы])="Инвалидность"));
Рисунок 12. Таблица студентов, имеющих инвалидность, с условием поиска «Соответствие шаблону».
Выведем студентов 11 группы с помощью «LIKE “*11”»
SELECT Студент.*, Группа.[Номер группы]
FROM Группа INNER JOIN Студент ON Группа.[ИД группы] = Студент.[Номер группы]
WHERE Группа.[Номер группы] LIKE "*11";
Рисунок 13. Таблица студентов 11 группы с условием поиска «Соответствие шаблону».
Выведем студентов-первокурсников с помощью «LIKE “*??*”»
SELECT Студент.*, Группа.[Номер группы]
FROM Группа INNER JOIN Студент ON Группа.[ИД группы] = Студент.[Номер группы]
WHERE Группа.[Номер группы] LIKE "*1?*";
Рисунок 14. Таблица студентов-первокурсников с условием поиска «Соответствие шаблону».
Запрос с условием поиска 5: «Проверка на равенство значению NULL»
Выведем студентов, у которых нет никаких льгот:
SELECT Студент.*
FROM Студент LEFT JOIN Льгота ON Студент.[Номер студенческого билета] = Льгота.[Номер студенческого билета]
WHERE (((Льгота.[Номер студенческого билета]) Is Null));
Рисунок 15. Таблица льгот и таблица студентов без льгот с условием поиска «Равенство NULL».
Вывод
Изучили основные возможности оператора SELECT языка SQL и получили практические навыки создания и выполнения запросов на этом языке при работе с СУБД Access.