Язык запросов по образцу QBE — это метод формирования запросов к базе данных с применением образцов значений полей в виде текстовых строк.
Введение
Запрос на выборку данных считается одним из наиболее используемых видов запросов. Он предназначен для выборки информации из одной или нескольких таблиц и отображения найденных результатов в форме сетки с этими данными. В сетке с выбранными данными полученная из таблицы информация должна отображаться в форме совокупности столбцов и строк, аналогично стандартной электронной таблице. Запросы на выборку разрешают группирование записей, а также определение сумм, счетчиков, средних значений и применение агрегатных функций иного предназначения.
В передовых системах управления базами данных (СУБД) повсеместно применяются табличные языки запросов. Самым распространенным среди этих языков считается язык QBE (Query-By-Example), то есть, запрос по образцу (примеру). Язык QBE предназначается для использования в интерактивном режиме и имеет ориентацию на конечных пользователей. Он используется во многих сегодняшних СУБД, к примеру, в dBase IV и более старших вариантах данной системы, Paradox, Access. Разные практические реализации данного языка имеют некоторые отличия друг от друга, но все они выполнены по одному принципу.
Язык запросов по образцу QBE
Подход, используемый в языке QBE, состоит в следующем. В окне создания запроса, которое называется окно Query, отображаются две зоны:
- в первой зоне показана структура таблицы, данные из которой должны использоваться в запросе. В качестве исходных для запроса могут быть указаны не только таблицы из базы данных, но также и другие запросы;
- во второй зоне пользователю необходимо задать условия запроса. В данной зоне пользователь должен определить, какие поля (столбцы) будут участвовать в создании запроса, а также назначить условия отбора и ряд других характеристик запроса. К примеру, если пользователю требуется выбрать все строки с определенным значением какого-либо атрибута, то в выбранном столбце формы запроса необходимо указать это значение.
В общем случае создание запроса должно начинаться с задания таблиц, для которых формируется запрос. Затем во второй зоне окна Query следует задать отметки в форме галочек, которые указывают на поля, включаемые в таблицу ответов ANSWER. Для того чтобы сузить область действия запроса в нем следует указать условия, которым обязаны соответствовать требуемые данные. После завершения формирования запроса, необходимо исполнить его, нажав необходимые кнопки (к примеру, Run Query). СУБД должна обработать запрос, путем преобразования его в SQL-оператор, по завершении исполнения которого результаты отобразятся в таблице ANSWER, как показано на рисунке ниже:
Рисунок 1. Таблица. Автор24 — интернет-биржа студенческих работ
Для того чтобы вставить требуемое поле в таблицу ответов, следует в окне Query сделать отметку в данном поле. Если установить курсор мышки на маленьком окне в выбранном поле и нажать левую клавишу мышки, то при работе с СУБД Paradox должен появиться перечень возможных отметок:
- Отметка Гу1, которая означает выбор неповторяющихся строк и реализацию сортировки в порядке возрастания.
- Отметка «?», которая означает отмену выбора.
- Отметка [у+1, которая означает выбор всех строк без выполнения сортировки.
- Отметка 0, которая означает выбор неповторяющихся строк и выполнение сортировки в порядке убывания.
К примеру, для того чтобы определить, какие разные категории квартир имеются, необходимо установить отметку в поле KCategory, а для вывода всей таблицы FLAT, следует отметить все поля таблицы при помощи универсальной кнопки, которая расположена в первой колонке запроса под именем таблицы:
Рисунок 2. Окно программы. Автор24 — интернет-биржа студенческих работ
Для того чтобы выбрать из таблицы данные, которые удовлетворяют определенным условиям, следует в запросе для отдельных полей справа от окошка задать условия, относящиеся к данным полям. К примеру, на рисунке выше, изображен запрос на языке QBE для СУБД Paradox, который выбирает из таблицы FLAT данные о приватизированных (П) или (OR) коммунальных (К) квартирах с площадью в границах от 20 до 40 квадратных метров, располагающихся в восьмом микрорайоне города Зеленограда. Запятая, которая стоит в условии для поля Skv, служит для обозначения логической операции И.
Помимо задания условия, определяющего отбор данных, при описании запроса язык QBE предоставляет возможность указания перечня атрибутов и в какой очередности они должны входить в таблицу ответов. В нее могут быть помещены не только реальные поля, хранящиеся в какой-либо из исходных таблиц, но и вычисляемые поля.
Существуют два формата вычислений, которые могут исполняться в запросах, формах и отчетах:
- Формат агрегирующих операторов, исполняющих операции над группой строк.
- Формат обычных вычислений, затрагивающих отдельные поля одной или нескольких связанных строк.
Совокупность агрегатных функций может быть разной в разных системах. Как правило, присутствуют следующие функции:
- функция суммы Sum,
- функция минимума Min,
- функция максимума Мах,
- функция среднего значения Avg,
- функция подсчета Count.
Отдельные системы могут включать некоторые дополнительные статистические функции, такие как отклонение, стандартное отклонение, дисперсия и так далее.
Применение агрегатных функций подразумевает тот факт, что таблица является упорядоченной по тому полю (полям), по которому осуществляется агрегирование. Отдельные СУБД сами в автоматическом режиме осуществляют упорядочение данных по требуемым нолям, но многие этого не делают. В последнем варианте, если пользователи не задают правильно необходимое упорядочение, то результат может оказаться искаженным.
Если используется СУБД Paradox, то значение поля в таблице ответов может быть вычислено при помощи оператора CALC, который записывается в поле справа от окошка. Вычисляемое выражение может иметь элемент образца, то есть, переменную, которая принимает текущее значение поля данных.