Запросы на выборку

Запросы на выборку

Простые запросы

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

Формирование запроса с помощью мастера

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

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

перенесите все ее поля в будущий запрос. Затем щелкните по кнопке Далее. Пропустите появившееся промежуточное окно, где вам предлагается задать имя запроса (по умолчанию это будет Страны). Теперь на экране вы видите таблицу (см. рис. 11.2), на которую ориентирован сформированный запрос. Одновременно во вкладке Запросы окна базы данных появится имя вновь созданного запроса – Страны.

Рис. 11.1

Рис. 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.

Из приведенного списка вы, конечно, выберете Sum, так как вас интересует (если вы еще об этом не забыли) суммарное количество погибших. Активизировав соответствующую опцию (см. рис. 11.9), закройте окно конструктора запроса и сохраните изменения (см. рис. 11.6). Теперь следует назвать новый запрос или согласиться с именем, предлагаемым по умолчанию (это, конечно же, Запрос с порядковым номером). Под полученным именем новый запрос будет «прописан» в окне базы данных. Если вас такой вариант не устраивает, можете воспользоваться кнопкой

Если вы теперь откроете этот запрос, то получите ответ, представленный на рис. 11.10. Здесь указано имя функции (Sum), имя активного поля (В том числе погибло) и количество погибших за весь период (5531 человек).

Рис. 11.10

Уже показанным раньше способом перейдем к инструкции SQL (см. рис. 11.11).

Рис. 11.11

По сравнению с инструкцией SQL, изображенной на рис. 11.8, здесь появился элемент – AS [Sum В том числе погибло]. Смысл его состоит в следующем. В Microsoft Access имена полей (здесь – поле В том числе погибло), указанные в режиме SQL окна запроса, используются в режиме таблицы в качестве заголовков столбцов. Чтобы вывести в режиме таблицы другие имена столбцов (в нашем примере – Sum – В том числе погибло) , следует включить в инструкцию SQL зарезервированное слово AS. Это бывает необходимо, если вы используете статистические функции в запросах, которые возвращают слишком сложные или повторяющиеся имена полей. Таким образом, рядом с исходным полем В том числе погибло появляется новое поле суммы – Sum – В том числе погибло, поэтому и требуется добавить ключевое слово AS. Что касается квадратных скобок, в которые заключены имена полей в инструкции SQL, то здесь вы имеете дело со спецификой синтаксиса Access. Если имя поля не содержит пробелов, Access автоматически помещает название в квадратные скобки, а если содержит, то может и не поставить их. Поэтому советуем на всякий случай всегда заключать имена полей в квадратные скобки.

Данный текст является ознакомительным фрагментом.