
ЛР7 / ЛР7_с_подписями
.docxЛабораторная работа № 7
Использование оператора SELECT языка SQL для доступа к базам данных
Цель работы: изучить основные возможности оператора SELECT языка SQL и получить практические навыки создания и выполнения запросов на этом языке при работе с СУБД Access.
Задание 3 Не обнаружила в лабораторной работе таких запросов, где не совпадал бы ожидаемый результат с полученным
Задание 4
Вывод мероприятий и сколько человек на них зарегистрировались (итоговый запрос)
Запрос:
SELECT Мероприятие.КодМероприятия, НазваниеМероприятия, ДатаПроведения, Стоимость, COUNT(КодКлиента) AS КоличествоПосетителей
FROM Мероприятие, ЗаявкаНаУчастие
WHERE Мероприятие.КодМероприятия = ЗаявкаНаУчастие.КодМероприятия
GROUP BY Мероприятие.КодМероприятия, НазваниеМероприятия, ДатаПроведения, Стоимость
ORDER BY COUNT(КодКлиента) DESC;
Результат выполнения:
Рис. 1 Результат выполнения Вывод мероприятий и сколько человек на них идет (SQL)
Вывод мероприятий, до которых осталось меньше 10 дней + новая цена (однотабличный запрос)
Запрос:
SELECT КодМероприятия, НазваниеМероприятия, ДатаПроведения, Стоимость*1.1 AS НоваяЦена
FROM Мероприятие
WHERE ДатаПроведения >= Date() AND ДатаПроведения <= Date() + 10
ORDER BY КодМероприятия;
Результат
выполнения:
Рис. 2 Вывод по запросу "Вывод предстоящих мероприятия с нацекой (SQL)"
Вывод информации о клиенте и мероприятии, на которое он зарегистрировался (многотабличный запрос)
Запрос: SELECT Клиент.КодКлиента, Фамилия, Имя, Телефон, Мероприятие.КодМероприятия, НазваниеМероприятия, ДатаПроведения
FROM Клиент, ЗаявкаНаУчастие, Мероприятие
WHERE Клиент.КодКлиента = ЗаявкаНаУчастие.КодКлиента AND Мероприятие.КодМероприятия = ЗаявкаНаУчастие.КодМероприятия
ORDER BY Клиент.КодКлиента, Мероприятие.КодМероприятия;
Результат выполнения:
Рис. 3 Вывод по запросу "Вывод информации о клиенте и соответствующей мероприятии (SQL)"
Вывод всей таблицы “Мероприятие” с сортировкой по цене (по убыванию) (запрос с сортировкой)
Запрос: SELECT *
FROM Мероприятие
ORDER BY Стоимость DESC;
Результат выполнения:
Рис. 4 Вывод по запросу "Вывод всей таблицы “Мероприятие” с сортировкой по цене (SQL)"
Вывод клиентов и количество отправленных заявок на регистрацию, где количество больше 1 (запрос с группировкой)
Запрос:
SELECT ЗаявкаНаУчастие.КодКлиента, Фамилия, Имя, Телефон, COUNT( ЗаявкаНаУчастие.КодМероприятия) AS КоличествоЗаявок
FROM Клиент INNER JOIN ЗаявкаНаУчастие ON Клиент.КодКлиента = ЗаявкаНаУчастие.КодКлиента
GROUP BY ЗаявкаНаУчастие.КодКлиента, Фамилия, Имя, Телефон
HAVING COUNT(*) >1
ORDER BY COUNT( ЗаявкаНаУчастие.КодМероприятия) DESC;
Результат выполнения:
Рис. 5 Вывод по запросу "Вывод клиентов и количества заявкой (заявок > 1) (SQL)"
Вывод бесплатных мероприятий (условие поиска: сравнение)
Запрос:
SELECT КодМероприятия, НазваниеМероприятия, ДатаПроведения
FROM Мероприятие
WHERE Стоимость = 0;
Результат
выполнения
Рис. 6 Вывод по запросу "Вывод бесплатных мероприятий (SQL)"
Вывод мероприятий, стоимостью от 500 до 1000 (условие поиска: проверка на принадлежность диапазону значений)
Запрос:
SELECT КодМероприятия, НазваниеМероприятия, ДатаПроведения
FROM Мероприятие
WHERE Стоимость BETWEEN 500 AND 1000;
Результат
выполнения:
Рис. 7 Вывод по запросу "Вывод мероприятий, стоимостью от 500 до 1000 (SQL)"
Вывод клиентов с ID = (1, 3, 5, 7) (условие поиска: принадлежность множеству)
Запрос:
SELECT Фамилия, Имя, Телефон
FROM Клиент
WHERE КодКлиента IN (1, 3, 5, 7);
Результат
выполнения:
Рис. 8 Вывод по запросу "Вывод Клиентов с ID (1, 3, 5, 7) (SQL)"
Вывод мастер-классов из таблицы Мероприятие (условие поиска: проверка на соответствие шаблону)
Запрос:
SELECT НазваниеМероприятия, ДатаПроведения, Стоимость
FROM Мероприятие
WHERE НазваниеМероприятия LIKE '*Мастер-класс*' OR НазваниеМероприятия LIKE '*мастер-класс*';
Результат
выполнения:
Рис. 1 Вывод по запросу "Вывод мастер-классов из таблицы Мероприятие (SQL)"
Вывод клиентов, у которых не заполнено поле “Отчество” (условие поиска: проверка на равенство значению null)
Запрос: SELECT КодКлиента, Фамилия, Имя, Телефон
FROM Клиент
WHERE Отчество IS NULL;
Результат выполнения:
Рис. 20 Вывод по запросу "Вывод клиентов, у которых не заполнено поле “Отчество” (SQL)"
Вывод мероприятий за апрель (cоставные условия поиска)
Запрос:
SELECT КодМероприятия, НазваниеМероприятия, ДатаПроведения
FROM Мероприятие
WHERE ДатаПроведения >= #04/01/2025# AND ДатаПроведения <= #04/30/2025#
ORDER BY ДатаПроведения;
Результат выполнения:
Рис. 11 Вывод по запросу "Вывод мероприятий за апрель (SQL)"
Вывод клиентов, которые не зарегистрировались ни на одно мероприятие
Запрос:
SELECT Клиент.КодКлиента, Фамилия, Имя, Телефон, АдресЭлектроннойПочты
FROM Клиент LEFT JOIN ЗаявкаНаУчастие ON Клиент.КодКлиента = ЗаявкаНаУчастие.КодКлиента
GROUP BY Клиент.КодКлиента, Фамилия, Имя, Телефон, АдресЭлектроннойПочты
HAVING COUNT(ЗаявкаНаУчастие.КодМероприятия) = 0;
Результат
выполнения:
Рис. 12 Вывод по азпросу "Вывод клиентов, которые не участвуют ни в одном событии (SQL)"
Вывод самых популярных мероприятий
Запрос:
SELECT КодМероприятия, НазваниеМероприятия, ДатаПроведения, Стоимость
FROM [Вывод мероприятий и сколько человек на них идет (SQL)]
WHERE КоличествоПосетителей = (
SELECT MAX(КоличествоПосетителей) AS МаксПосетители
FROM [Вывод мероприятий и сколько человек на них идет (SQL)])
Результат выполнения
Рис. 13 Вывод по запросу "Вывод самых популярных мероприятий (SQL)"
Вывод клиентов, которые входят в категорию Молодежь
Запрос:
SELECT КодКлиента, Фамилия, Имя, Телефон, DateDiff("yyyy",ДатаРождения,Date()) AS Возраст
FROM Клиент
WHERE DateDiff("yyyy",ДатаРождения,Date()) BETWEEN 14 AND 35
ORDER BY КодКлиента;
Результат
выполнения:
Рис. 14 Вывод по запросу "Вывод клиентов, которые входят в категорию Молодежь (SQL)"
Вывод клиентов, у которых максимальное количество заявок (SQL)
Запрос: SELECT КодКлиента, Фамилия, Имя, Телефон, КоличествоЗаявок
FROM [Вывод клиентов и количества заявкой (заявок > 1) (SQL)]
WHERE КоличествоЗаявок = (SELECT Max(КоличествоЗаявок) AS МаксКоличествоЗаявок
FROM [Вывод клиентов и количества заявкой (заявок > 1) (SQL)]);
Результат
выполнения:
Рис. 15 Вывод по запросу "Вывод клиентов, у которых максимальное количество заявок (SQL)"
Вывод: в ходе данной лабораторной работы было создано 15 запросов для получения всесторонней информации о предметной области. Также были воспроизведены запросы из лабораторной работы на примере тестовой БД. Дополнительно для нескольких запросов были изучены темы вложенных запросом и использован LEFT JOIN.