1. 1. Запросы
Существует несколько типов запросов: на выборку, на добавление, на удаление, на
обновление, запрос на создание таблиц, перекрестный запрос.
Запросы могут создаваться двумя способами: «вручную» и с помощью мастера. Имеется
четыре мастера запросов:
Простой запрос Служит для создания простых запросов на
основе выбранных полей.
Перекрестный за-
прос
Позволяет в компактной форме выводить
данные, объединяя однотипную
информацию, а также вычисляет сумму,
среднее значение, число элементов и
значения других статистических функций
данных определенных категорий.
Повторяющиеся
записи
Запрос такого типа позволяет выбирать из
таблицы или простого запроса
повторяющиеся записи.
Записи без
подчиненных
Такой запрос выбирает из таблицы записи,
не связанные с записями из другой таблицы.
С помощью Конструктора запросы создаются «вручную».
1.1. Создание запросов
При создании макета запроса в общем случае необходимо выполнить следующие базовые
операции:
1) указать системе, какие поля и из каких таблиц мы хотим включить в запрос;
2) указать тип запроса (по умолчанию установлен запрос на выборку);
3) при необходимости описать вычисляемые поля, то есть поля, значения которых являются
функциями значений существующих полей;
4) описать групповые операции над записями исходных таблиц;
5) описать условия отбора, то есть сформулировать логическое выражение, которое позволит
включить в выборку только записи, удовлетворяющие определенному условию.
При разработке конкретного запроса допускается любое сочетание перечисленных
операций.
Задание 10
Создать запрос Адреса для вывода фамилий, имен и адресов студентов.
1) перейдем на вкладку Запросы и щелкнем на кнопкеСоздать, чтобы перейти к созданию
запроса;
2) на экране появится диалоговое окно Новый запрос, предназначенное для выбора способа
построения запроса;
3) выберем значение Простои запрос и нажмем кнопку ОК;
4) в первом диалоговом окне в списке Таблицы/Запросы выберем таблицу, поля которой
будут анализироваться при выполнении запроса (Сведения о студентах);
5) в списке Доступные поля отметим поле Фамилия и перенесем его в список Выбранные
поля:
6) те же действия выполним для полей Имя и Адрес. Нажмем кнопкуДалее;
7) в последнем окне присвоим запросу имя Адреса. После этого нажмем кнопку Готово.
Самостоятельная работа № 4
1. Создайте запрос Телефоны, позволяющий выводить фамилии, имена, телефоны студентов.
2. Создайте запрос Журнал, позволяющий выводить фамилию, имя, предмет и оценку.
2. 1.2. Конструктор запросов
Вернемся к запросу Журнал. Выделим его и нажмем кнопку Конструктор,
расположенную на вкладке Запросы.
Окно, которое появится вслед за этим, называется Окно конструктора запроса. Это
основное средство работы с запросами. Оно позволяет не только сформировать новый запрос,
но и понять, по какому принципу построен любой из уже существующих.
Рис. 17. Режим конструктора запроса
В верхней половине показаны связи между таблицами. Как видно, программа
использовала только часть схемы данных базы данных - ту, которая имеет отношение к запросу.
Пользователь может редактировать эту схему, добавляя в нее новые объекты: таблицы
или запросы.
Нижняя часть окна - бланк запроса - содержит описание запроса в табличной форме.
Каждая колонка в нем отвечает одному полю. Строки Поле и Имя таблицы содержат списки,
которые позволяют определить нужное поле. Их элементы соответствуют размещенной вверху
схеме, поэтому пользователь легко может узнать, какие поля ему доступны.
Таблица расширяется вправо автоматически, когда пользователь добавляет в запрос новые
поля.
Заполнив строку Условие отбора, мы сможем произвести выборку из базы данных.
Строка Групповая операция содержит список функций и во многом определяет тип
запроса.
Под групповой операцией понимается обработка и обобщение значений данного поля при
помощи определенной функции. В результате в таблице запроса меняется расположение или
количество записей.
Строка Групповая операция появляется после нажатия кнопки с греческой буквой сигма (
), расположенной на панели инструментов, или выбора команды Групповые операции меню
Вид.
Отметим, что программа автоматически создает новые имена полей, комбинируя название
функции для группировки и имена исходных полей запроса. Поэтому, если вам не понравятся
заголовки полей, предложенные программой, вы можете их изменить, выполнив следующие
действия:
1) в режиме конструктора щелкните правой кнопкой мыши на бланке запроса в требуемой
колонке;
2) из контекстного меню выберите команду Свойства;
3) на открывшейся вкладке Общие в строке Подпись введите желаемый заголовок;
4) Назначение строки Сортировка очевидно - можно отсортировать полученные в результате
запроса данные.
Самостоятельная работа № 5
1) Создайте запрос Дата рождения, выводящий фамилии, имена студентов, родившихся в
текущем месяце.
2) Исправьте запрос Дата рождения так, чтобы сведения выводились только для юношей.
3) Создайте запрос Оценки студента, позволяющий выводить оценки по предмету какого-
нибудь студента.
3. 4) Создайте запрос Оценки по предмету, позволяющий выводить оценки студентовпо
какому-нибудь определенному предмету.
1.3. Вычисление в запросах
Запрос можно использовать для выполнения расчетов. Для этих целей предусмотрены
статистические функции. Статистическую функцию задают в строке Групповая операция:
Функция Выполняемая операция
Sum Суммирование значений определенного поля
Avg Вычисление среднего значения
Min Вычисление минимального значения
Max Вычисление максимального значения
Count
Вычисление количества записей в определенном
поле
First Определяется первое значение в указанном поле
Last
Определяется последнее значение в указанном
поле
StDev
Вычисляется стандартное отклонение значений
данного поля
Var Вычисляется вариация значений данного поля
Задание 11.
Создать запрос Рейтинг студентовдля подсчета среднего балла каждого студента в
группе.
Для улучшения качества запроса вместо кодов студентов, применяемых в таблице
«Годовая успеваемость группы» (в ней собраны сведения по успеваемости), укажем
соответствующие фамилии и имена из таблицы Сведения о студентах.
Таким образом, для решения данной задачи мы будем использовать две таблицы.
Помните, что при составлении запроса на основе нескольких таблиц между ними
необходимо установить связь, задав отношения между полями. В противном случае результат
обработки запроса может оказаться некорректным.
В нашем случае отношение между таблицами уже задано, между полями таблиц
проведена линия.
1) в окне базы данных перейдем на вкладку Запросы и щелкнем на кнопкеСоздать, чтобы
перейти к созданию запроса;
2) на экране появится диалоговое окно Новый запрос, предназначенное для выбора способа
построения запроса;
3) выберем значение Конструктор и нажмем кнопку ОК;
4) в результате на экране появится два окна: окно конструктора запросов Запрос:Запрос на
выборку и окно выбора таблиц Добавление таблицы. Окно Добавление таблицы состоит
из трех вкладок, содержащих перечни объектов, предлагаемых программой для
проектирования запроса: Таблицы, Запросы, Таблицы и запросы. В бланке запроса укажем
параметры запроса и данные, которые нужно отобрать, а также способ их отображения на
экране;
5) перейдем на вкладку Таблицы, маркируем таблицу Сведения о студентахи щелкнем на
кнопке Добавить. Затем маркируем таблицу Успеваемость группы и снова выполним
щелчок на кнопке Добавить. Закроем диалоговое окно (кнопка Закрыть). В окне
проектирования запроса появятся имена выбранных таблиц;
6) установим тип запроса Выборка, нажав кнопку Тип запроса на панели инструментов;
7) выполним двойной щелчок на поле Фамилия таблицы Сведения о студентах. В результате
имя этого поля будет помещено в строку Поле бланка запроса. Добавить нужные поля в
4. бланк запроса можно также перетаскиванием их имен из списка, находящегося в верхней
части окна конструктора, в строку бланка Поле,
8) аналогично во вторую колонку строки Поле вставим имя поля Имя из таблицы Сведения о
студентах;
9) для упорядочения отобранных записей по алфавиту воспользуемся возможностями
сортировки самого запроса. Для этого в строке Сортировка столбца Фамилия откроем
список значений и зададим сортировку данных по возрастанию;
10) аналогичные операции выполним для поля Имя таблицы Сведения о студентах;
11) вставим в бланк запроса поле Оценка из таблицы Годовая Успеваемость группы;
12) в бланке запроса добавим строку Групповые операции;
13) в полях Фамилия и Имя строки Групповые операции установим значение Группировка:
14) в поле Оценка установим значение Avg. Нам необходимо, чтобы после запятой стояло
только одно число (например, 3.4 или 4.5). Для этого пало указать формат вывода
результатов в запросе. Выполним следующие операции: в строке Групповая операция поля
Оценка щелкнем правой клавишей мыши и из раскрывшегося меню выберем команду
Свойства. В строке Формат поля окна Свойства поля введем значение Фиксированный, а в
поле Число десятичных знаков -число /. Можно также указать подпись поля - Средний
балл:
15) сохраним запрос с именем Рейтинг студентов.
Самостоятельная работа № 6
1. Исправьте запрос Рейтинг студентовтак, чтобы выводились фамилии и имена только
хорошо успевающих студентов.
2. Создать запрос Наименьшая оценка, позволяющий выводить минимальную оценку каждого
студента группы.
3. Создать запрос, показывающий отличников в группе.
1.4. Построение выражений с помощью построителя выражений
MicrosoftAccess предоставляет пользователю возможность создавать более сложные
выражения с помощью построителя выражений. Построитель предоставляет список часто
используемых выражений, из которого их можно выбрать.
Для запуска построителя выражений необходимо выполнить следующие действия:
1) открыть запрос в режиме конструктора;
2) установить указатель в позицию, в которую требуется ввести выражение, и нажать правую
клавишу мыши;
3) в контекстном меню выбрать команду Построить. Другой вариант -нажать кнопку
Построить на панели инструментов.
Построитель выражений состоит из трех разделов.
Рис 18. Построитель выражений
В верхней части окна построителя расположено поле выражения. Ниже находится раздел,
предназначенный для создания элементов выражения и их последующей вставки в поле
выражения. Допускается непосредственный ввод части выражения в поле выражения.
5. Существуют определенные требования к синтаксису выражений. Например, символьные
данные заключаются в кавычки, даты в знак #.
В средней части окна построителя находятся кнопки с часто используемыми операторами.
При нажатии на одну из этих кнопок построитель вставит соответствующий оператор в
текущую позицию поля выражения.
Кроме традиционных знаков математических действий существует еще несколько
операторов:
Обратная косая черта обозначает деление целых частей делимого и делителя.
Результат округляется до целых.
^ Возведение в степень.
Mod Операция получения остатка от деления целых частей аргументов.
&
Используется для «сложения» данных символьного типа. Можно использовать и
более привычный знак «плюс».
Like
Используется для создания масок при определении строк с неизвестными
символами и требует дополнительных специальных символов и правил
синтаксиса. Например,
? - знак вопроса означает любой одиночный символ
* - звездочка означает любую последовательность символов
# - обозначает любую неизвестную цифру.
AndOrNot
Логические операторы также используются для построения условий отбора. Они
могут применяться к двум или нескольким выражениям и используются со
скобками.
Чтобы вывести полный список операторов, выберите папку Операторы в нижнем левом
поле и нужный тип в среднем поле. В правом поле будут выведены все операторы выбранного
типа.
В нижней части окна построителя находятся три поля.
В левом поле выводятся папки, содержащие таблицы, запросы, формы, объекты базы
данных, встроенные и определенные пользователем функции, константы, операторы и общие
выражения.
В среднем поле задаются определенные элементы или типы элементов для папки,
заданной в левом поле. Например, если выбрать в левом поле Встроенные функции, то в
среднем поле появится список всех типов функций MicrosoftAccess.
В правом поле выводится список значений (если они существуют) для элементов,
заданных левым и средним полями. Например, если выбрать в левом поле Встроенные функции
и тип функции в среднем, то в правом поле будет выведен список всех встроенных функций
выбранного типа.
Задание 12.
С помощью построителя выражений указать фамилии учениц, имеющих средний бал
меньше 3.
Для решения поставленной задачи можно воспользоваться готовым запросом Рейтинг
студентов.
Выполним следующие действия:
1) в окне базы данных перейдем на вкладку Запросы и щелкнем на кнопке Создать, чтобы
перейти к созданию запроса;
2) на экране появится диалоговое окно Новый запрос, предназначенное для выбора способа
построения запроса;
3) выберем значение Конструктор и нажмем кнопку ОК;
4) добавим таблицу Сведения о студентах, необходимую для создания запроса и запрос
Рейтинг студентов;
5) в первую колонку строки Поле бланка запроса поместим поле Фамилия таблицы Сведения
о студентах;
6) в строке Сортировка установим значение по возрастанию;
6. 7) во вторую колонку поместим поле Avg_оценка, в котором хранятся средние значения;
8) в строке Условие отбора запустим Построитель выражений;
9) в левой части построителя выберем объект Запрос, а из раскрывшегося списка - запрос
Рейтинг студентов;
10) в средней части построителя выражений выберем поле, необходимое дляпостроение
выражения - Avg_оценка и вставим его в поле выражений;
11) зададим значение <3. Таким образом, мы задали отбор тех студентов группы, у которых
средний балл меньше 3;
12) продолжим строить выражение и зададим условие, отбирающее только студенток группы.
Для этого внесем в поле выражений логический оператор And;
13) аналогично, выберем таблицу Сведения о студентах и поле Пол;
14) укажем условие отбора - ~ "ж";
15) нажмем кнопку ОК после чего окно построителя закроется и мы вернемся в бланк
запроса;
16) снимем флажок в строке Вывод на экран столбца Avg_оценка;
17) сохраним запрос.
Самостоятельная работа № 7
1. Создайте перекрестный запрос Распределение оценок, распределяющий оценки учеников по
категориям (баллам) и подсчитывающий количество оценок каждой категории.
2. Используя конструктор, измените запрос Распределение оценок так, чтобы вместо кодов
студентовуказывались их фамилии и имена.
3. Выдать сведения о родителях неуспевающих студентов. Будем считать неуспевающим
студента, у которого средний балл меньше 2,5.
4. С помощью запроса для выборки повторяющихся записей найти фамилии, имена студентов,
родившихся одновременно (то есть в один день, месяц и год).
1.5. Запрос на обновление
Используя запрос на обновление, пользователь может изменить группу записей,
отобранную на основе определенных критериев.
Для создания запроса на обновление выполните следующее:
1) предварительно составьте запрос на выборку;
2) затем выполните составленный запрос и оцените результат, переключившись в режим
таблицы с помощью команды Режим таблицы из меню Вид;
3) после этого вернитесь в режим конструктора и активизируйте команду Обновление из
меню Запрос;
4) Access 97 добавит в бланк запроса строку Обновление, которая предназначена для указания
новых значений полей таблицы. В качестве таковых могут выступать и вычисляемые
выражения;
5) в специальном диалоговом окне Access укажет, сколько записей будет изменено в таблице,
и потребует подтвердить выполнение этой операции.
Задание 13.
Используя запрос Оценки студента и возможности запроса на обновление, измените все
оценки какого-либо студента на 5.
1.6. Запрос на создание таблиц
На основе записей, отобранных запросом можно построить новую таблицу с помощью
запроса на создание таблицы. Такие запросы обычно применяют для архивирования старых
записей или для сохранения резервных копий таблиц.
Выполните следующее:
7. 1) предварительно подготовьте запрос на выборку;
2) выполните составленный запрос для проверки его правильности;
3) вернитесь в режим конструктора и в меню Запрос выберите команда Создание таблицы, в
которое необходимо ввести имя новой таблицы;
4) выполните запрос, нажав кнопку с восклицательным знаком на панели инструментов;
5) в специальном окне Access укажет, сколько записей добавляется с новую таблицу, и
потребует подтвердить выполнение этой операции.
Задание 14
С помощью запроса Дата рождения и запроса на создание таблицы создайте таблицу
Выборка дней рождения студентов.
1.7. Запрос на добавление
С помощью запроса на добавление записи одной таблицы (все отобранные запросом)
можно поместить в конец другой таблицы. Для создания запроса на добавление выполните
следующее:
1) для отбора добавляемых записей сначала составьте запрос на выборку;
2) выполните составленный запрос и оцените результат, переключились в режим таблицы с
помощью команды Режим таблицы из меню Вид;
3) после этого вернитесь в режим конструктора и активизируйте команду Добавление из
меню Запрос;
4) в открывшемся при этом диалоговом окне Добавление задайте в поле Имя таблицы имя
таблицы, к которой вы будете присоединять данные из выбранного набора записей;
5) после нажатия кнопки OK Access добавляет в бланк запроса строку Добавление. В эту
строку автоматически или в ручную вставляются имена тех полей целевой таблицы,
которые совпадают с именами полей запроса;
6) выполните запрос, нажав кнопку Запуск на панели инструментов;
7) в специальном диалоговом окне Access укажет, сколько записей будет добавлено к целевой
таблице, и потребует подтвердить выполнение этой операции.
Задание 15
Измените запрос Дата рождения так, чтобы выбирались дни рождения в марте месяце.
С помощью запроса на добавления добавьте данные, полученные измененным запросом Дата
рождения в таблицу Выборка дней рождения студентов.
1.8. Запрос на удаление
Запросы этого типа служат для удаления из таблицы групп записей, соответствующих
некоторому критерию отбора. Поскольку записи, удаление посредством запроса, нельзя
восстановить, следует тщательно анализировать критерии отбора.
Для создания запроса на удаление выполните следующее:
1) для отбора удаляемых записей сначала составьте запрос на выборку.
2) затем выполните составленный запрос и оцените результат, переключившись в режим
таблицы с помощью команды Режим тчГпчиыin меню Вид;
3) после этого вернитесь в режим конструктора и активизируйте команду Удаление из меню
Запрос;
4) Access добавит в бланк запроса строку Удаление и введет в ее ячсЛки значение Условие.
Это означает, что пользователь может установить дополнительные критерии отбора;
5) выполните запрос, нажав кнопку Запуск на панели инструментов;
6) в специальном диалоговом окне Access укажет, сколько записей будет удалено из таблицы,
и потребует подтвердить выполнение этой операции.
Задание 16.
8. Удалите из таблицы Выборка дней рождения учеников данные об учениках, родившихся с
I по 12 число.