Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД / Uchpos / Gl_4.doc
Скачиваний:
24
Добавлен:
27.04.2015
Размер:
342.53 Кб
Скачать

Query-by-example: язык исчисления с переменными – доменами

Язык Query-By-Example (QBE) разработан в Исследовательском центре IBM в Йорктаун-Хейтсе. Его специфика заключается в том, что он предназначен для работы с терминала. При этом можно использовать специальный экранный редактор для составления запросов. Рассмотрим возможности языка на примере его наиболее полной реализации в СУБД Paradox фирмы Borland.

Для ввода запроса выбирается опция ASK из главного меню системы. Можно сформулировать запрос к одной таблице или связать в одном запросе несколько таблиц. В запросе нужно указать:

- какие таблицы содержат требуемую информацию,

- какие поля требуется вывести,

- какие записи нужно выбрать,

- какие вычисления нужно выполнить.

Кроме того, запрос можно использовать для того, чтобы включить (insert) новые записи в таблицу, удалить (delete) записи из таблицы, изменить (change) значения полей, найти (find) записи в таблице, определить группы и наборы (sets) информации внутри таблицы и выполнить вычисления для каждого набора.

Метод задания и выполнения запроса называется "query by example". Формулируя запрос, мы даем системе пример результата, который нужно получить, на основе которого СУБД автоматически выбирает наиболее быстрый путь получения ответа или выполнения операций.

После выполнения запрос сохраняется, его можно отредактировать и выполнить повторно.

Формы запросов

Запрос формируется путем заполнения форм запросов для таблиц, содержащих информацию. После выбора опции Ask, СУБД запрашивает имя таблицы, которое нужно ввести или выбрать из предлагаемого меню. После этого на экран выводится форма запроса для таблицы, содержащая все ее поля. Аналогичные действия нужно повторить для каждой таблицы, используемой в запросе. Количество таблиц в запросе не ограничивается.

Заполнение формы запроса заключается в занесении в ее поля значений, операторов и зарезервированных слов:

Зарезервированные слова:

√ - вывести поле в Answer,

√+ - вывести поле с дубликатами значений,

√▼ - вывести поле со значениями, упорядоченными по убыванию,

G - специфицировать группу для set операторов,

сalc - вычислить новое поле,

insert - включить новые записи с заданными значениями,

delete - удалить из таблицы выбранные записи,

changeto - изменить значения в выбранных записях,

find - найти записи в таблице,

set - определить выбранные записи как набор (set).

Арифметические операторы:

+ - сложение или конкатенация,

- - вычитание,

* - умножение,

/ - деление,

( )- группировка операторов в выражении.

Операторы сравнения: = , < , > , >=, <= .

Операторы образца (pattern):

.. - любые символы,

@ - любой отдельный символ.

Специальные операторы:

like - похожий на,

not - не равно,

blank - отсутствие значения,

today - текущая дата,

or - или,

, - и,

as - определяет имя поля в Answer,

! - включить все записи.

Агрегатные операторы:

average - среднее значение,

count - количество значений,

max - наибольшее значение,

min - наименьшее значение,

sum - сумма значений,

all - вычислить агрегатный оператор для всех значений в группе, включая дубликаты,

unique - то же только для уникальных значений.

Операторы сравнения наборов:

only - вывести записи, соответствующие только членам определенного набора,

no - вывести записи, соответствующие не членам определенного набора,

every - вывести записи, соответствующие всем членам определенного набора,

exactly- вывести записи, соответствующие всем членам определенного набора и никаким другим.

В заполненную форму запроса могут быть внесены изменения с помощью клавиш Backspace или Alt F5 (редактирование поля).

Все формы запроса, одновременно находящиеся в рабочем пространстве, являются активными. Все вместе они образуют текущий оператор запроса, который выполнится после нажатия клавиши F2 (Do_it!). Оператор может быть сохранен.

Результат запроса выводится в виде таблицы с именем Answer. Это временная таблица, которая обновляется при выполнении очередного запроса и удаляется при выходе из Paradox. Для сохранения ее необходимо переименовать. Ansver можно использовать при построении следующего запроса.

Во всех случаях, кроме использования Find и √+, Answer сортируется по значениям полей слева направо.

Соседние файлы в папке Uchpos