49
СУБД Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

СУБД Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

  • Upload
    raziya

  • View
    65

  • Download
    8

Embed Size (px)

DESCRIPTION

СУБД Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы). Создание и изменение запросов. Назначение запросов. Запросы позволяют извлекать данные из одной или нескольких таблиц в соответствии с заданными условиями отбора, производить при этом обработку и сортировку данных. - PowerPoint PPT Presentation

Citation preview

Page 1: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

СУБД Microsoft Access 2003РАЗРАБОТКА БАЗЫ ДАННЫХ(Запросы)

Page 2: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Назначение запросов

Запросы позволяют извлекать данные из одной или нескольких таблиц в соответствии с заданными условиями отбора, производить при этом обработку и сортировку данных

Кроме запросов на выборку, существуют запросы на обновление, добавление и удаление данных, а также на создание таблицы

Page 3: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

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

Мастер позволяет создавать простые запросы на основе одного или нескольких источников данных (таблиц или запросов)

Следует выбрать поля, которые должны быть отображены в запросе

Page 4: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Такое множество называетсядекартовым произведением

таблиц

Создание и изменение запросов Запросы и связанные таблицы

Если строится запрос на основе нескольких несвязанных таблиц, результатом будет множество всех возможных комбинаций из записей всех таблиц

Определение связей между таблицами помогает мастеру ограничить результирующее множество только записями, которые связаны между собой

Мастер запросов отказывается строить запросы по нескольким несвязанным таблицам

Page 5: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Запросы и связанные таблицы

В данном примере есть две связанные между собой таблицы. При построении запроса для отображения отобраны вторые поля.В результирующий набор входят комбинации полей из связанных записей

Page 6: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Запросы и связанные таблицы

Левый рисунок – результат запроса, построенного на основе связей между таблицами

Правый – декартово произведение таблиц

Page 7: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Конструктор запросов

Конструктор – визуальное средство создания и редактирования запросовРазработчик указывает в конструкторе таблицы, которые участвуют в запросе и отбирает необходимые поля

Далее задаются условия отбора и сортировки данных

Область таблиц

Бланк запроса

Page 8: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Конструктор запросов. Пример

Есть три связанных таблицы:

Связи, указанные в схеме данных, автоматически отображаются в конструкторе

Page 9: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Конструктор запросов. Пример

Построим простой запрос на выборку:требуется вывести фамилии клиентов и названия журналов, на которые они подписаны

После щелчка на кнопке «Создание запроса в режиме конструктора» появится диалоговое окно, предлагающее выбрать нужные таблицы.

Выберем таблицы «Клиент», «Подписка» и «Журнал» и нажмем кнопку «Закрыть»

Page 10: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Конструктор запросов. Пример

В области таблиц окна конструктора изображены отобранные таблицы и их связи

Символ «*» обозначает все поля таблицы

Перетащим мышкой поля «Фамилия» и «Название» в бланк запроса

Page 11: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Конструктор запросов. Пример

Запрос теперь выглядит так

Чтобы просмотреть результат, переключим запрос из режима конструктора в режим таблицы

Page 12: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Конструктор запросов. Пример

Результат работы запроса

Сохраним построенный запрос для последующего использования

В появившемся окне введем имя запроса и нажмем кнопку «OK» Сохраняется сам запрос, а

не результат его работы. При каждом запуске запрос обращается к текущим данным таблиц

Page 13: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Конструктор запросов. Пример 2

Перетащим мышкой поля «Фамилия» и «Код журнала» в бланк запроса

При построении запросов над данными можно выполнять более сложные действия.

Отберем в поле таблиц конструктора таблицы «Клиент» и «Подписка»

Построим другой запрос, подсчитывающий количество журналов, на которые подписан каждый из клиентов

Снова нажмем «Создание запроса в режиме конструктора»

Page 14: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Конструктор запросов. Пример 2

Запрос теперь выглядит так

Переключим запрос из режима конструктора в режим таблицы

Page 15: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Конструктор запросов. Пример 2

Фамилия «Иванов» повторяется дважды, поскольку этот клиент подписан на два журнала

Пока результат далек от желаемого:

Нужно сгруппировать строки с одинаковыми фамилиями и для каждой фамилии подсчитать количество кодов журналов, сами коды в результате не нужны и фамилии не должны повторяться

Вернемся в режим конструктора

Page 16: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Конструктор запросов. Пример 2

Разрешим использование в запросе групповых операций

При этом в бланке запроса появится новая строка

Page 17: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Конструктор запросов. Пример 2

Для поля «Фамилия» выберем групповую операцию «Группировка», а для поля «КодЖурнала» - операцию «Count» (подсчет количества)

Добавим сортировку по фамилии

Page 18: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Конструктор запросов. Пример 2

Перейдем в режим таблицы

Page 19: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Конструктор запросов. Пример 2Чтобы в результирующую таблицу попадали и те клиенты, у которых нет подписки, следует изменить параметры объединения

Перейдя в режим конструктора, надо дважды щелкнуть по линии связи между таблицами

Page 20: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Конструктор запросов. Пример 2

В появившемся диалоговом окне нужно выбрать второй тип объединения

Page 21: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Конструктор запросов. Пример 2

Результирующая таблица теперь выглядит так

Page 22: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов

Типы объединений таблиц

Внутреннее объединение

Внешнее левое объединение

Внешнее правое объединение

Page 23: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Некоторые групповые операции

Sum – сумма значений группыAvg – среднее арифметическоеMin – минимальное значениеMax – максимальное значениеCount – количество элементовFirst – первое значение

Last – последнее значение

Условие

Выражение

Специальные (их применение будет показано ниже)

Page 24: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Задание имен столбцов

В построенном ранее запросе второй столбец имеет название, сформированное автоматически.

Зададим в конструкторе новое имя столбца

Новый вид результата запроса

Page 25: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Условия отбора результатов

Количество данных, участвующих в создании результирующего набора, можно ограничить с помощью некоторых условий отбора

Пример:Из таблицы «Клиент» берутся только данные для клиента, поле «Фамилия» которого имеет значение «Иванов»

РезультатМожно задать несколько условий для одного или нескольких столбцов.По горизонтали условия объединяются операцией «И», по вертикали – «ИЛИ»

Page 26: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Условия отбора и групповые операции

Рассмотрим приведенный ранее пример запроса.

В нем производится группировка данных по фамилиям клиентов и для каждой группы подсчитывается число ее элементов

Если во втором столбце добавить некоторое условие отбора, оно будет применяться после операции группировки и подсчета количества, к результирующему набору

Page 27: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Условия отбора и групповые операции

Пример

Здесь добавлено условие отбора «=1»

Отобраны те строки результирующего набора, в которых количество журналов подписчика равно одному

Результат имеет следующий вид:

Page 28: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Условия отбора и групповые операции

Пример

Допустим, требуется сделать отбор по определенному коду журнала, а уже после выполнять группировку и подсчет количества (т.е. отбор производится внутри группы)

- Добавим в бланк запроса столбец «КодЖурнала»- Зададим для него групповую операцию «Условие»- Назначим критерий отбора «=1»

Page 29: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Условия отбора и групповые операции

Пример

Теперь в результирующей таблице указаны фамилии клиентов, подписанных на журнал с кодом «1» и количество подписок каждого из них, оформленных именно на этот журнал

Page 30: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Выражения в запросах

Для формирования результирующих наборов могут использоваться не только поля таблиц, но и построенные на их основе выражения.

Пример:Запрос, выводящий список клиентов с их инициалами Результат

работы запроса

Page 31: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Использование функций в выражениях

Left(строка, n) – возвращает n левых символов строки

Функции обработки текста

Right(строка, n) – возвращает n правых символов строкиMid(строка, n1, n2) – возвращает n2 символов строки, начиная с позиции n1InStr(строка1, строка2) – номер позиции, с которой строка2 входит в строка1Ltrim(строка), Rtrim(строка) – удаляют пробелы из начала и конца строки соответственноTrim(строка) – удаляет пробелы из начала и конца строки

Page 32: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Использование функций в выражениях

Date() – возвращает текущую дату

Функции обработки даты и времени

Now() – возвращает текущую дату и времяDateDiff(интервал, дата1, дата2) – определяет разницу между датами. Аргумент интервал определяет способ представления разницы:“yyyy” – год, “q” – квартал, “m” – месяц, “y” – день года, “d” – день, “w” – неделя, “h” – час, “n” – минута, “s” - секунда

DateAdd(интервал, число, дата) – будущая дата, отстоящая от указанной на заданное число интервалов.Year(дата), Month(дата), Day(дата) – возвращают число - значение года, месяца и дня для указанной даты.

Page 33: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Использование функций в выражениях

Str(аргумент) – преобразует значение аргумента в текстовую строку

Функции преобразования (например, если требуется объединить фамилию и дату в одну строку, дата должна быть сначала преобразована в строковую переменную)

Val(строка) – преобразует строку в число

Int(число) – возвращает целую часть числа

Пример:"Сегодня: "+Str(Date())

Page 34: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Использование функций в выражениях

IIf(выражение, если истинно, если ложно) – вычисляет значение аргумента выражение. Если значение истинно, возвращает значение второго аргумента, если ложно – значение третьего аргумента.

Условная функция

Пример:IIf([количество]>0, “Есть в наличии”, “Отсутствует”)

Page 35: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Использование функций в выражениях

При построении запроса функции могут быть использованы не только в строке «Поле» конструктора, но и в строке «Условие отбора»

Также функции могут быть использованы при построении форм и отчетов

Объекты базы данных «Модули» позволяют пользователю определять собственные функции, которые могут быть использованы наравне со встроенными

Page 36: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Построитель выражений

Построитель выражений – инструмент, помогающий создавать выражения, используя объекты БД, операторы, встроенные и пользовательские функции

Для запуска построителя выражений следует в контекстном меню соответствующей строки бланка запроса выбрать пункт «Построить»

Page 37: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Построитель выражений

Вид окна построителя выражений

Page 38: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Параметры запросов

В запросах могут использоваться параметры.

Каждый параметр запроса должен иметь уникальное (в пределах запроса) имя.

Имя параметра может участвовать в выражениях, входящих в запрос.

Для просмотра и изменения списка параметров следует выбрать пункт «Параметры» в контекстном меню окна конструктора

При вызове запроса на выполнение открывается диалоговое окно с предложением указать значения его параметров.

Page 39: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Параметры запросов

Вид окна редактирования параметров запроса

Page 40: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Параметры запросов

Если при запуске запроса в его теле встречается некоторое, неизвестное системе имя, оно автоматически считается именем параметра и выдается окно с предложением ввести его значение

Создадим запрос на выборку, аналогичный построенному ранее и в качестве условия отбора укажем=[Введите фамилию]

Page 41: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Параметры запросов

Запустим созданный запрос

В появившемся окне введем «Иванов» и нажмем «OK»

В результирующей таблице выводятся названия журналов подписчика с фамилией «Иванов»

Page 42: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Перекрестные запросы

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

Пример: по одним и тем же данным построены запрос на выборку (слева) и перекрестный (справа)

Page 43: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Перекрестные запросы

Рассмотрим процесс построения запроса, результат работы которого был приведен ранее

С помощью конструктора построим запрос на выборку

Вот результат его работы

Page 44: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Перекрестные запросы

В контекстном меню конструктора изменим тип запроса на «Перекрестный»

Page 45: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Перекрестные запросы

В бланке запроса появились строки «Групповая операция» и «Перекрестная таблица»

Page 46: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Перекрестные запросы

Укажем, что значения поля «Фамилия» образуют заголовки строк, поля «Название» - заголовки столбцов, а поля «КодЖурнала» - значения в таблице

Для первых двух полей следует задать операцию «Группировка» (названия строк и столбцов не будут повторяться).

При этом ячейке на пересечении строки и столбца могут соответствовать несколько значений «КодЖурнала».

Для этого поля зададим групповую операцию «Count».

Page 47: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Перекрестные запросы

Внесем в запрос некоторое «эстетическое» усовершенствование для демонстрации применения групповой операции «Выражение» и функции IIF()

Здесь приведен результат работы созданного запроса

Пусть в ячейках таблицы отображается не количество подписок клиента на журнал, а знак «+», если это количество больше нуля

Page 48: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Перекрестные запросы

Заменим в третьей колонке групповую операцию «Count» на «Выражение»В первой строке вместо имени поля напишем выражение, в котором используется операция «Count» и условная функция IIf()

IIf( Count( Подписка.КодЖурнала )>0; "+"; "")Операция «Выражение» используется, если необходимо выполнить более сложную обработку, чем вычисление стандартной групповой операции

Page 49: СУБД  Microsoft Access 2003 РАЗРАБОТКА БАЗЫ ДАННЫХ (Запросы)

Создание и изменение запросов Перекрестные запросы

Результат работы усовершенствованного запроса