Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Пример выполнения лабораторной работы № 3
Запрос 1_1 Тип запроса: выборка c сортировкой по одному полю. Формулировка запроса с точки зрения пользователя: вывести список тренеров с указанием ФИО, звания, номера телефона и даты рождения каждого тренера, упорядочив данные в алфавитном порядке фамилий. Вид запроса на языке SQL: SELECT ТРЕНЕРЫ.[ФИО тренера], ЗВАНИЯ.[Название звания], ТРЕНЕРЫ.[Номер телефона], ТРЕНЕРЫ.[Дата рождения] FROM ЗВАНИЯ INNER JOIN ТРЕНЕРЫ ON ЗВАНИЯ.КЗ = ТРЕНЕРЫ.КЗ ORDER BY ТРЕНЕРЫ.[ФИО тренера]; Структура запроса в режиме конструктора представлена на рис. 3.10. Рисунок 3.10 – Структура запроса в режиме конструктора Результат работы запроса представлен на рис. 3.11. Рисунок 3.11 – Результат работы запроса Запрос 1_2 Тип запроса: выборка c сортировкой по нескольким полям. Формулировка запроса с точки зрения пользователя: вывести список посещений тренировок с указанием секции, даты и времени проведения, ФИО клиента, и ФИО тренера, упорядочив данные по секциям и по датам тренировок. Вид запроса на языке SQL: SELECT СЕКЦИИ.[Название секции], [ПРОВЕДЕНИЕ ТРЕНИРОВКИ].[Дата проведения], [ГРАФИК ТРЕНИРОВОК].[Начало тренировки], [ГРАФИК ТРЕНИРОВОК].[Окончание тренировки], КЛИЕНТЫ.[ФИО клиента], ТРЕНЕРЫ.[ФИО тренера] FROM ТРЕНЕРЫ INNER JOIN (СЕКЦИИ INNER JOIN (КЛИЕНТЫ INNER JOIN ([ГРАФИК ТРЕНИРОВОК] INNER JOIN [ПРОВЕДЕНИЕ ТРЕНИРОВКИ] ON [ГРАФИК ТРЕНИРОВОК].КГ = [ПРОВЕДЕНИЕ ТРЕНИРОВКИ].КГ) ON КЛИЕНТЫ.КК = [ПРОВЕДЕНИЕ ТРЕНИРОВКИ].КК) ON СЕКЦИИ.КС = [ГРАФИК ТРЕНИРОВОК].КС) ON ТРЕНЕРЫ.КТ = [ГРАФИК ТРЕНИРОВОК].КТ ORDER BY СЕКЦИИ.[Название секции], [ПРОВЕДЕНИЕ ТРЕНИРОВКИ].[Дата проведения]; Структура запроса в режиме конструктора представлена на рис. 3.12. Рисунок 3.12 – Структура запроса в режиме конструктора Результат работы запроса представлен на рис. 3.13. Рисунок 3.13 – Результат работы запроса Примечание: Сортировка по двум полям означает, что список сортируется сначала по полю "Секция", а затем при совпадении значений в этом поле – по полю "Дата проведения". Запрос 2_1 Тип запроса: выборка c условием отбора на текстовое поле. Формулировка запроса с точки зрения пользователя: вывести список тренеров, не имеющих звания с указанием ФИО тренера и номера телефона. Вид запроса на языке SQL: SELECT ТРЕНЕРЫ.[ФИО тренера], ЗВАНИЯ.[Название звания], ТРЕНЕРЫ.[Номер телефона] FROM ЗВАНИЯ INNER JOIN ТРЕНЕРЫ ON ЗВАНИЯ.КЗ = ТРЕНЕРЫ.КЗ WHERE (((ЗВАНИЯ.[Название звания])="Без звания")); Структура запроса в режиме конструктора представлена на рис. 3.14. Рисунок 3.14 – Структура запроса в режиме конструктора Результат работы запроса представлен на рис. 3.15. Рисунок 3.15 – Результат работы запроса Примечание: Текстовое значение в строке "Условие отбора" должно быть в двойных кавычках (например, "Текст"). Запрос 2_2 Тип запроса: выборка c условием отбора на числовое поле. Формулировка запроса с точки зрения пользователя: вывести график работы секций со стоимостью 1 тренировки меньшей 200 рублей. Вид запроса на языке SQL: SELECT СЕКЦИИ.[Название секции], ТРЕНЕРЫ.[ФИО тренера], [ГРАФИК ТРЕНИРОВОК].[День недели], [ГРАФИК ТРЕНИРОВОК].[Начало тренировки], [ГРАФИК ТРЕНИРОВОК].[Окончание тренировки], [ГРАФИК ТРЕНИРОВОК].[Стоимость 1 тренировки] FROM ТРЕНЕРЫ INNER JOIN (СЕКЦИИ INNER JOIN [ГРАФИК ТРЕНИРОВОК] ON СЕКЦИИ.КС = [ГРАФИК ТРЕНИРОВОК].КС) ON ТРЕНЕРЫ.КТ = [ГРАФИК ТРЕНИРОВОК].КТ WHERE ((([ГРАФИК ТРЕНИРОВОК].[Стоимость 1 тренировки])<200)); Структура запроса в режиме конструктора представлена на рис. 3.16. Рисунок 3.16 – Структура запроса в режиме конструктора Результат работы запроса представлен на рис. 3.17. Рисунок 3.17 – Результат работы запроса Запрос 2_3 Тип запроса: выборка c условием отбора на поле типа "дата/время". Формулировка запроса с точки зрения пользователя: вывести список проведенных тренировок за 15.05.2017 с указанием ФИО клиента, времени тренировки, секции, а также ФИО тренера. Вид запроса на языке SQL: SELECT [ПРОВЕДЕНИЕ ТРЕНИРОВКИ].[Дата проведения], КЛИЕНТЫ.[ФИО клиента], [ГРАФИК ТРЕНИРОВОК].[Начало тренировки], [ГРАФИК ТРЕНИРОВОК].[Окончание тренировки], СЕКЦИИ.[Название секции], ТРЕНЕРЫ.[ФИО тренера] FROM СЕКЦИИ INNER JOIN (ТРЕНЕРЫ INNER JOIN (КЛИЕНТЫ INNER JOIN ([ГРАФИК ТРЕНИРОВОК] INNER JOIN [ПРОВЕДЕНИЕ ТРЕНИРОВКИ] ON [ГРАФИК ТРЕНИРОВОК].КГ = [ПРОВЕДЕНИЕ ТРЕНИРОВКИ].КГ) ON КЛИЕНТЫ.КК = [ПРОВЕДЕНИЕ ТРЕНИРОВКИ].КК) ON ТРЕНЕРЫ.КТ = [ГРАФИК ТРЕНИРОВОК].КТ) ON СЕКЦИИ.КС = [ГРАФИК ТРЕНИРОВОК].КС WHERE ((([ПРОВЕДЕНИЕ ТРЕНИРОВКИ].[Дата проведения]) = #5/15/2017#)); Структура запроса в режиме конструктора представлена на рис. 3.18. Рисунок 3.18 – Структура запроса в режиме конструктора Результат работы запроса представлен на рис. 3.19. Рисунок 3.19 – Результат работы запроса Примечание: Значение даты или времени в строке "Условие отбора" должно быть в # с двух сторон (например, #20.12.2017# или #15:30#).
Запрос 2_4 Тип запроса: выборка c условием отбора на несколько полей. Формулировка запроса с точки зрения пользователя: вывести список тренировок клиентов мужского пола позже 17.05.2017 г. с указанием дней недели и секций, в которых они занимаются. Вид запроса на языке SQL: SELECT [ПРОВЕДЕНИЕ ТРЕНИРОВКИ].[Дата проведения], КЛИЕНТЫ.[ФИО клиента], КЛИЕНТЫ.Пол, [ГРАФИК ТРЕНИРОВОК].[День недели], СЕКЦИИ.[Название секции] FROM СЕКЦИИ INNER JOIN (КЛИЕНТЫ INNER JOIN ([ГРАФИК ТРЕНИРОВОК] INNER JOIN [ПРОВЕДЕНИЕ ТРЕНИРОВКИ] ON [ГРАФИК ТРЕНИРОВОК].КГ = [ПРОВЕДЕНИЕ ТРЕНИРОВКИ].КГ) ON КЛИЕНТЫ.КК = [ПРОВЕДЕНИЕ ТРЕНИРОВКИ].КК) ON СЕКЦИИ.КС = [ГРАФИК ТРЕНИРОВОК].КС WHERE ((([ПРОВЕДЕНИЕ ТРЕНИРОВКИ].[Дата проведения])>#5/17/2017#) AND ((КЛИЕНТЫ.Пол)="М")); Структура запроса в режиме конструктора представлена на рис. 3.20. Рисунок 3.20 – Структура запроса в режиме конструктора Результат работы запроса представлен на рис. 3.21. Рисунок 3.21 – Результат работы запроса Запрос 3_1 Тип запроса: параметрический с одним параметров. Формулировка запроса с точки зрения пользователя: для секции, вводимой по запросу, вывести даты проведения тренировок клиентов. Вид запроса на языке SQL: SELECT [ПРОВЕДЕНИЕ ТРЕНИРОВКИ].[Дата проведения], КЛИЕНТЫ.[ФИО клиента], СЕКЦИИ.[Название секции] FROM СЕКЦИИ INNER JOIN (КЛИЕНТЫ INNER JOIN ([ГРАФИК ТРЕНИРОВОК] INNER JOIN [ПРОВЕДЕНИЕ ТРЕНИРОВКИ] ON [ГРАФИК ТРЕНИРОВОК].КГ = [ПРОВЕДЕНИЕ ТРЕНИРОВКИ].КГ) ON КЛИЕНТЫ.КК = [ПРОВЕДЕНИЕ ТРЕНИРОВКИ].КК) ON СЕКЦИИ.КС = [ГРАФИК ТРЕНИРОВОК].КС WHERE (((СЕКЦИИ.[Название секции])=[Введите СЕКЦИЮ])); Структура запроса в режиме конструктора представлена на рис. 3.22. Рисунок 3.22 – Структура запроса в режиме конструктора Диалоговое окно с введенным значением параметра запроса представлено на рис. 3.23. Рисунок 3.23 – Диалоговое окно с введенным значением параметра Результат работы запроса представлен на рис. 3.24.
Рисунок 3.24 – Результат работы запроса Примечание: Имя параметра заключается в квадратные скобки и помещается в строку "Условие отбора" нужного столбца (например, [Введите дату тренировки]. Запрос 3_2 Тип запроса: параметрический с несколькими параметрами. Формулировка запроса с точки зрения пользователя: вывести график тренировок с указанием секции, дня недели, времени проведения и ФИО тренера по вводимым в запросе дню недели и времени начала тренировки, позже которого могут начинаться тренировки. Вид запроса на языке SQL: SELECT СЕКЦИИ.[Название секции], [ГРАФИК ТРЕНИРОВОК].[День недели], [ГРАФИК ТРЕНИРОВОК].[Начало тренировки], [ГРАФИК ТРЕНИРОВОК].[Окончание тренировки], ТРЕНЕРЫ.[ФИО тренера] FROM ТРЕНЕРЫ INNER JOIN (СЕКЦИИ INNER JOIN [ГРАФИК ТРЕНИРОВОК] ON СЕКЦИИ.КС = [ГРАФИК ТРЕНИРОВОК].КС) ON ТРЕНЕРЫ.КТ = [ГРАФИК ТРЕНИРОВОК].КТ WHERE ((([ГРАФИК ТРЕНИРОВОК].[День недели])=[Введите день недели]) AND (([ГРАФИК ТРЕНИРОВОК].[Начало тренировки])>[Введите время начала тренировки, позже которого])); Структура запроса в режиме конструктора представлена на рис. 3.25. Рисунок 3.25 – Структура запроса в режиме конструктора Диалоговые окна с введенными значениями параметров запроса представлены на рис. 3.26.
Рисунок 3.26 – Диалоговые окна с введенными значениями параметров Результат работы запроса представлен на рис. 3.27. Рисунок 3.27 – Результат работы запроса Примечание: Диалоговые окна для ввода значений параметров появляются в том порядке, в котором они находятся в Конструкторе запроса.
В итоговых запросах желательно иметь столбец с вычислением количества строк в каждой группе. Запрос 4_1 Тип запроса: итоговый с группировкой по одному полю. Формулировка запроса с точки зрения пользователя: вывести минимальную и максимальную стоимость 1 тренировки в каждой секции. Вид запроса на языке SQL: SELECT СЕКЦИИ.[Название секции], Min([ГРАФИК ТРЕНИРОВОК].[Стоимость 1 тренировки]) AS [Min-Стоимость 1 тренировки], Max([ГРАФИК ТРЕНИРОВОК].[Стоимость 1 тренировки]) AS [Max-Стоимость 1 тренировки], Count([ГРАФИК ТРЕНИРОВОК].[День недели]) AS [Count-День недели] FROM СЕКЦИИ INNER JOIN [ГРАФИК ТРЕНИРОВОК] ON СЕКЦИИ.КС = [ГРАФИК ТРЕНИРОВОК].КС GROUP BY СЕКЦИИ.[Название секции]; Структура запроса в режиме конструктора представлена на рис. 3.28. Рисунок 3.28 – Структура запроса в режиме конструктора Результат работы запроса представлен на рис. 3.29. Рисунок 3.29 – Результат работы запроса Примечание: Столбец "Count-День недели" служит для вывода значения количества строк в каждой группе. Запрос 4_2 Тип запроса: итоговый с группировкой по нескольким полям. Формулировка запроса с точки зрения пользователя: вывести минимальную и максимальную дату тренировки и количество клиентов, посетивших тренировки, для каждой секции по каждому дню недели. Вид запроса на языке SQL: SELECT СЕКЦИИ.[Название секции], [ГРАФИК ТРЕНИРОВОК].[День недели], Min([ПРОВЕДЕНИЕ ТРЕНИРОВКИ].[Дата проведения]) AS [Min-Дата проведения], Max([ПРОВЕДЕНИЕ ТРЕНИРОВКИ].[Дата проведения]) AS [Max-Дата проведения], Count(КЛИЕНТЫ.[ФИО клиента]) AS [Count-ФИО клиента] FROM СЕКЦИИ INNER JOIN (КЛИЕНТЫ INNER JOIN ([ГРАФИК ТРЕНИРОВОК] INNER JOIN [ПРОВЕДЕНИЕ ТРЕНИРОВКИ] ON [ГРАФИК ТРЕНИРОВОК].КГ = [ПРОВЕДЕНИЕ ТРЕНИРОВКИ].КГ) ON КЛИЕНТЫ.КК = [ПРОВЕДЕНИЕ ТРЕНИРОВКИ].КК) ON СЕКЦИИ.КС = [ГРАФИК ТРЕНИРОВОК].КС GROUP BY СЕКЦИИ.[Название секции], [ГРАФИК ТРЕНИРОВОК].[День недели]; Структура запроса в режиме конструктора представлена на рис. 3.30. Рисунок 3.30 – Структура запроса в режиме конструктора Результат работы запроса представлен на рис. 3.31. Рисунок 3.31 – Результат работы запроса Запрос 5_1 Тип запроса: с вычисляемыми полями с использованием обычных арифметических операций. Формулировка запроса с точки зрения пользователя: вычислить скидку на каждую тренировку по абонементу, составляющую 10% от стоимости 1 тренировки без абонемента и стоимость каждой тренировки по абонементу. Вид запроса на языке SQL: SELECT СЕКЦИИ.[Название секции], [ГРАФИК ТРЕНИРОВОК].[День недели], [ГРАФИК ТРЕНИРОВОК].[Стоимость 1 тренировки], [ГРАФИК ТРЕНИРОВОК]![Стоимость 1 тренировки]*0.1 AS Скидка, [ГРАФИК ТРЕНИРОВОК]![Стоимость 1 тренировки]*0.9 AS [Стоимость по абонементу] FROM СЕКЦИИ INNER JOIN [ГРАФИК ТРЕНИРОВОК] ON СЕКЦИИ.КС = [ГРАФИК ТРЕНИРОВОК].КС; Структура запроса в режиме конструктора представлена на рис. 3.32. Рисунок 3.32 – Структура запроса в режиме конструктора Результат работы запроса представлен на рис. 3.33. Рисунок 3.33 – Результат работы запроса
Окна "Построителя выражений" с построенными вычисляемыми полями представлены на рис. 3.34 и рис. 3.35.
Рисунок 3.34 – Окно "Построитель выражений" с построенным полем
Рисунок 3.35 – Окно "Построитель выражений" с построенным полем "Стоимость по абонементу" Запрос 5_2 Тип запроса: с вычисляемыми полями с использованием встроенных функций. Формулировка запроса с точки зрения пользователя: вычислить возраст и день недели рождения каждого тренера. Вид запроса на языке SQL: SELECT ТРЕНЕРЫ.[ФИО тренера], ЗВАНИЯ.[Название звания], ТРЕНЕРЫ.[Дата рождения], Int((Date()-[ТРЕНЕРЫ]![Дата рождения])/365) AS Возраст, WeekdayName(Weekday([ТРЕНЕРЫ]![Дата рождения],2)) AS [День недели рождения] FROM ЗВАНИЯ INNER JOIN ТРЕНЕРЫ ON ЗВАНИЯ.КЗ = ТРЕНЕРЫ.КЗ; Структура запроса в режиме конструктора представлена на рис. 3.36. Рисунок 3.36 – Структура запроса в режиме конструктора Результат работы запроса представлен на рис. 3.37. Рисунок 3.37 – Результат работы запроса Окна "Построителя выражений" с построенными вычисляемыми полями представлены на рис. 3.38 и рис. 3.39. Рисунок 3.38 – Окно "Построитель выражений" с построенным полем Рисунок 3.36 – Окно "Построитель выражений" с построенным полем "День недели рождения "
Все запросы на удаление (простое, каскадное, запрещающее) продемонстрированы на связанных копиях таблиц Запрос 6_1 Тип запроса: простое удаление из таблицы. Формулировка запроса с точки зрения пользователя: удалить все тренировки, проведенные до 01.01.2017. Вид запроса на языке SQL:
Структура запроса в режиме конструктора представлена на рис. 3.37.
Таблица до удаления представлена на рис. 3.38.
Результат работы запроса представлен на рис. 3.39.
Таблица после удаления представлена на рис. 3.40.
Примечание: Простое удаление – это удаление из таблицы, не являющейся справочником ни для какой другой. Запрос 6_2 Тип запроса: каскадное удаление из связанных таблиц. Формулировка запроса с точки зрения пользователя: удалить все тренировки, проведенные до 01.01.2017. Вид запроса на языке SQL:
Структура запроса в режиме конструктора представлена на рис. 3.41.
Таблицы до удаления представлены на рис. 3.42 и рис. 3.43.
Результат работы запроса представлен на рис. 3.44.
Таблицы после удаления представлены на рис. 3.45 и рис. 3.46.
Примечание: Для связей таблиц установлены все 3 параметра, в том числе v "каскадное удаление связанных записей". Тогда удаление записей из таблицы-справочника (со стороны "один") повлечет за собой удаление связанных с ними записей из связанных таблиц со стороны "много". Запрос 6_3 Тип запроса: запрещающее удаление из связанных таблиц. Формулировка запроса с точки зрения пользователя: удалить все тренировки, проведенные до 01.01.2017. Вид запроса на языке SQL:
Структура запроса в режиме конструктора представлена на рис. 3.47.
Результат работы запроса представлен на рис. 3.48.
Примечание: Для связей таблиц установлены только 2 параметра, а параметр "каскадное удаление связанных записей" не установлен. Запрещающее удаление не может осуществиться только если для удаляемых записей из таблицы-справочника (со стороны "один") есть связанные с ними записи в таблице со стороны "много".
Все запросы на добавление записей (из существующей таблицы и конкретной записи) продемонстрированы на связанных копиях таблиц Запрос 7_1 Тип запроса: добавление записей из существующей таблицы. Формулировка запроса с точки зрения пользователя: удалить все тренировки, проведенные до 01.01.2017. Вид запроса на языке SQL:
Структура запроса в режиме конструктора представлена на рис. 3.49.
Таблица до добавления представлена на рис. 3.50.
Результат работы запроса представлен на рис. 3.51.
Таблица после добавления представлена на рис. 3.52.
Примечание: Простое удаление – это удаление из таблицы, не являющейся справочником ни для какой другой. Запрос 7_2 Тип запроса: добавление конкретной записи в строку таблицы. Формулировка запроса с точки зрения пользователя: удалить все тренировки, проведенные до 01.01.2017. Вид запроса на языке SQL:
Структура запроса в режиме конструктора представлена на рис. 3.53.
Таблица до добавления представлена на рис. 3.54.
Диалоговые окна с введенными значениями в таблицу представлены на рис. 3.55.
Результат работы запроса представлен на рис. 3.56.
Таблица после добавления представлена на рис. 3.57.
Примечание: Простое удаление – это удаление из таблицы, не являющейся справочником ни для какой другой.
Запросы на обновление записей продемонстрированы на связанных копиях таблиц Запрос 8 Тип запроса: обновление информации в таблице. Формулировка запроса с точки зрения пользователя: удалить все тренировки, проведенные до 01.01.2017. Вид запроса на языке SQL:
Структура запроса в режиме конструктора представлена на рис. 3.58.
Таблица до обновления представлена на рис. 3.59.
Результат работы запроса представлен на рис. 3.60.
Таблица после обновления представлена на рис. 3.61.
Примечание: Простое удаление – это удаление из таблицы, не являющейся справочником ни для какой другой.
Запрос 9 Тип запроса: поиск дубликатов (повторяющихся записей) в таблице. Формулировка запроса с точки зрения пользователя: удалить все тренировки, проведенные до 01.01.2017. Вид запроса на языке SQL:
Структура запроса в режиме конструктора представлена на рис. 3.62.
Результат работы запроса представлен на рис. 3.63.
Примечание: Простое удаление – это удаление из таблицы, не являющейся справочником ни для какой другой. Запрос 10 Тип запроса: перекрестный. Формулировка запроса с точки зрения пользователя: удалить все тренировки, проведенные до 01.01.2017. Вид запроса на языке SQL:
Структура запроса в режиме конструктора представлена на рис. 3.64.
Результат работы запроса представлен на рис. 3.65.
Примечание: Простое удаление – это удаление из таблицы, не являющейся справочником ни для какой другой. Запрос 11 Тип запроса: поиск неуказанных записей (без подчиненных) в таблице. Формулировка запроса с точки зрения пользователя: удалить все тренировки, проведенные до 01.01.2017. Вид запроса на языке SQL:
Структура запроса в режиме конструктора представлена на рис. 3.66.
Результат работы запроса представлен на рис. 3.67.
Примечание: Простое удаление – это удаление из таблицы, не являющейся справочником ни для какой другой. Запрос 12 Тип запроса: создание новой таблицы. Формулировка запроса с точки зрения пользователя: удалить все тренировки, проведенные до 01.01.2017. Вид запроса на языке SQL:
Структура запроса в режиме конструктора представлена на рис. 3.68.
Результат работы запроса представлен на рис. 3.69.
Примечание: Простое удаление – это удаление из таблицы, не являющейся справочником ни для какой другой.
|
||
Последнее изменение этой страницы: 2018-06-01; просмотров: 209. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |