ACCESS-2010-часть1
.pdf
30
2.КОНСТРУИРОВАНИЕ ЗАПРОСОВ
Вэтом разделе Вы освоите конструирование
запросов на выборку с различными критериями отбора данных
запросов на выборку с вычислениями над полями базы данных, над группами записей с использованием статистических функций
перекрестного запроса
запросов на внесение изменений в базу данных
Запрос – это задание на извлечение данных из таблиц БД, на выполнение вычислений над данными БД, на внесение изменений в БД.
Запрос может служить источником данных для форм, отчетов.
СУБД Access позволяет создавать запросы трех типов: запросы на выборку,перекрестныезапросы,запросынавнесениеизмененийвБД.
Запросы можно создавать с помощью Мастера или Конструктора запросов. Мастер используется для создания запросов определенного вида (на выборку полей, перекрестного, на поиск повторяющихся записей и записей, не имеющих подчиненных записей), а с помощью Конструктора можно создать любой запрос.
Результатом запроса всегда является таблица.
3.1.Запросы на выборку
Запрос на выборку является наиболее часто используемым типом запроса. Он дает возможность:
31
включать в результирующую таблицу поля из одной или нескольких таблиц в нужном порядке;
выбирать записи, удовлетворяющие различным условиям отбора;
осуществлять вычисления над полями БД (создавать вычисляемые поля);
группировать записи и находить для групп записей, для всех записей итоговые значения по некоторым полям с помощью статистических функций: Sum – сумма значений поля, Avg – среднее значений поля, Max
– максимальное из значений поля, Min – минимальное из значений поля,
Count – число значений поля и др.
Разновидностью запроса на выборку является запрос с параметрами – запрос, который при выполнении отображает в собственном диалоговом окне приглашение ввести интересующее пользователя значение критерия отбора записей.
При задании условий отбора в запросах, создании вычисляемых полей в таблицах, запросах и при создании других объектов БД (форм, отчетов, макросов) необходимо уметь создавать выражения. Выражение – это комбинация значений и операторов, дающая определенный результат. В качестве значений в выражениях используют литералы, константы, функции и идентификаторы.
Литерал – это фактическое значение в виде числа, текстовой строки, даты, например, 100, "Минск", #1-янв-2010#.
Константа – это не изменяющееся значение, например,Yes, No, True, False, Null.
Функция – это небольшая программа, которая всегда возвращает значение (число или строку символов), являющееся результатом расчетов или выполнения других операций. К функции обращаются по имени, за которым в круглых скобках указывают ее аргументы. Имеются и безаргументные функции, например, Date(). В Access определено множество
категорий функций – статистические, математические, даты/время,
32
текстовые, финансовые и др.
Идентификатор – это ссылка на поле, элемент управления (будет рассмотрен в разделе 3 текущей темы), свойство. Например, идентификатор [ЦЕНА] представляет собой ссылкуна поле.
Оператор – операция над значениями. В выражениях используются четыре типа операторов – арифметические операторы, операторы сравнения, логические операторы, текстовый оператор.
Арифметическиеоператоры: + (сложение), – (вычитание), * (умножение), / (деление), % (процент), ^ (возведение в степень) и др.
Операторы сравнения: = (равно), > (больше), < (меньше), >= (больше
или равноЛогические), <= (м ньшеоператоры:или равно),AND<> (не равно(логическое). умножение), OR (логическое сложение), NOT (логическое отрицание).
Текстовый оператор: & (слияние текстовых значений).
Например, следующее выражение позволяет вывести в запросе сумму значений полей «Стоимость заказа» и «Стоимость доставки»:
= [Стоимость_заказа]+[Стоимость_доставки]
Пользователь имеет возможность создавать выражения с помощью инструментального средства – Построителя выражений или путем набора их на клавиатуре. Построитель выражений доступен во всех случаях, когда требуется ввести выражение.
Задание 2.1. Выбрать из БД БАНК сведения о счетах, у которых остаток больше 1000000 руб. Результирующая таблица запроса должна иметь следующую структуру:
|НС|ОСТ|НФ|НК|
Запрос сохранить с именем КРУПНЫЕ СЧЕТА. Выполнение задания
В окне базы данных БАНК перейдите на вкладку Создание и в группе Запросы нажмите кнопку 
[Конструктор запросов].
33
Появится окно Конструктора запросов с наложенным на него окном
Добавление таблицы, как на рис. 2.1
Рис. 2.1. Окно Конструктора запросов с окном Добавление таблицы В окне Добавление таблицы выберите источник данных для запроса –
выделите таблицу СЧЕТ (из ее полей будут извлекаться данные) и нажмите [Добавить], а затем [Закрыть]. Появится окно Конструктора запросов, как на рис. 2.2.
Рис. 2.2. Окно Конструктора запроса
34
Оно разделено на две части: в верхней части отображается список полей таблицы СЧЕТ, а в нижней – бланк запроса.
Затем выполните следующее:
перетащите поле НС из списка полей таблицы СЧЕТ в первую клетку строки Поле, а затем поочередно перетащите остальные поля, входящие в результирующую таблицу запроса (ОСТ, НФ, НК), в последующие клетки этой строки. В результате поля автоматически помечаются как
выводящиеся на экран при просмотре в дальнейшем результата запроса;
Примечание. В клетках строки Поле можно задавать нужные поля и путем выбора их из раскрывающегося списка после щелчка в этих клетках.
для поля ОСТ в строке "Условие отбора" наберите выражение типа сравнения >1000000;
выполните запрос щелчком по кнопке
[Выполнить];
Результат запроса представляется в окне запроса, как на рис. 2.3.
Рис. 2.3. Результат выполнения запроса
Примечание. Если необходимо внести изменения в задание на извлечение данных после просмотра результата запроса, то следует на вкладке Главная в группе Режимы раскрыть
список
и выбрать Конструктор или в окне запроса из контекстного меню вкладки выбрать команду Конструктор.
сохраните запрос с именем КРУПНЫЕ СЧЕТА, закрыв окно запроса.
Задание 2.2. Выбрать из БД БАНК сведения о двух счетах с наибольшим остатком. Результирующая таблица запроса должна иметь следующую структуру:
|НС|ОСТ|НФ|
Запрос сохранить с именем КРУПНЕЙШИЕ СЧЕТА.
35
Выполнение задания Откройте окно Конструктора запроса, добавив в окне Добавление
таблицы таблицу СЧЕТ, и выполните следующие действия:
задайте поля, входящие в результирующую таблицу запроса, в строке Поле известным вам способом;
задайте сортировку по убыванию значений поля ОСТ, для чего щелкните в строке Сортировка для этого поля и из раскрывающегося списка выберите
по убыванию;
введите значение 2 в поле раскрывающегося списка
[Набор значений] в группе Настройка запроса;
выполните запрос и проанализируйте его результат;
сохраните запрос с именем КРУПНЕЙШИЕ СЧЕТА.
Задание 2.3. Выбрать из БД БАНК сведения о счетах с капитализацией процентов. Результирующая таблица запроса должна иметь следующую структуру:
|НС|ТИП|ДАТА|КАП|НФ|НК|
Запрос сохранить с именем СЧЕТА С КАПИТАЛИЗАЦИЕЙ. Выполнение задания
Откройте окно Конструктора запроса, добавив в окне Добавление таблицы таблицу СЧЕТ, и выполните следующие действия:
задайте поля, входящие в результирующую таблицу запроса, в строке Поле. Для этого из списка полей таблицы СЧЕТ перетащите в строку Поле все поля – дважды щелкните по заголовку списка, ухватите мышью выделенные поля и перетащите их в первую клетку строки Поле. Затем для поля ОСТ в строке "Вывод на экран" снимите флажок;
наберите Да в строке "Условие отбора" для поля КАП;
выполните запрос и проанализируйте его результат;
сохраните запрос с именем СЧЕТА С КАПИТАЛИЗАЦИЕЙ.
36
Задание 2.4. Выбрать из БД БАНК сведения о клиентах, чьи фамилии начинаются с буквы Л. Результирующая таблица запроса должна иметь следующую структуру:
|НК|ФИО_К|АДР_К|
Запрос сохранить с именем ФАМИЛИИ НА Л. Выполнение задания
Откройте окно Конструктора запроса, добавив в окне Добавление таблицы таблицу КЛИЕНТ, и выполните следующие действия:
задайте поля, входящие в результирующую таблицу запроса, в строке Поле;
наберите Л* в строке "Условие отбора" для поля ФИО_К;
выполните запрос и проанализируйте его результат;
сохраните запрос с именем ФАМИЛИИ НА Л.
Задание 2.5. Выбрать из БД БАНК сведения о менеджерах, управляющих филиалами, чей стаж не менее 9 лет и не более 25. Результирующая таблица запроса должна иметь следующую структуру:
|НМ|СТАЖ|НФ|
Запрос сохранить с именем СТАЖ.
Выполнение задания Откройте окно Конструктора запроса, добавив в окне Добавление
таблицы таблицы МЕНЕДЖЕР и ФИЛИАЛ (источники данных для запроса), и выполните следующие действия:
задайте поля, входящие в результирующую таблицу запроса, в строке Поле;
наберите логическое выражение >=9 and <=25 в строке "Условие отбора" для поля СТАЖ;
выполните запрос и проанализируйте его результат;
37
сохраните запрос с именем СТАЖ.
Задание 2.6. Выбрать из БД БАНК сведения о счетах, открытых с 01.01.13 по 30.06.13. Результирующая таблица запроса должна иметь следующую структуру:
|НС|ТИП|ДАТА|НФ|НК|
В ней записи рассортировать по возрастанию даты открытия счета. Запрос сохранить с именем ДАТА ОТКРЫТИЯ.
Выполнение задания Откройте окно Конструктора запроса, добавив в окне Добавление
таблицы таблицу СЧЕТ, и выполните следующие действия:
задайте поля, входящие в результирующую таблицузапроса, в строке Поле;
задайте условие отбора счетов с помощью Построителя выражений. Для этого щелкните в строке "Условие отбора" для поля ДАТА и нажмите кнопку
[Построитель] в группе Настройка запроса на вкладке
Конструктор. В появившемся окне Построитель выражений
сформируйте логическое выражение, как это показано на рис. 2.4, – выберите Операторы, выберите Сравнения, выберите двойным щелчком Between (между) и вместо слов "Выражение" наберите даты, после чего нажмите [ОК];
38
Рис. 2.4. Создание оператора Between в окне Построитель выражений
задайте сортировку по возрастанию для поля ДАТА;
выполните запрос и проанализируйте его результат;
сохраните запрос с именем ДАТА ОТКРЫТИЯ.
Задание 2.7. Выбрать из БД БАНК сведения о местонахождении филиала № 511 и № 513. Результирующая таблица запроса должна иметь следующую структуру:
|НФ|АДР_Ф|
Запрос сохранить с именем МЕСТОНАХОЖДЕНИЕ.
Выполнение задания Откройте окно Конструктора запроса, добавив в окне Добавление
таблицы таблицу ФИЛИАЛ, и выполните следующие действия:
задайте поля, входящие в результирующую таблицу запроса, в строке Поле;
39
для поля НФ в строке "Условие отбора" наберите 511, а в строке "или" –
513;
Примечание. Данное условие можно задать и логическим выражением – 511 or 513.
выполните запрос и проанализируйте его результат;
сохраните запрос с именем МЕСТОНАХОЖДЕНИЕ.
Задание 2.8. Выбрать из БД БАНК сведения о счетах, не являющихся картсчетами.
Результирующаятаблицазапросадолжнаиметьследующуюструктуру:
|НС|ТИП|ФИО_К|НФ|
Запрос сохранить с именем НЕ КАРТ-СЧЕТА.
Выполнение задания Откройте окно Конструктора запроса, добавив в окне Добавление
таблицы таблицы КЛИЕНТ и СЧЕТ, и выполните следующие действия:
задайте поля, входящие в результирующую таблицу запроса, в строке Поле;
наберите в строке "Условие отбора" для поля ТИП – not K;
Примечание. В условии отбора буква К набирается на русском регистре.
выполните запрос и проанализируйте его результат;
сохраните запрос с именем НЕ КАРТ-СЧЕТА.
Задание 2.9. Определить сумму вознаграждения клиентам, имеющим картсчета, в размере 0,5% от суммы остатка на счете. Результирующая таблица запроса должна иметь все поля таблицы СЧЕТ и вычисляемое поле ВОЗНАГРАЖДЕНИЕ.
Созданный запрос с вычисляемым полем сохранить с именем ВОЗНАГРАЖДЕНИЕ.
