С целью повышения эффективности обработки данных, хранящихся в БД, применяются запросы, которые позволяют выполнять множественную обработку данных (одновременный ввод, редактирование и удаление множества записей, а также выбор данных из таблиц).
Запрос – требование, описанное специальным образом, которое определяет состав операций выборки, удаления или изменения хранимых данных, выполняющихся над БД.
Для выполнения запросов средствами разных СУБД чаще всего используют 2 основных языка описания запросов:
- QBE (Query By Example – язык запросов по образцу);
- SQL (Structured Query Language – структурированный язык запросов).
Главным отличием между этими языками является способ формирования запросов: язык QBE позволяет формировать запрос вручную или визуально, а SQL программирует запрос.
Характеристика языка QBE
Теоретическую основу языка QBE составляет реляционное исчисление доменов. С помощью языка QBE можно создавать сложные запросы к базе данных, заполняя предлагаемую СУБД запросную форму. Данный способ создания запросов позволяет получить высокую наглядность и не требует указывать алгоритм выполнения операции. Каждая современная реляционная СУБД содержит свой вариант QBE.
Язык QBE позволяет создавать однотабличные и многотабличные (которые выбирают или обрабатывают данные из более, чем одной связанных таблиц) запросы.
Запросы на языке QBE позволяют выполнять основные операции:
- выборки данных;
- вычисления над данными;
- вставки новых записей;
- удаления записей;
- изменения данных.
В результате выполнения запроса создается новая таблица, которая называется ответной, или обновленная исходная таблица.
Все операции, кроме вычислений, можно производить безусловно или по условиям, которые задаются логическими выражениями. Вычисления над данными выполняются с помощью арифметических выражений и создают в ответных таблицах новые поля, которые называют вычисляемыми.
Запросная форма представляется в виде таблицы с именем и названиями полей, которые совпадают соответственно с именем и названиями полей использующейся исходной таблицы.
Современные СУБД (например, Visual FoxPro, Access) многие действия по созданию запросов на языке QBE позволяют выполнять визуально с помощью мыши.
Первоначальный вариант QBE
Первое описание QBE было предложено в 1975-1977 гг. М.М. Злуффом.
Рассмотрим таблицы базы данных, которая используется в торговле фирмой, продающей несколько видов товаров. База данных содержит 4 таблицы:
- ЕМР – Служащие;
- SALES – Продажи;
- SU****PPLY – Поставщики;
- TYPE – Типы товаров.
Чтобы указать системе необходимость включения какого-либо поля в ответную таблицу используется параметр Р. – напечатать.
Запрос на выборку.
Можно записать запрос на выборку, например, всех зеленых товаров:
Словесно запрос формулируется так: «Вывести все товары XX, которые имеют зеленый цвет». Здесь элемент примера XX не является обязательным, т.е. он может быть опущен. Обязательными элементы примера являются при записи логических условий и при выполнении связывания таблиц в запросах.
Пустые колонки из шаблона могут быть удалены.
Удаление колонок.
Столбец СТОИМОСТЬ не используется, поэтому можно записать шаблон таким образом:
После того, как шаблон заполнен, чтобы получить результат нужно нажать соответствующую клавишу, например Enter, после чего начнется выполнение запроса.
Результат выполнения рассмотренного запроса:
Характеристика языков QBE современных СУБД
Основными отличиями языков QBE современных СУБД от языка, который предложил М.М. Злуфф являются незначительные изменения в интерпретации отдельных реляционных операций, введение дополнительных операций и изменение формы представления языка.
Например, в системе Paradox операция печати Р. заменена методом выбора в запросной форме полей с помощью флажков, которые расположены в начале каждого ее поля.
Запросные формы в MS Access наглядно показывают конструирование запроса. В процессе подготовки запросных форм диалоговое окно (рисунок 1) состоит из двух частей: верхняя часть отображает взаимосвязь исходных таблиц, а нижняя – остальную информацию о запросе по каждому из полей.