
Рис. 11.2
Формирование запроса с помощью конструктора
Теперь сформируем тот же самый запрос с использованием конструктора.
Как и при запуске мастера, откройте конструктор, выбрав вкладку Запросы окна базы данных. Теперь активизируйте опцию Создание запроса в режиме конструктора. После этого вы увидите окно Добавление таблицы. В нем вам нужно выбрать таблицы и/или запросы, на основе которых следует сформировать запрос (см. рис. 11.3).

Рис. 11.3
Как мы уже решили, это будет таблица Страны. На экране появится окно конструктора запроса – основного инструмента для построения запроса (см. рис. 11.4). В окне вы видите включенный в него макет таблицы Страны, которую вы только что выбрали. Кроме того, в окне расположены поля репликации (в данном случае они нас не интересуют) и поля таблицы: Код, Страна и Примечание.

Рис. 11.4
Щелкните дважды по каждому из них, и эти поля будут помещены в бланк запроса, расположенный в нижней части окна (см. рис. 11.5). Как видите, запрос действительно очень прост, и на этом его формирование можно считать завершенным.

Рис. 11.5
Если вы теперь закроете окно конструктора с помощью обычной кнопки с изображением крестика, то Access 2002 попросит вас подтвердить выполненные операции или внесенные изменения (см. рис. 11.6). Если вы соглашаетесь, система предложит назвать запрос. По умолчанию будет предложено имя Запрос с каким-либо порядковым номером – в нашем случае Запрос20. Затем откроется окно базы данных (см. рис. 11.7).

Рис. 11.6

Рис. 11.7
Перед вами та же БД, что была показана на рис. 7.17, только там открыта вкладка Таблицы, а на рис. 11.7 – вкладка Запросы. Вы можете открыть запрос из окна базы данных или щелкнуть по кнопке. В обоих случаях произойдет запуск запроса и на экране появится таблица (см. рис. 11.2).
Представление запроса на языке SQL
Теперь посмотрим, как будет выглядеть наш запрос на программном языке. Переведенный на язык SQL, он называется "инструкция SQL" и представляет точный аналог запроса, сформированного в окне конструктора. Предполагается, что если бы пользователь захотел написать данный запрос на SQL, то он (запрос) выглядел именно так, как показано в этой инструкции. Чтобы увидеть такую инструкцию SQL, дважды щелкните правой кнопкой мыши в верхней части окна конструктора, где уже сформирован запрос (см. рис. 11.5). В появившемся контекстном меню выберите опцию Режим SQL. В результате вы перейдете в окно просмотра инструкций SQL. Это же окно можно открыть и другими способами:
• в меню Вид панели меню Microsoft Access активизировать опцию Режим SQL;
• щелкнуть по стрелке прокрутки рядом с кнопкой
![]()
на панели инструментов, а затем снова выбрать режим SQL.
Текст инструкции SQL приведен на рис. 11.8. Рассмотрим ее подробнее.

Рис. 11.8
Любой запрос в форме SQL состоит из нескольких ключевых слов и начинается с команды SELECT. Она определяет возвращаемую информацию как набор записей и указывает, какие поля должны быть выбраны в ответ на запрос. Если после SELECT нет других ключевых слов, то будут возвращены все записи. Следующие элементы строки, которая начинается ключевым словом SELECT, – это Код, Страна и Примечания. Они задают поля, включаемые в результат запроса.
Согласно синтаксическим правилам языка SQL перед именем каждого поля указывается имя таблицы, которой принадлежит это поле. Названия таблицы и поля разделены точкой, а каждая пара значений (например, Страны. Код) отделяется от следующей пары запятой.
Ключевое слово FROM определяет таблицу, откуда производится выборка. В данном простейшем запросе используется одна таблица – Страны, не связанная с другими. Поэтому после FROM никаких ключевых полей нет.
Ключевой параметр WITH OWNER ACCESS OPTION не является обязательным. Он позволяет пользователям, которым обычно не разрешается работать с базовыми таблицами, выполнить запрос и просмотреть его результаты – поля, включенные в запрос. Таким образом, пользователь получает право ограниченного доступа к данным таблицы.
Запросы с использованием групповых операций
Эта группа запросов предназначена для первичной обработки полученной информации – ее суммирования, осреднения и т. д. Такие запросы особенно полезны, когда нужно регулярно представлять обобщенные справки для руководства компании.
Еще один пример простого запроса: необходимо получить справку о том, сколько человек погибло в результате различных аварий за два с лишним года – с начала 1997 по апрель 2000 года. Полная информация по этому вопросу аккумулирована в таблице Es_oper. В каждой записи о конкретной аварии сведения о жертвах содержатся в поле В том числе погибло.
Запрос, построенный таким образом, востребует данные только из одной таблицы – Es_oper.
Чтобы сконструировать этот запрос, сначала, как и в предыдущем примере, откройте окно базы данных. Затем задайте команды Создание запроса в режиме конструктора Показать таблицу (рис. 11.3). В появившемся окне выберите таблицу Es_oper. На экране возникнет окно конструктора запроса (см. рис. 11.9). В макете таблицы Es_oper на этом рисунке найдите интересующее вас поле В том числе погибло и щелкните по нему дважды.

Рис. 11.9
Итак, поле В том числе погибло зафиксировано в бланке запроса. Теперь подумаем, как получить сумму значений этого поля по всем записям. Суммирование – стандартная операция, и пользователю не надо специально организовывать сложение (хотя при большом желании вы можете сделать это). Для этого можно использовать опцию Групповые операции. Щелкните по кнопке
![]()
на панели инструментов базы данных, и в бланке запроса появится дополнительная строка Групповая операция (обратите внимание, что на рис. 11.4 ее нет). Если вы теперь щелкнете в этой строке на пересечении с полем В том числе погибло, то появится стрелка прокрутки, которая позволяет открыть список групповых операций:
• Группировка – команда, включаемая в инструкцию SQL. Эта опция позволяет добиться того же результата, что и выполнение следующих действий: создание итогового запроса в окне запроса, а затем выбор для соответствующего поля групповой операции в строке Групповая операция (см. рис. 11.9);
• Sum – функция, выполняющая суммирование значений в поле;
• Avg – операция, позволяющая вычислить среднее арифметическое набора чисел, которые содержатся в указанном поле запроса;
• Min – функция, возвращающая минимальное значение из набора значений, которые содержатся в указанном поле запроса;
• Max – функция, возвращающая максимальное значение из набора значений, которые содержатся в указанном поле запроса;
• Count – операция, с помощью которой вычисляется количество записей, возвращаемых запросом;
• StDev – функция, которая возвращает значение среднеквадратичного отклонения. Последнее вычисляется исходя из набора значений, содержащихся в указанном поле запроса;
• Var – функция, возвращающая значение дисперсии. Дисперсия вычисляется в соответствии с теми значениями, которые содержатся в указанном поле запроса;
• First – операция, возвращающая первое число из набора значений, которые содержатся в указанном поле запроса;
• Last – операция, возвращающая последнее число из набора значений, которые содержатся в указанном поле запроса;
• Выражение – функция, возвращающая результат выражения, которое содержится в указанном поле запроса;
• Условие – функция, которая определяет, какие записи из таблиц, перечисленных в предложении FROM, следует включить в результат выполнения инструкций SELECT, UPDATE или DELETE.