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

ЛР7 / ЛР7_с_подписями

.docx
Скачиваний:
1
Добавлен:
12.06.2025
Размер:
429.46 Кб
Скачать

Лабораторная работа № 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.

Соседние файлы в папке ЛР7