Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Пример 19.53




Пример 19.52.

DELETE границы FOR условие1 WHILE условие2

Операция логического удаления (пометки) записей активного файла, если они отвечают требованию условия1. операция выполняется до тех пор, пока истинно условие2.

COPY TO нов_файл границы FIELDS список_полей FOR условие1 WHILE условие2

Записи активного файла, удовлетворяющиеся условию1, если истинно условие2, используются для формирования нового файла, схема которого задается как список_полей.

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

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

JOIN WITH псевдоним FOR условие FIELDS список_полей

Запись исходного файла объединяется с записью файла, открытого под именем псевдоним, если выполняется условие. Формируется новый файл, схема которого задается списком полей.

Для одновременной работы более чем с двумя файлами используются переменные, в которые сохраняются значения полей в качестве внешнего ключа связи.

Кроме того, данный класс реляционных языков реализует типовые конструкции языков структурного программирования:

  • циклы (DO WHILE...END DO);
  • условные операторы (IF...ELSE...ENDIF);
  • альтернативные операторы (DO CASE...OTHERWISE...ENDCASE) и др.

Реляционные dBASE-подобные языки занимают промежуточное положение между языками манипулирования данными СУБД и языками программирования, обладают выраженной процедурностью обработки, когда явно указывается последовательность действий, приводящих к конечному результату.

Графические (схематичные) реляционные языки

Типичным представителем является язык QBE (Query By Example), реализованный в среде электронных таблиц, в ряде СУБД, в пакете Microsoft Query.

Данный язык относится к языкам манипулирования данными. Работа выполняется со схемой реляционной таблицы с использованием простейших синтаксических конструкций.

Для вертикальной выборки (проекции) записей реляционной таблицы осуществляется пометка отбираемых полей с помощью символа V (помеченное поле выводится в выходную структуру новой реляционной таблицы).

Пример 19.54. Получить список имен и фамилий студентов

СТУДЕНТ Имя Фамилия Дата рождения N зач. книжки
  V V    

Для горизонтальной выборки (селекции) задаются логические условия (критерии) отбора записей в поисковых полях.

Условия могут задаваться как выражения, построенные с помощью операторов различного вида:

Арифметические операторы - используются для выполнения вычислений с числами в качестве констант выражения:

*Умножения двух чисел

+ Сложения двух чисел

- Вычитания одного числа из другого

/ Деления одного числа на другое

Операторы сравнения - используются для сравнения двух значений:

> (больше)

>= (больше или равно)

< (меньше)

<= (меньше или равно)

<> (не равно)

=(равно).

Логические операторы - используются с выражениями, которые могут быть истинными или ложными:

И (AND) - должны выполняться оба критерия.

Или (OR) - должен выполняться один из критериев.

Не (NOT) - этот критерий не должен выполняться.

Могут использоваться специальные операторы типа:

BETWEEN - значение в заданном диапазоне.

IN - одно из значений списка.

IS - с ключевым словом Null определяет, является ли величина нулем (нет значения) или нет (есть значение).

LIKE - использует символы подстановки для сравнения двух значений.

Условия задаются в следующих вариантах:

  • для одного поля;
  • в одной строке для нескольких полей, считая все условия совместными;
  • в разных строках для одного или разных полей, считая их альтернативными.

Пример 19.55. Для получения фамилий студентов с именем Иван и датой рождения в диапазоне 1.1.79- 1.1.80 создастся запрос:

СТУДЕНТ Имя Фамилия Дата рождения N зач. книжки Дата рождения
  Иван V >1.1.79   <1.1.80

Для получения фамилий студентов с именем Иван с датой рождения в диапазоне 1.1.79 -1.1.80 и фамилий студентов с именем Петр создается запрос:

СТУДЕНТ Имя Фамилия Дата рождения N зач. книжки Дата рождения
  Иван V >1.1.79   <1.1.80
  Петр V      

В некоторых реализациях языка QBE условие на значение диапазона дат может записываться в ином виде:

Дата рождения
>1.1.79, <1.1.80

или

Дата рождения
>1.1.79#AND#<1.1.80

или

Дата рождения
BETWEEN (1.1.79,1.1.80)

Язык QBE позволяет вычислять групповые функции (по группе выделенных строк) с помощью функций:

Avg -среднее арифметическое значение поля;

Count - число выбранных записей;

Мах - максимальное значение поля;

Min - минимальное значение поля;

Sum - сумма значений поля.

Для использования подобных функций указываются поля, образующие группу записей.

Пример 19.56. Для подсчета количества студентов с именем Иван и датой рождения в диапазоне 1.1.79 - 1.1.80 создается запрос:

СТУДЕНТ Имя Фамилия Дата рождения N зач. книжки Дата рождения
  Иван V >1.1.79   <1.1.80

Ключевое слово Calc означает вычисление значений по данному полю.

Выражения используются в запросе и для формирования новых данных.

Пример 19.57. Для каждого студента определить количество прожитых на сегодняшнюю дату дней:

СТУДЕНТ Имя Фамилия Дата рождения N зач. книжки
  V V *,Calc today-*  

Символ *;идентификатор значения поля, today - встроенная функция вычисления сегодняшней даты.

Для совместной обработки реляционных таблиц строится многотабличный запрос, в котором указываются внешние ключи связи, помечаемые в бланках запроса.

Пример 19.58. Получить сведения о студентах, успевающих на 4 и 5, название дисциплины и результат сдачи экзамена (оценку):

СТУДЕНТ Имя Фамилия Дата рождения N зач. книжки
  V V   Å

 

ОЦЕНКА N зач. Книжки Код дисциплины Результат
  * * * V >=4

 

ДИСЦИПЛИНА Код дисциплины Название дисциплины
  * * V

Символы *;(*;*) -идентификаторы ключей связи в различных реляционных таблицах. Выходная структура содержит поля: имя. фамилия, результат, название дисциплины. Выводятся сведения о студентах, которые учатся на 4 и 5.

Некоторые версии языка QBE позволяют создать набор (множество) значений указанного поля одной таблицы, по отношению к которому проверяются значения поля другой таблицы. Операции сравнения выполняются на уровне множества значений поля с помощью сравнения наборов:

ONLY - второй набор - подмножество первого,

NO - наборы не совпадают,

EVERY - первый набор - подмножество второго,

EXACTLY - наборы совпадают.

Первый набор формируется с помощью ключевого слова SET.

Пример 19.59. Получить сведения о студентах, которые имеют такие же результаты, что и студент с зачетной книжкой 123456

ОЦЕНКА N зач. книжки Код дисциплины Результат
SET     *
  V * * * * EXACTLY&*

 

СТУДЕНТ Имя Фамилия Дата рождения N зач. книжки
  V V   * *

В ряде СУБД кроме выборки записей возможны операции включения новых записей (INSERT), удаления записей (DELETE) или групповой корректировки выбранных записей (CHANGETO).




Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 412; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.