Структурная схема терминов


 

 

Сортировка

Сортировка определяет порядок расположения записей в наборе данных. Порядок расположения записей в БД может быть неопределенным. По умолчанию записи не отсортированы или сортируются по текущему индексу.

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

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

Направление сортировки задает свойство ixDescending; если оно выключено – сортировка ведется по возрастанию, а если включено, то – по убыванию.

Пример 1

Procedure TForm1.Button4Click (Sender: TObject);Begin Case RadioGroup1.ItemIndex of 0: Table1. IndexName := 'indName'; 1: Table1. IndexName := 'indBirthDay'; end;end;

Пример 2

Procedure TForm1.Button5Click (Sender: TObject);Begin Case RadioGroup1.ItemIndex of 0: Table1.IndexFieldNames := 'Name'; 1: Table1.IndexFieldNames := 'Name; BirthDay'; 2: Table1.IndexFieldNames := 'Code'; end;end;

Фильтрация записей

Фильтрация записей – это задание ограничения для записей отбираемых в набор данных.

Система Delphi дает возможность осуществлять фильтрации записей:

· по выражению;

· по диапазону.

По умолчанию фильтрация записей не ведется и набор TTable содержит все записи связанной с ним таблицы БД, а в набор TQuery включаются все записи, отвечающие SQL-запросу, содержащемуся в свойстве SQL. При использовании фильтрации набор данных ограничивается записями, удовлетворяющими условию фильтра, что ограничивает состав записей SQL-запроса, кроме того, поиск с помощью фильтрации действует медленнее, чем индексный, поэтому при работе с удаленными БД фильтрацию использовать не целесообразно.

Организация данных в БД InterBase

В отличие от локальной БД, состоящей из отдельных или связанных таблиц, удаленная БД имеет более сложную структуру, которая включает:

· таблицы;

· индексы;

· ограничения;

· домены;

· просмотры;

· генераторы;

· триггеры;

· функции пользователя;

· хранимые процедуры;

· исключения;

· BLOB-фильтры;

· привилегии.

Элементы структуры удаленной БД называют метаданными, где "мета" означает "над" данными.

Для InterBase

· максимальное число таблиц в БД = 65536;

· максимальное число столбцов в таблице = 1000.

Поиск в наборах данных

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

В локальных БД ускоренный поиск ведется по индексированным полям, а для работы с неиндексированными полями служат методы Locate и Lookup.

В удаленных БД действуют совершенно иные принципы обработки данных. Все действия с данными основаны на SQL запросах, даже компоненты типа TIBTable (и TOraTable в Oracle) фактически организованы как SQL–запрос:

select * from <имя таблицы>.

Поэтому сортировка, поиск и фильтрация сводятся к манипулированию данными с использованием параметров SQL-запросов.

 

Манипулирование данными в выборках

Отбор записей выполняется оператором SELECT. Формат этого оператора для работы с удаленными БД имеет свои особенности.

SELECT [DISTINCT | ALL] {* | <список полей>}FROM <таблица>[WHERE <условие отбора>][ORDER BY<список полей для сортировки>][GROUP BY <список полей для группировки>][HAVING <Условия группирования>][UNION <Вложенная инструкция SELECT>][PLAN <План выполнения запроса>]

По сравнению с локальной версией, дополнительно здесь появились:

· описатель ALL – позволяет отбирать записи с повторяющимися значениями (DISTINCT обеспечивает отбор только уникальных значений);

· операнд PLAN – задает план выполнения запроса.

Фильтрация обеспечивается условием отбора записей в предложении Where, которые для удаленных БД могут быть более сложными.

<Условие отбора> ={<Выражение> <Операция сравнения> {<Выражение1> | (<Отбор1>)} |<Выражение> [NOT] <Мин. значение> AND <Макс. значение> |<Выражение> [NOT] LIKE <Выражение1> [ESCAPE <Выражение2>] |<Выражение> [NOT] IN(<Выражение 1> [,<Выражение 2>]...[,<Выражение N>] |(<ОтборМ>)) |<Выражение> IS [NOT] NULL |<Выражение> [NOT] {<Операция сравнения> |ALL|SOME|ANY) (<ОтборМ>) |Exists(<ОтборМ>)|SINGULAR (<ОтборМ>)<Выражение> [NOT] CONTAINING <Выражение1> |<Выражение> [NOT] STARTING [WITH] <Выражение1>}

Элементы, обозначенные как отбор, представляют собой вложенные инструкции select:

· <Отбор1> – возвращает одно значение, в частном случае, ни одного;

· <ОтборМ> – возвращает несколько значений, в частном случае, ни одного.

Условие отбора (фильтрации) может состоять из нескольких условий, связанных логическими операциями NOT, OR, AND.

Операнд <Выражение> [NOT] CONTAINING <Выражение1> позволяет выбрать записи на основании частичного совпадения значений; обычно применяется для строк.

Пример

Select * from Store where S_Name CONTAINING "то"

Для таблицы Store ("склада") выводятся все столбцы с данными о товарах, названия которых содержат символы "то", начиная с любой позиции.

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

Операнд <Выражение> [NOT] STARTING [WITH] <Выражение1> отличается от предыдущего тем, что требует вхождения уже с начала выражения.

Отбор записей с частичным совпадением значений можно производить и при помощи операнда LIKE.

Операнды Exists и SINGULAR проверяют количество записей, возвращаемых в них подзапросом:

Операнд Exists(<ОтборМ>) возвращает True, если возвращено непустое множество значений.

Операнд SINGULAR(<ОтборМ>) возвращает True, если при отборе возвращено только одно значение

Пример

SELECT S_Name, S_Number FROM StoreWHERE EXISTS(SELECT C_Move FROM CardsWHEREC_Date BETWEEN "1.10.2002" AND "31.10.2002")

Со склада отбираются данные о товарах, для которых было движение (приход или расход) за октябрь 2002г.

Операнд SINGULAR(<ОтборМ>) возвращает True, если при отборе возвращено только одно значение.

Пример

SELECT Name FROM PersonnelWHERE SINGULAR(SELECT Position FROM PositionWHERE Position.Code = Personnel.Code)

Из таблицы Personnel выбираются фамилии сотрудников, которые занимают только одну должность.

Операнд PLAN задает план выполнения запроса:

<План выполнения запроса> =[{JOIN|[SORT] MARGE}](<Таблица>) | <План выполнения запроса>,...[(<Таблица>) | <План выполнения запроса>] <Таблица> = {<Имя таблицы> | <Псевдоним таблицы>}{NATURAL | INDEX (<Список индексов>) | ORDER <Список индексов>}

Задание плана выполнения запроса позволяет управлять методами доступа к данным и может увеличить скорость выполнения запроса. Для каждой таблицы, которая задается именем или псевдонимом, можно определить:

· NATURAL – использование метода последовательного доступа к данным; если при поиске отсутствуют индексы, то используется последовательный метод;

· INDEX – использование для доступа к данным индексно-последовательного метода на основе указанных методов;

· ORDER – сортировка таблицы по указанным индексам.

Описатель JOIN указывает, что план относится к связанным таблицам. Если у этих таблиц существуют соответствующие индексы, то с их помощью будет организован индексно-последовательный метод доступа. Если таких индексов нет, то для связных таблиц следует указать описатель MARGE или SORT MARGE.

 

Тема 3.6.Управление транзакциями и кэширование памяти

 



Дата добавления: 2021-09-25; просмотров: 288;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

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

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.017 сек.