Запрос – задание на поиск данных в базе данных, удовлетворяющих некоторым условиям. Запрос формулируется посредством языка общения пользователя с СУБД – языка запросов, запрос по шаблону или иным способом.
В процессе выполнения запроса могут производиться дополнительные действия (если это позволяет язык запроса): сортировка, вычисления и пр. Поиск пространственных объектов по условиям, содержащим координаты, осуществляется по пространственному запросу на поиск объектов в окне прямоугольной, круглой или произвольной формы.
Наиболее распространенными языками запросов для реляционных СУБД в настоящее время являются язык SQL (Structure Query Language) и QBE (Query by Example).
SQL – язык структурированных запросов; язык доступа к базам данных, одно из наиболее распространенных средств разработки реляционных БД и обслуживания систем типа «клиент-сервер». В США принят в качестве национального стандарта.
Запросы являются важным инструментом выборки объектов и соответствующих им записей, обновления таблиц и обработки данных в таблицах атрибутивной информации. Результат выполнения запроса – чаще всего новая (обычно временная) таблица, которая существует до закрытия запроса. Структура этой таблицы определяется выбранными из одной или нескольких таблиц полями.
|
|
Условия отбора, сформулированные в запросе, позволяют отбирать (фильтровать) записи в результирующую таблицу.
Таблица, построенная в результате запроса, может быть использована как источник информации при построении другого запроса.
С помощью запроса можно выполнить следующие виды обработки данных:
- выбрать объекты (записи), удовлетворяющие условиям отбора;
- включить в результирующую таблицу запроса новые поля;
- выполнить вычисления в каждой из отобранных записей;
- произвести обновление полей в отобранных записях;
- удалить выбранное подмножество записей и др.
Значительная часть ГИС использует для работы с атрибутивной информацией промышленные СУБД. В современных СУБД обычно поддерживается единый интегрированный язык, содержащий все необходимые средства для работы с БД, начиная от ее создания, и обеспечивающий базовый пользовательский интерфейс с базами данных.
Значительная часть работы пользователя с ГИС связана с поиском или выбором необходимой информации. Для этой цели используются запросы.
Все варианты запросов можно разделить на несколько групп:
- запрос на выборку;
- запрос на создание новой таблицы;
- запрос на обновление, добавление, удаление.
В некоторых ГИС для построения запросов используется вариант составления запросов по образцу.
|
|
Конкретные реализации языка QBE несколько отличаются друг от друга, но все они построены по единому принципу. Суть подхода, воплощенного в QBE, заключается в следующем. На мониторе отображается форма запроса, включающая структуру одной или нескольких таблиц, данные которых будут участвовать в запросе. Структура таблицы отображается в виде «шапки» таблицы, в столбцах которой записаны имена полей таблицы и двух или более строк, в которых будут записываться условия запроса. Например, если пользователю необходимо выбрать все записи с заданным значением определенного атрибута, то в соответствующем столбце формы указывается это значение. В большинстве случаев для построения запросов используется растер построения запросов, который по информации, набранной в предлагаемой форме, строит простейшие SQL-запросы. Важной частью запроса является условие отбора записей, т. е. выражение, составленное из операторов сравнения, логических операторов и операндов. В качестве операндов в простейшем случае используются литералы, константы и идентификаторы полей.
Литералы – конкретные значения, воспринимаемые системой так, как они записаны. В качестве литералов обычно используются текстовые строки, даты и числа. Текстовые строки обычно заключаются в некоторые ограничители, например кавычки.
Константы – неизменяемые значения, которые определены в системе, например, True, False, Null и др.
Идентификатор – ссылка на значение поля.
Перечень операторов сравнения и логических операторов обычно включает: =, <, >, <>, <=, >=, And, Or, Not, Like, In, Between.
В некоторых случаях в качестве операндов могут выступать сложные выражения, построенные с использованием арифметических (+,-,*,/), тригонометрических, статистических, финансовых, морфометрических и иных функций.
Особенностью запросов в некоторых ГИС является возможное задание наряду с условиями на атрибутивные характеристики также и пространственных условий. Эти условия записываются с помощью пространственных операторов. Перечень пространственных операторов в разных ГИС (и даже в одной ГИС при использовании разных СУБД) различен. Обычно он включает следующий набор операторов:
- Касаются – возвращает объекты, которые касаются определенных объектов произвольным способом – встык, перекрываются, содержат и/или содержатся в определенных объектах;
- На расстоянии – возвращает объекты, какая-либо часть которых будет находиться в пределах указанного расстояния относительно определенных объектов. Например, если начальная или конечная точка линейного объекта попадает в пределы заданного расстояния относительно определенных объектов, линейный объект будет выбран;
- Содержат – возвращает объекты, которые содержат определенные объекты. Возвращаемые объекты могут касаться, но не перекрывать границы определенных объектов. Точки не могут содержать другие элементы;
- Содержатся в – возвращает объекты, которые полностью находятся в пределах определенных объектов. Возвращаемые объекты могут касаться, но не перекрывать границы определенных объектов;
- Полностью содержат – возвращает объекты, которые содержат определенные объекты. Возвращаемые объекты не могут касаться или перекрывать границы определенных объектов. Точки не могут содержать другие элементы;
- Полностью содержатся в – возвращает объекты, которые полностью находятся в пределах определенных объектов. Возвращаемые объекты не могут касаться или перекрывать границы определенных объектов;
- Перекрывают – возвращает объекты, которые перекрывают определенные объекты;
- Граничат с – возвращает объекты, которые граничат с определенными объектами, касаясь, но не перекрывая их;
- Пространственно равны – возвращает объекты того же типа имеющие ту же форму и занимающие то же положение, что и определенные.