Табличные языки запросов. Язык QBE и особенности его реализации в современных субд. Табличные языки как «построители» sql-запросов. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Табличные языки запросов. Язык QBE и особенности его реализации в современных субд. Табличные языки как «построители» sql-запросов.



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

Табличные языки запросов - языки описания данных, представленных в табличном виде. Здесь указывается, что надо получить в ответе, а не как этого достичь.

Один из наиболее распространенных - QBE (Query-By-Example). Предназначен для работы в интерактивном режиме и ориентирован на конечного пользователя. Реализован во многих СУБД, например, в dBaseIVили более старших версиях этой системы, Pfradox, Access и т.д.

Суть подхода

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

При задании сложных запросов компоненты связаны операторами And и Or, а сами компоненты не указываются в явном виде. Если нужно связать атрибуты оператором И, то они записываются в одной строке, если ИЛИ, то в разных.

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

Переменные для примера ("наполнители").

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

Совместная обработка нескольких таблиц.

В запросах часто требуются данные из нескольких таблиц. В таких случаях нужно вызвать «скелеты» всех таблиц, участвующих в запросе на экран. Дальнейшие действия по связыванию таблиц зависят от конкретной СУБД. В некоторых системах для связи используют «наполнители» (должны быть указаны одинаковые значения в тех полях, по которым идет связь), в других визуальные методы (линии связи между таблицами).

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

Не стоит открывать таблиц больше, чем это реально необходимо для запроса.

Описание ответа.

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

Стандартный набор агрегирующих функций: Sum (сумма), Min, Max, Count (подсчет), Avg (среднее значение).

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

QBE дает возможность упорядочивать данные, выводимые в ответе. Конкретные принципы задания упорядоченности зависят от СУБД.

Дополнительные возможности.

Позволяет кроме поисковых выполнять и другие операции (например, корректировку данных). Некоторые СУБД позволяют формировать запросы специальных видов: параметрические, перекрестные. Запросы, сформулированные на QBE, могут быть запомнены для дальнейшего многократного использования.

Языки QBE, реализованные в разных системах, отличаются в деталях.

Язык QBE часто используется в качестве построителя запросов на SQL.

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

Существуют различные классификации запросов.

Запросы бывают: простые (запросы с простыми условиями, включающими только один аргумент поиска (например запрос на выборку каких-либо полей из одной таблицы)) и сложные (запросы, в условиях отбора в которых используется несколько полей и они соединены оператором «AND» или «OR». В одном сложном запросе могут использоваться и более двух аргументов поиска, причем одна часть из них может быть связана оператором «И», а другая – оператором «ИЛИ»), управляющие (не приводящие к изменению данных в БД, например запросы на выборку, перекрестные запросы и т.п.) и корректирующие (приводящие к изменению данных в БД), вычислительные и параметрические.

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

Существует понятие внутреннего, левого и правого соединения.

«только тех записей, в которых связанные поля обеих таблиц совпадают»

«только всех записей из Таблицы1 и только тех записей из Таблицы2, в которых связанные поля обеих таблиц совпадают»

«только всех записей из Таблицы2 и только тех записей из Таблицы1, в которых связанные поля обеих таблиц совпадают»

Запросы с использованием агрегирующих операторов. Для выполнения функции агрегации данных используются такие статистические функции как Sum, Avg, Var, Count и т.д. При этом необходимо использовать группировку тех полей, над которыми не выполняется агрегирование.

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

Например, если использовать оператор «+» для числовых полей, то он будет означать суммирование, а если для текстовых – это конкатенацию (при этом, если одно из текстовых полей пустое, то и результат выполнения операции конкатенации тоже будет пустым)

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

Параметрические запросы. Запрос с параметром характерен тем, что можно каждый раз при его выполнении задавать условия отбора не изменяя при этом сам запрос, а лишь вводя значение нужного параметра. Этот тип запросов часто используется в качестве основы для форм и отчетов. При этом можно задавать не только одно конкретное значение для параметра, но и диапазон (при этом используются операторы between [введите начальное значение] and [введите конечное значение]).

Корректирующие запросы.

К корректирующим запросам относятся запросы на:

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

2. удаление (Delete) - Его используют для удаления группы записей, отбираемых с помощью указанных пользователем условий отбора.

Если в запросе на удаление не указать условие отбора, то будут удалены все записи. В некоторых случаях запрос-удаление приводит к удалению записей в таблицах, не включенных в запрос. Это случается, если в запрос включена таблица, находящаяся на стороне «один» отношения «один ко многим», а целостность данных обеспечивается параметром «Каскадное удаление». При удалении записей из этой таблицы будут также удалены связанные записи из таблицы, находящейся на стороне «многие».

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

Таблица, в которую осуществляется добавление, может быть как в той же БД, так и в другой, причем это не обязательно должна быть БД Access (это может быть Microsoft FoxPro, Paradox или dBase, а также БД SQL).

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

4. запрос на создание таблиц (в документации Access)

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

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



Поделиться:


Последнее изменение этой страницы: 2016-08-14; просмотров: 821; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.222.111.24 (0.011 с.)