Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания лабы БД программисты.doc
Скачиваний:
5
Добавлен:
01.03.2025
Размер:
797.7 Кб
Скачать

Лабораторная работа №10 Тема: Запросы

Цель: Изучить язык SQL, организацию отбора данных инструментальным способом.

Задание:

  1. Изучить язык SQL.

  2. Изучить инструментальный способ создания запросов (с помощью SQL Builder).

  3. Создать запросы для приложений с базами данных Paradox и MS Access:

  • простой запрос;

  • запрос с вычислениями;

  • отбор данных из нескольких таблиц.

Для построения запросов выделим объект Query и в его контекстном меню выберем пункт SQL Builder (Построитель запросов).

 SQL— это специальный язык программирования, предназначенный для формирования запросов к базам данных. Нужный нам запрос можно было бы описать на этом языке и затем занести соответствующий текст в свойство SQL (тип ТStrings) объекта Query. Но если разработчик не знает этого языка, он может воспользоваться визуальным построителем запросов SQL Builder, который на основании действий пользователя сгенерирует текст на языке SQL автоматически.

 Первоначально экран построителя пуст. Название текущей базы данных указывается в раскрывающемся списке Database (База данных) в верхнем правом углу окна. Запрос строится на основе нужных таблиц. Добавление таблиц к запросу выполняется выбором необходимых пунктов в раскрывающемся списке Table (Таблица).

При этом на экране возникнут образы соответствующих таблиц. Ключевые поля помечены знаком «+». В нижней части окна показан набор страниц, с помощью которых в визуальном режиме можно задавать всевозможные условия отбора записей.

Следующий шаг — создание условия отбора записей. Это условие задается на вкладке Criteria (Условия отбора). В столбцах Field or Value (Поле или константа) указываются сравниваемые поля или константы, в столбце Compare (Сравнить) — оператор сравнения. Число строк с условиями может быть неограниченным.

После того как в список условий отбора добавляется новая строка, слева от предыдущих строк появляется слово AND, означающее логическую связку «И». Таким образом, отбираются записи, для которых выполняются все заданные условия.

Для отбора соответствующих полей есть два способа: 

  1. В таблице в верхней части построителя запросов выбирается поле, которое требуется показать — это поле Name. По щелчку оно помечается синей галочкой, а сама таблица — серой. Серый цвет говорит о том, что из данной таблицы будут взяты не все поля. Если щелкнуть на флажке не записи, а таблицы, выделяются все поля.

  2. На вкладке Selection (Выбор) в столбце Field (Поле) нужное поле выбирается в раскрывающемся списке, а в столбце Output Name (Имя при выводе) указывается произвольное название для этого поля.

Непосредственно из Проектировщика запросов можно посмотреть, правильно ли сформирован запрос, и что он будет отображать. Для этого надо щелкнуть на кнопке Execute Query (Выполнить запрос). В этом случае на экране отображается текстовая таблица, соответствующая результатам запроса.

      • Логические связки условий

Запрос выполняется, если одновременно истинны все условия, заданные на вкладке Criteria (Условия отбора) — они связаны логической операцией AND (И). В раскрывающемся списке на этой вкладке такая операция обозначается пунктом ALL (Все). Если его изменить на ANY (хотя бы одно), то слово AND слева от каждого условия заменится на слово OR (ИЛИ). Это означает, что отбираются записи, для которых истинно любое из указанных условий.

Другое возможное значение — NONE (ни одно) — представляет собой операцию отрицания, аналог операции not в Паскале. Если оно задано, отбираются те записи, для которых указанное условие не истинно, а ложно.

Наконец, значение NOT ALL (не все) требует, чтобы хотя бы одно из списка условий было ложным. Запись отбирается только в таком случае. 

      • Итоговые вычисления

При работе с Построителем запросов имеется возможность использовать готовые итоговые функции (нахождения максимального или среднего значения конкретного поля и т. п.).

Итоговая функция

Назначение

SUM

SUM DISTINCT

 

 

COUNT

COUNT DISTINCT

AVG

AVG DISTINCT

MIN

МАХ

Сумма всех значений в поле

Сумма всех несовпадающих значений в поле. Если в указанном поле в нескольких записях хранится одно и то же значение, оно будет учтено только один раз

Число всех значений в поле

Число всех несовпадающих значений в поле

Средняя величина всех значений в поле

Средняя величина всех несовпадающих значений в поле

Максимальное значение в поле

Минимальное значение в поле

Для создания простого запроса на выборку указываем название БД Oplata, а в раскрывающемся списке Table выбираем таблицу Stydent.db.При этом на экране возникнет образ соответствующей таблицы, где щёлкаем на флажке названия таблицы, при этом выделяются все поля:

На вкладке Criteria из раскрывающегося списка выбираем поле Stydent.Forma_ob, выбираем операцию «=», а в столбце Field or Value указывем значение: «бюджет».

В результате такого условия произойдёт отбор только тех записей из таблицы Stydent.db, у которых значение поля Форма_обучения равно «бюджет» (студенты, обучающиеся на бюджетной основе).

Текст запроса:

SELECT Kod_styd, FIO, Forma_ob, Nazvanie_gr, Nom_ser_pasp_st,

Propiska, Nom_ser_pasp_rod

FROM "Stydent.DB" Stydent

WHERE Forma_ob = 'бюджет'

Отображение запроса:

Для создания запроса с вычислениями указываем название БД Oplata, а в раскрывающемся списке Table выбираем две таблицы: Plat_por.db, Dogovor.db.При этом на экране возникнет образы соответствующих таблиц, где в первой таблице выбираем поле, которое требуется показать — это поле Nom_dogovora, а во второй - Symma. По щелчку они помечаются синей галочкой, а сами таблицы — серой. Серый цвет говорит о том, что из данных таблиц будут взяты не все поля:

Но прежде необходимо установить связь между таблицами. Для этого найдем в таблице Plat_por поле Nom_dogovora и протянем от него линию к таблице Dogovor. Между таблицами сразу же сформируется связь, отображаемая в виде линии, а поле Nom_dogovora будет помешено на самый верх таблицы и выделено полужирным шрифтом. Это означает, что между таблицами установлена связь по ключевому полю:

Раскрывающийся список на вкладке Joins (Соединения) содержит список связей, установленных между таблицами. Сейчас в нем выбрана только что созданная связь (Plat_por < - > Dogovor), но таких связей может быть сколько угодно.

Вместо того, чтобы устанавливать связи при помощи мыши, их можно задать на данной странице, выбрав нужные поля в столбцах Field (Поле) и задав отношение между ними в столбце Operator (равно, не равно, больше, меньше).

Для создания вычисляемого поля на вкладке Selection в контекстном меню выбираем пункт Symmary. При этом добавляется новое поле, в котором указываем операцию Sum и поле, для которого производится операция: Plat_por.Symma.

Результатом данного запроса будет отображение номера договора студента и внесённых платежей из таблицы Plat_por.db, а также поле, значением которого является вся сумма заключённого договора:

Текст созданного запроса:

SELECT Plat_por.Nom_dogovora, SUM( Plat_por.Symma ),

Dogovor.Symma

FROM "Plat_por.DB" Plat_por

INNER JOIN "Dogovor.db" Dogovor

ON (Plat_por.Nom_dogovora = Dogovor.Nom_dogovora)

GROUP BY Plat_por.Nom_dogovora, Dogovor.Symma

Отображение запроса: