logo

2.2.3. Отбор строк из таблицы базы данных

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

Поиск данных в таблицах выполняется программой "XSEL.EXE". Эта программа предназначена также для выполнения операций проекции и соединения таблиц. Командная строка запуска программы имеет следующий вид :

XSEL [<ключи>] <файл условия отбора> <входной файл> <выходной файл>

Ключи:

-dis - только различные записи;

-l[:<файл листинга>];

-p:<файл параметров>[:<имя таблицы>];

-s:<список таблиц>;

Входной файл, выходной файл и файл параметров являются таблицами и должны быть определены в списке таблиц. Если во входных файлах (файл условия отбора, входной файл и файл параметров) указан не полный путь, то поиск этих файлов выполняется вначале в текущем каталоге, а затем в том каталоге, где расположен список таблиц.

Формирование выходной таблицы осуществляется следующим образом (рис.2.9). Файл условия отбора содержит логическое выражение, которое определяет, какие значения попадут в выходную таблицу. Значения из текущей строки входной таблицы и таблицы параметров составляют набор атрибутов, которые участвуют в записи логического выражения. Если логическое выражение – истина, то из данного набора значений атрибутов формируется строка выходной таблицы.

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

12, 56, 0.25, 30.5, "текст", D, D1, R, A.D, b.r

В выражении используются следующие операции:

- - унарный минус;

+ - сложение;

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

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

/ - деление;

** - возведение в степень;

== - равно;

!= - не равно;

> - больше;

>= - больше или равно;

< - меньше;

<= - меньше или равно;

&& - логическое “и” (конъюнкция);

|| - логическое “или” (дизъюнкция);

! - отрицание.

Таблица параметров

Набор значений атрибутов

Выходная таблица

Входная таблица

Файл, содержащий логическое выражение условий отбора

Рис. 2.9. Схема формирования выходной таблицы по запросу

В выражении используются следующие функции:

match(<выражение 1>,<выражение 2>) - сравнение строк по шаблону.

Шаблон может содержать следующие специальные символы:

? - заменяет значение одного любого символа в конкретной позиции;

* - заменяет любую последовательность символов;

Заглавные и прописные буквы шаблона не различаются. Например:

“o*” - произвольный текст, начинающийся с 'o';

“*глу*” - произвольный текст, включающий набор символов "глу".

Условие отбора может записываться на нескольких строках. Наличие вначале строки двух точек ("..") означает, что данная строка является комментарием. Пример условия отбора приведен в главе 3.2.1.