Графические (схематичные) реляционные языки
Типичным представителем является язык QBE (Query By Example), реализованный в среде электронных таблиц, в ряде СУБД, в пакете Microsoft Query.
Данный язык относится к языкам манипулирования данными. Работа выполняется со схемой реляционной таблицы с использованием простейших синтаксических конструкций.
Для вертикальной выборки (проекции) записей реляционной таблицы осуществляется пометка отбираемых полей с помощью символа √ (помеченное поле выводится в выходную структуру новой реляционной таблицы).
Для горизонтальной выборки (селекции) задаются логические условия (критерии) отбора записей в поисковых полях.
Условия могут задаваться как выражения, построенные с помощью операторов различного вида:
Арифметические операторы – используются для выполнения вычислений с числами в качестве констант выражения:
* Умножения двух чисел
+ Сложения двух чисел
- Вычитания одного числа из другого
/ Деления одного числа на другое
Операторы сравнения – используются для сравнения двух значений:
> (больше)
>= (больше или равно)
< (меньше)
<= (меньше или равно)
<> (не равно)
= (равно).
Логические операторы – используются с выражениями, которые могут быть истинными или ложными:
И (AND) – должны выполняться оба критерия.
Или (OR) – должен выполняться один из критериев.
Не (NOT) – этот критерий не должен выполняться.
Могут использоваться специальные операторы типа:
BETWEEN – значение в заданном диапазоне.
IN – одно из значений списка.
IS – с ключевым словом Null определяет, является ли величина нулем (нет значения) или нет (есть значение).
LIKE – использует символы подстановки для сравнения двух значений.
Условия задаются в следующих вариантах:
для одного поля;
в одной строке для нескольких полей, считая все условия совместными;
в разных строках для одного или разных полей, считая их альтернативными.
Пример 19.55.Для получения фамилий студентов с именем Иван и датой рождения в диапазоне 1.1.79 –1.1.80 создается запрос:
Для получения фамилий студентов с именем Иван с датой рождения в диапазоне 1.1.79- 1.1.80 и фамилий студентов с именем Петр создается запрос:
В некоторых реализациях языка QBE условие на значение диапазона дат может записываться в ином виде:
Язык QBE позволяет вычислять групповые функции (по группе выделенных строк) с помощью функций:
Avg – среднее арифметическое значение поля;
Count – число выбранных записей;
Мах – максимальное значение поля;
Min – минимальное значение поля;
Sum – сумма значений поля.
Для использования подобных функций указываются поля, образующие группу записей.
Пример 19.56.Для подсчета количества студентов с именем Иван и датой рождения в диапазоне 1.1.79 – 1.1.80 создается запрос:
Ключевое слово Сalс означает вычисление значений по данному полю.
Выражения используются в запросе и для формирования новых данных.
Пример 19.57.Для каждого студента определить количество прожитых на сегодняшнюю дату дней:
Символ – идентификатор значения поля, today – встроенная функция вычисления сегодняшней даты.
Для совместной обработки реляционных таблиц строится многотабличный запрос, в котором указываются внешние ключи связи, помечаемые в бланках запроса.
Пример 19.58.Получить сведения о студентах, успевающих на 4 и 5, название дисциплины и результат сдачи экзамена (оценку):
Символы – идентификаторы ключей связи в различных реляционных таблицах. Выходная структура содержит поля: имя, фамилия, результат, название дисциплины. Выводятся сведения о студентах, которые учатся на 4 и 5.
Некоторые версии языка QBE позволяют создать набор (множество) значений указанного поля одной таблицы, по отношению к которому проверяются значения поля другой таблицы. Операции сравнения выполняются на уровне множества значений поля с помощью сравнения наборов:
ONLY – второй набор – подмножество первого,
NO – наборы не совпадают,
EVERY – первый набор – подмножество второго,
EXACTLY – наборы совпадают.
Первый набор формируется с помощью ключевого слова SET.
Пример 19.59.Получить сведения о студентах, которые имеют такие же результаты, что и студент с зачетной книжкой 123456
В ряде СУБД кроме выборки записей возможны операции включения новых записей (INSERT), удаления записей (DELETE) или групповой корректировки выбранных записей (CHANGETO).