Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР №5

.docx
Скачиваний:
6
Добавлен:
28.06.2022
Размер:
316.38 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«Национальный исследовательский университет «МИЭТ»

Факультет «Микроприборы и системы управления» (МПСУ)

Кафедра «Вычислительная техника» (ВТ)

Лабораторная работа №5 по дисциплине

«Базы данных»

Тема: «Использование оператора SELECT языка SQL»

Цель работы: изучить основные возможности оператора SELECT языка SQL и получить практические навыки создания и выполнения запросов на этом языке при работе с СУБД Access.

Продолжительность работы: 4 часа.

Выполнила студентка группы «ИВТ-44»: Никитина София Геннадьевна

Преподаватель: Немченко Дмитрий Игоревич

2021 г.

Содержание

  1. Выполнение работы 3

    1. Итоговые запросы 3

    2. Одно- и многотабличные запросы 4

    3. Запросы с сортировкой и группировкой 5

    4. Запросы с условием поиска 6

  1. Вывод 10

  1. Выполнение работы

Лабораторное задание

Для БД, разработанной в предыдущей лабораторной работе, при домашней подготовке сформулировать не менее 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».

  1. Вывод

Изучили основные возможности оператора SELECT языка SQL и получили практические навыки создания и выполнения запросов на этом языке при работе с СУБД Access.

Соседние файлы в предмете Базы данных