Условия отбора записей
Лабораторная работа №5
Создание и модификация простых запросов
Цель занятия
1. Получение практических навыков по созданию запросов и применению выражений для задания условий отбора записей в простых запросах.
2. (*) Получение необходимых сведений об основных операторах языка запросов SQL.
Общие сведения
Простые запросы
При работе с БД возникает ряд задач. Например, на основе данных, хранящихся в таблицах, проводить вычисления, или просматривать данные, хранящиеся в нескольких таблицах.
Выбрать необходимые данные из одной или нескольких таблиц, либо произвести вычисления, можно с помощью запросов. Кроме того, запросы предоставляют возможность не только просматривать, но и вводить данные в таблицы.
MS Access имеет в своем составе множество разнообразных Мастеров для создания различных запросов, но самым мощным и гибким средством создания запросов является Конструктор запросов.
Перейдем на вкладку Создание ленты инструментов и выберем команду Конструктор запросов из группы Другие. На экране отобразится окно запроса в режиме Конструктора (рис. 5.1).
Верхняя часть этого окна содержит список полей таблиц и/или других запросов, включаемых в создаваемый запрос. Пока этот список пуст. В нижней части окна находится Бланк для создания запроса по образцу (QBE). Для создания запроса нужно в бланке QBE указать названия полей из таблиц или запросов, включенных в данный запрос. Кроме этого можно указать условия отбора и сортировки данных.
Для добавления таблиц или запросов, на основе которых создается запрос, в список вместе с окном Конструктора запросов открывается диалоговое окно Добавление таблицы (рис. 5.2).
рис. 5.1. Окно запроса в режиме Конструктора |
рис. 5.2. Окно Добавление таблицы |
Добавление таблиц в окно Конструктора запросов выполняется таким же способом, что и добавление таблиц в окно Схема данных. В этом окне надо выделить нужные таблицы или запросы и добавить их в окно Конструктора, нажав кнопку Добавить.
Если после закрытия окна Добавление таблицы потребуется дополнительно добавить в запрос таблицу, это можно сделать, вызвав окно Добавление таблицы нажатием кнопки Отобразить таблицу на ленте инструментов.
После добавления таблиц окно Конструктора запросов будет выглядеть примерно так, как показано на рис. 5.3.
рис. 5.3. Окно Конструктора запросов с исходными таблицами |
Теперь можно приступать к заполнению бланка QBE.
Чтобы указать, какие поля таблиц будут отображены в запросе, нужно указать их названия в строке Полевбланке QBE. В строке Имя таблицы указываются соответствующие названия таблиц или других запросов, из которых выбраны поля для запроса.
На рис. 5.4 представлено окно Конструктора запросов с заполненным бланком QBE.
рис. 5.4. Заполненный бланк QBE |
Большинство полей бланка QBE можно заполнить с помощью мыши. Нужно просто произвести двойной щелчок левой кнопкой мыши по нужному полю в таблице из списка таблиц. Другой способ заключается в том, что можно перетащить в строку Поле бланка QBE из списка полей таблиц нужное поле, содержащее списки полей таблиц, участвующих в запросе. Второй способ позволяет перетащить сразу несколько полей таблицы в бланк QBE. Для этого перед перетаскиванием эти поля нужно выделить щелчком мыши при нажатой клавише Ctrl.
И в том, и в другом случае автоматически будут заполнены ячейки Поле и Имя таблицы, а также в поле Вывод на экран установлен флажок, показывающий, что данное поле будет отображаться в запросе при выводе его на экран. В запросах очень часто используются поля таблиц, для которых задаются условия отбора, сами поля при этом не отображаются на экране.
В бланке QBE по умолчанию имеется 20 полей (столбцов), в которые можно вносить данные. При конструировании запроса можно добавить нужное количество столбцов или, наоборот, удалить лишние. Для просмотра полей, которые не помещаются в размеры окна можно использовать горизонтальную линейку прокрутки, расположенную в нижней части бланка QBE.
Чтобы сохранить запрос, необходимо выполнить команду Сохранить на панели быстрого доступа, либо щелкнуть кнопку Office и выбрать команду Сохранить. В появившемся окне Сохранение ввести имя запроса и нажать кнопку ОК (рис. 5.5).
рис. 5.5. Окно сохранения запроса |
Для выполнения запроса необходимо нажать кнопку Выполнить , находящуюся в группе Результаты контекстной вкладки Работа с запросами – Конструктор ленты инструментов. Результатом выполнения запроса будет отображение на экране таблицы, содержащей указанные поля (рис. 5.6).
В этом запросе можно не только просматривать, но и вводить новые записи, а также редактировать уже имеющиеся. При вводе данных необходимо помнить о том, что в запросе должны быть заполнены все ключевые поля. Если этого не сделать, то при сохранении записи Access выдаст сообщение об ошибке, подобное приведенному ниже (рис. 5.7).
рис. 5.6. Результат выполнения запроса |
рис. 5.7. Окно сообщения об ошибке |
Очень часто для создания запроса используется уже имеющийся в БД запрос. Запрос сначала сохраняют под другим именем, а затем в этом заново сохраненном запросе производят нужные изменения.
Сохранение запроса под другим именем можно производить в любом режиме отображения запроса:
1. Выполнить команду Сохранить как… - Сохранить объект как… из меню кнопки Office.
2. В открывшемся диалоговом окне Сохранение (рис. 5.8) ввести в поле Сохранение объекта … название нового запроса и нажать кнопку ОК.
рис. 5.8. Диалоговое окно Сохранение |
После выполненных действий в БД добавится новый запрос - точная копия предыдущего. О том, что теперь открыт новый запрос, свидетельствует надпись в заголовке окна запроса. Теперь этот запрос можно редактировать.
При вводе в поля Бланка QBE длинных значений, не умещающихся в ширину поля, можно для текущего поля открыть так называемую Область ввода (рис. 5.9). Для этого нужно установить курсор в редактируемое поле и нажать комбинацию клавиш Shift + F2.
рис. 5.9. Область ввода |
В открывшемся окне большая область ввода позволяет в удобном виде просматривать введенные выражения. Если выражение вводилось в окне Область ввода, то для того, чтобы выражение было введено в поле, необходимо нажать кнопку ОК. Чтобы отказаться от ввода или произведенных изменений, необходимо нажать кнопку Отмена.
Условия отбора записей
Очень часто встречаются ситуации, когда необходимо из таблицы выбрать только часть записей в соответствии с какими-либо условиями отбора. Для этого в Бланке запроса QBE имеется строка Условие отбора. В эту строку вводятся выражения в соответствии с определенными правилами MS Access. При этом необходимо учитывать тип поля, на которое накладываются условия. Простым примером запроса с условием является запрос на рис 5.10, где в стоке Условие отбора Бланка QBE в поле Отправлено на склад с логическим типом данных записано выражение <>Да. Это означает, что в результате выполнения запроса будет получен динамический набор данных, включающий только те записи, которые содержат информацию о неотправленных товарах.
рис. 5.10. Запрос с условиями отбора |
В выражениях условий отбора можно использовать стандартные операторы, зарезервированные в MS Access. Наиболее часто их приходится использовать при записи условий отбора для полей с типом данных Дата/время. Пример такого использования приведен на рис. 5.11. рис. 5.11. Запрос с условиями отбора в поле типа Дата/Время |
В результате выполнения запроса получим динамический набор данных, включающий заказы, размещенные за время с 15 по 30 января 2006 года.
Стандартный оператор BETWEEN в выражениях условий отбора используется и для числовых типов полей, например:
рис. 5.12. Пример использования оператора Between в условиях отбора |
Таким образом, определяется диапазон значений. Если необходимо получить, наоборот, значения, не входящие в указанный диапазон, то используется оператор NOT BETWEEN, который имеет синтаксис, аналогичный с оператором BETWEEN.
Если необходимо получить записи, удовлетворяющие заранее заданным значениям, то используется стандартный оператор IN, вид которого показан на рис. 5.13.
рис. 5.13. Пример использования оператора In в условиях отбора |
Если, наоборот, необходимо получить значения, отличающиеся от заданных, то используется оператор NOT IN, имеющий синтаксис, аналогичный с оператором IN.
Для осуществления поиска по подстроке используется оператор LIKE, показанный на рис. 5.14.
Для отбора записей, удовлетворяющих условию, не включающему заданную подстроку, используется оператор NOT LIKE, синтаксис которого аналогичен синтаксису оператора LIKE.