Запросы представляют собой наиболее распространенный вид об-работки данных. Запрос является спецификацией (предписанием) для обработки данных, написанной на специальном языке (языке БД). В реляционных БД для написания запросов используется язык SQL.
Формирование запросов в СУБД может осуществляться с помощью:
- специального редактора (командного режима);
- наглядно-диалоговых средств (конструкторов);
- мастера формирования запросов.
После того как запрос сформировался, он в виде SQL-инструкции будет сохранен в файле БД и в дальнейшем специальной командой СУБД будет запускаться (открываться) на выполнение.
Типы запросов
С точки зрения решения информационных задач и форм результатов выполненных запросов их можно разделить на 3 группы:
- запросы на выборку данных;
- запросы на изменение данных;
- управляющие запросы.
Запрос на выборку данных является одним из наиболее часто используемых видов запросов. Он реализуется с помощью SQL-инструкции Select с предложением From. Результат исполнения запроса на выборку будет представлен набором данных, представляющих временную таблицу данных со структурой, содержащей поля, их типы и параметры, которая определяется параметрами запроса и параметрами полей таблиц, в последних ведется отбор данных. Результаты запросов на выборку записываются в специальной временной таблице, которая на период исполнения (открытия) запроса находится в оперативной памяти компьютера.
Важное значение при решении различного рода технологических информационных задач по ведению БД играют запросы на изменение данных. Они отличаются от непосредственного ввода данных в режиме открытой таблицы или формы тем, что вносят изменения одновременно в группу записей. То есть результат выполнения запроса на изменение будет представлен не набором данных, как при запросе на выборку, а изменением данных в самих таблицах.
Запросы на изменение данных бывают нескольких видов:
-
В ходе выполнения запроса на удаление за одну операцию происходит удаление группы записей из одной или нескольких таблиц. Запрос на удаление реализуется с помощью SQL-инструкции Delete:
Delete(поля) From(таблица) Where(условие).
-
Запрос на обновление за одну операцию вносит общие изменения в группу записей одной или нескольких таблиц. Реализуется с помощью SQL-инструкции Update. Запрос на обновление применяется в случае необходимости осуществления глобального однотипного изменения в определенном наборе данных.
Update(таблица) Set(поле = значение)Where(условие)
-
Запрос на добавление выполняет добавление группы записей из одной или нескольких таблиц в конец другой или группы других таблиц. При чем необходимо, чтобы количество и типы полей при вставке записей совпадали. Выполняется с помощью инструкции:
Interinto таблица Select поля From таблица Where(условие).
-
Используя запросы на создание таблицы за одну операцию можно создавать новые таблицы с заполнением данных на основе их всех или части из одной или нескольких таблиц с помощью инструкции:
Select поля Into таблица From таблица Where(условие).
В состав языка описания данных DDL входят SQL-инструкции, на основе которых строятся запросы, создающие или модифицирующие реляционные таблицы или отдельные их элементы.
Такого рода запросы называют управляющими. К ним относятся:
- Запросы на создание таблиц реализуют с помощью SQL-инструкции Createтавlе с ключевыми словами, которые определяют типы полей (Снаracter, Integer, Datetime и т.д.), предложением Constraint, создающим ограничения на значение полей или связей между таблицами, ключевым словом Unique, которым задается свойство уникальности индекса таблицы, а также ключевого слова Primerykey, которое определяет ключевое поле создаваемой таблицы.
- Запрос на добавление поля или индекса реализуется с помощью SQL-инструкции Altertable и зарезервированных слов Addcolumn (добавить поле) и Addconstrain (добавить индекс). Используя этот же запрос с зарезервированным словом Dropcolumn можно удалять поля из имеющейся таблицы. Запрос на добавление поля можно также использовать для создания внешнего ключа, задающего связь-отношение между таблицами. С данной целью используют зарезервированные слова Foreignkey и References.
- Запрос на удаление таблицы или индекса реализуют с помощью SQL– инструкции Droptable, указывая имя удаляемой таблицы или индекса.
- Запрос на создание индекса реализуется с использованием SQL-инструкции Createindex и зарезервированным словом Unique, означающим запрет повтора значений в индексируемом поле, а также необязательным предложением With с указанием параметров Disallownull и Ignorenull для запрета либо разрешения нулевых (пустых) значений в индексируемом поле.
Зарезервированное слово Primery дает возможность определять создаваемый индекс ключом таблицы (при этом создаваемый индекс по умолчанию будет являться уникальным, т.е. повтор значений запрещен).
Работа с запросами
Запросы - это наборы выборочной информации из общей БД. Помимо запросов, созданных с помощью SQL-инструкций, используются запросы, созданные в окне базы данных по образцу.
В случае продуманности структуры БД исполнители, которые работают с ней, могут навсегда забыть о таблицах, поскольку они – достаточно ценные объекты БД, и с ними должен работать только разработчик базы.
Если у исполнителя возникла потребность в получении данных из базы, он может использовать для ее решения запросы. Все необходимые запросы подготавливаются разработчиком базы заранее. В случае подготовленного запроса пользователю потребуется открыть панель Запросы в окне базы данных, выбрать его и открыть двойным щелчком мыши, при этом откроется результирующая таблица с нужной информацией.
В общем случае результирующая таблица, как правило, не соответствует ни одной из базовых таблиц БД. В ее состав входят поля из разных таблиц, а ее записи содержат отфильтрованные и отсортированные записи таблиц, на базе которых был сформирован запрос. Только в тех случаях, когда исполнитель не найдет нужных данных в результирующей таблице, возникнет необходимость подготовки нового запроса, и эту задача будет решать разработчик базы.
Управление отображением данных в результирующей таблице
Нижняя часть бланка запроса по образцу содержит строку Вывод на экран. По умолчанию предполагается, что все поля запроса будут выводиться на экран, но это не всегда нужно. К примеру, в случае, когда пользователю необязательно видеть по какому полю выполняется сортировка данных в таблице. В подобном случае отображение содержимого нужного поля на экране подавляют сбросом флажка Вывод на экран.
Упорядочение записей в результирующей таблице
В случае необходимости отбора и упорядочивания данных по определенному полю в результате работы запроса по образцу выполняется сортировка. Нижняя часть бланка содержит специальную строку Сортировка. По щелчку на этой строке откроется кнопка раскрывающегося списка, в котором выбирается метод сортировки: по возрастанию или по убыванию. В результирующей таблице данные сортируются по тому полю, для которого был задан порядок сортировки.
Используется также многоуровневая сортировка – одновременно по нескольким полям. В подобном случае данные сначала сортируют по полю, находящемуся в бланке запроса по образцу левее, затем по следующему полю, для которого включена сортировка, и так далее слева направо. То есть при формировании запроса нужно располагать поля результирующей таблицы с учетом будущей сортировки. Если же запрос сформирован, но необходимо изменить порядок следования столбцов, можно поступить следующим образом:
- выделить столбец щелчком мыши на его заголовке (кнопку мыши отпустить);
- снова щелкнуть на заголовке уже выделенного столбца (но кнопку не отпускать)
- перетащить столбец в нужное место.
Использование условия отбора
Дополнительным средством, которое обеспечивает отбор данных по заданному критерию, является Условие отбора. Строка с данной надписью содержится в нижней части бланка запроса по образцу.
Вычисляемые поля в запросах
В запросах можно использовать вычисляемые поля. Для этого применяют Построитель выражений. В его структуре используют следующие обозначения:
- Sum – определяется сумма значений числового поля;
- Count – определяется количество группируемых записей;
- Min и Max – определяется минимальное и максимальное значение поля;
- First – выбирается первое значение.