Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

BD / bd_lab_kn(2008)

.pdf
Скачиваний:
59
Добавлен:
03.03.2016
Размер:
787.27 Кб
Скачать

Режим таблицы

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

мышью по имени таблицы или, выделив таблицу в списке, щелкнуть по кнопке Открыть. На экране появится окно с записями ДонНТУтаблицы. Одна запись всегда

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

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

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

Задание к лабораторной работе

 

Для спроектированной в лабораторной работе №1 реляционной модели

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

полей (основные

 

 

ПМИ

 

свойства, подстановка), создать схему данных.

 

 

Контрольные вопросы

 

1.

Реализация ограничений целостности данных в Access.

 

2.

Реализация связей между таблицами в Access.

 

3.

Каскадное обновление полей, каскадное удаление записей.

4.

Свойства полей ( общие, подстановка ).

 

Кафедра

 

 

 

ЛАБОРАТОРНАЯ РАБОТА 3

 

 

АНАЛИЗ ДАННЫХ С ПОМОЩЬЮ ЗАПРОСОВ

 

Цель работы: изучение способов получения информации с помощью

 

запросов на выборку.

 

 

Методические указания к выполнению работы

 

 

Понятие о запросе

 

 

Главное назначение любой базы данных состоит

в хранении и

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

Получение информации, накопленной в таблицах, выполняется с помощью запросов. Access поддерживает различные типы запросов; самым распространенным среди них является запрос на выборку (ЗВ). ЗВ позволяет

40

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

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

запуска этого запроса.

Основные командные кнопки вкладки: ДонНТУ Открыть открывает запрос в режиме таблицы (запрос выполняется, и

Конструктор запроса

Для создания запроса нужно активизировать вкладку Запросы. На экран будет выведен список имеющихся запросов. Если же еще не создано ни одного

запроса, то вкладка будет пустой.

его результатыПМИвыводятся на экран);

Конструктор открывает запрос в режиме конструктора,

предназначенном для просмотра и изменения структуры запроса;

Создать позволяет создать новый запрос.

При щелчке по кнопке Создать появляется диалоговое окно Новый запрос, предоставляющее пять способов построения запроса. При выборе

опции Конструктор открывается окно конструктора запросов Оно разделено Кафедрана две части: в верхней помещаются списки полей таблиц. (запросов), на основании которых создается запрос, в нижней бланк QBE (Query By Example

запрос по образцу), в котором формируется запрос (см.рис.8). Выбранные для запроса таблицы отображаются в верхней части окна конструктора запросов вместе с линиями связей между ними

Для перевода курсора из одной части окна в другую можно использовать клавишу F6.

41

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

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

клавиши Delete при предварительном выборе таблицы.

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

Рисунок ПМИ8 – Окно конструктора запроса

- имя поля таблицы, - вычисляемое поле (на основе значений нескольких полей),

- итоговое поле (используются встроенные функции Access).

Строка Сортировка служит для упорядочения данных. Обычно Access выводит записи в том порядке, в каком они выбираются из БД. Но для удобства анализа результатов запроса их нужно упорядочить по значениям некоторого поля. Для этого в строке Сортировка выбирается одно из значений: По возрастанию или По убыванию. Сортировка может быть многоуровневой, то есть по нескольким полям. В этом случае последовательность уровней сортировки должна соответствовать последовательности полей запроса, так как условия сортировки применяются в порядке их расположения в бланке запроса слева направо.

В строке Вывод на экран с помощью флажков указываются поля, которые должны быть включены в результирующий набор записей.

42

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

Строка Или также предназначена для указания условия отбора. Несколько введенных в запросе условий автоматически объединяются в

зависимости от того, как они записаны:

ДонНТУ

в разных ячейках, в одной строке

оператором And,в разных

строках оператором Or.Включение полей в запрос

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

Самый простой способ включения поля в запрос двойной щелчок по его имени. При этом имя поля появится в следующем доступном столбце бланка запроса.

Можно также перетащить поле из списка полей в нужный столбец бланка. При щелчке по полю и перемещении мыши появляется пиктограмма поля маленький прямоугольник. За пределами таблицы пиктограмма принимает вид . Это значит, что опускать пиктограмму поля в данном месте нельзя. При размещении пиктограммы в строке Поле в ячейке появляется имя поля таблицы Если же пиктограмму вставить в бланк между двумя другими полями, то эти. поля раздвинутсяПМИ.

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

Для включения в запрос сразу нескольких полей их нужно сначала выделить. Для выделения смежных полей выполняется щелчок по первому нужному полю таблицы и, удерживая нажатой клавишу Shift, - по последнему полю. Все поля между этими полями также станут выделенными. Если поля

несмежные, то каждое из них выделяется с помощью мыши при нажатой

Кафедраклавише Ctrl.

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

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

Для включения в запрос всех полей таблицы можно также воспользоваться символом звездочки, стоящим первым в списке полей таблицы. Однако в бланке запроса поля не будут видны. В строке Поле появится только значение имя-таблицы.*, что и означает ссылку на все поля таблицы. Этот способ нельзя использовать в случаях, когда для некоторых полей нужно задать условия отбора или порядок сортировки.

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

43

становится черным. Теперь его можно удалить (клавиша Delete) или перетащить с помощью мыши (удерживая нажатой левую кнопку) в другое место.

Все поля удаляются из бланка запроса по команде

Правка Очистить бланк

Запросы можно строить не только на основанииДонНТУодной таблицы. Чаще требуется организовать просмотр объединенных данных из нескольких

связанных таблиц.

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

ключом (при связи "1:1") или нескольких записей (при связи "1:n").

Для многотабличного запроса рекомендуется включить в бланк QBE

строку Имя таблицы (по команде Вид Имена таблиц). В этой строке для

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

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

Вычисляемые поля

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

Вычисляемые поля создаются с помощью в

Кафедравычисляемые поля. выражений,

которых содержатся имена одного или нескольких полей таблиц, константы, встроенные функции Access, круглые скобки, математические операторы: ^, *,

/, \, MOD, +, -

( ^ - возведение в степень; \ - деление нацело ( округляет оба операнда до целых значений, делит

первый на второй и результат округляет до целого);

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

Например, если для таблицы Товары, имеющей поля Цена_единицы и Количество единиц, нужно вычислить стоимость партии товара, то в соответствующем запросе должно быть создано вычисляемое поле, представленное выражением

[Цена_единицы]*[Количество_единиц] (имена полей должны указываться в квадратных скобках).

Если выражение простое, то его можно создавать непосредственно в ячейке строки Поле. Длинные выражения удобнее задавать в окне Область ввода, которое открывается нажатием Shift - F2.

44

Для построения сложных выражений Access предоставляет утилиту

Построитель выражений, вызываемую кнопкой ПИ Построить.

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

[имя-таблицы]![ имя-поля]

поля таблицы, вводя новое имя и двоеточие передДонНТУсуществующим именем.

Выражение может также содержать операцию конкатенации (символ "&"), с помощью которой объединяются значения текстовых полей, строковых констант и вообще операндов любого типа, так как они автоматически

преобразуются в текстовые.

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

присваивается имя Выражение1, отделяемое от выражения двоеточием:

Выражение1 : [Цена_единицы]*[Количество единиц]

Системное имя нужно заменить на содержательное, например,

Стоимость партии : [Цена_единицы]*[Количество единиц]

Теперь это имя будет использоваться в качестве заголовка столбца при

обращении к этому полю в формах, отчетах и других объектах Access.

Now() - возвращает текущиеПМИсистемные дату и время,

Year(дата) – значение года в виде четырех цифр (целое) ,

Year() – значение текущего года в виде четырех цифр (целое) ,

Format(дата; ”yyyy”) – значение года (например, “2003”) ,

В результирующем наборе данных можно переопределить имя любого

Рассмотрим некоторые системные функции, используемые при

построении выражений:

Date() – возвращает текущую системную дату ,

Format(дата; ”d-mmmm-yyyy”) – полная дата (“1-января-2003”) ,

Format(“донецк”;”>”) – возвращает ДОНЕЦК” ,

Format(дата; “mmm”) – сокращенное название месяца (янв,фев,…), DatePart(“q”; дата) – определяет номер квартала (1- 4) , DatePart(“yyyy”; дата) – определяет год.

Условие отбора

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

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

-

операторы сравнения = , <> , < , > , <= , >= , Like;

-

специальные операторы сравнения In, Between;

-

оператор Is;

Кафедра

-

логические операторы Not, And, Or.

45

Оператор In используется для проверки значения на равенство одному из элементов указанного списка (то есть выполняет множественное сравнение). Он имеет следующий синтаксис:

Выражение In (Значение1;Значение2;…)

Замечание: при использовании операторов In, Between, Like в QBE- запросах Выражение не указывается - система использует вместо него имя (вычисляемое выражение) соответствующего поля запроса.

Оператор Between проверяет вхождение значения в заданный диапазон:

Выражение Between Значение1 And Значение2

(Значение1 нижняя, Значение2 верхняя границы диапазона).

Оператор Like проверяет соответствие значения текстового или MEMO поля заданному шаблону:

Выражение Like шаблон

Шаблон представляет образец для поиска. В образец можно включить

специальные символы шаблона:

 

 

 

?

показывает, что в данной позиции

может быть любой

одиночный символ;

 

 

ДонНТУ

 

 

 

 

*

означает любое количество символов (в том числе и нулевое) в

позиции;

в позиции должна быть цифра;

 

 

#

 

 

[] – используется для указания допустимых символов (внутри

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

представляемый с помощью знака "");

 

 

 

! – для указания исключения символов.

 

 

 

ПМИ

 

можно проверить

Например, с помощью оператора

Like "83###"

принадлежность почтового индекса индексам г. Донецка.

 

Оператор Like "[!0-9]*##"

показывает, что строка не должна

начинаться с цифры, но в конце должны быть две цифры. Like "*Дон*"

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

показывает, что подстрока "Дон" может располагаться в любом месте строки, а Like "[АБВ]*" находит все строки, значения которых начинаются с букв А, Б, или В.

Очевидно, что оператор Like удобно использовать в тех случаях, когда нужно рассматривать записи не по точному сравнению с конкретными значениями, а из более широкого диапазона. Оператор "=" можно в условии отбора не указывать, так как система назначает его по умолчанию.

Для задания несовпадающих значений используются операторы Not и "<>". Они размещаются перед выражением, в котором описан тип несовпадения. Например, условие Not Донецкдля поля Город означает, что

находятся в г. Донецке.

46

Система Access обеспечивает возможность хранения в полях таблицы специального значения Null, называемого пустым значением. Значение Null не является ни истинным, ни ложным, оно не эквивалентно ни пробелу, ни нулю: оно просто означает отсутствие значения.

Записи могут содержать пустые поля по разным причинам. Например, значение не было известно в момент ввода данных, либо информация была удалена из поля (такие ситуации возможны только для необязательных полей).

Анализ поля на пустое значение выполняется с помощью оператора Is Null и на непустое значение с помощью Is Not Null.

Оператор And используется в тех запросах, в которых значение поля должно одновременно удовлетворять обоим заданным условиям. Например, выражение >= 10 And <=20 будет истинно только в том случае, если обе его части истинны.

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

Сложное выражение, содержащее разные категории операторов,

вычисляется по следующему правилу:

сначала выполняются операторы,

 

ПМИ

 

заключенные в круглые скобки, а внутри скобок и вне скобок учитывается

стандартный приоритет операторов:

 

ДонНТУ

1

математические операторы,

 

 

2

операторы сравнения,

 

 

3

логические операторы.

 

 

Условия отбора могут указываться не только для одного поля. Часто требуется выбрать записи на основании условий отбора по нескольким полям. Если условия для разных полей находятся в одной строке (строка Условие

отбора то система объединяет их оператором Если же условия находятся

Кафедра), And.

в двух строках (Условие отбора, или), то они объединяются оператором Or. При выполнении запросов с условиями отбора в динамический набор

включаются только те записи, для которых логическое выражение принимает значение Истина.

Следует помнить, что грамотное задание условий отбора записей является предпосылкой создания эффективных запросов.

Запросы с параметрами

Если указывать в бланке запроса конкретные значения условий отбора (то есть с помощью констант), то возможности таких запросов будут существенно сужены. Чтобы автоматизировать процесс изменения значений условий отбора, нужно включить в запрос параметр. При каждом выполнении такого запроса Access выводит на экран диалоговое окно, предлагающее ввести значение параметра.

Для определения параметра нужно ввести в строку Условие отбора текст сообщения пользователю (слово или фразу, длиной не более 50 символов), заключенный в квадратные скобки. То, что заключено внутри квадратных

47

скобок, Access рассматривает как имя параметра. В одном запросе можно задать несколько параметров. При этом имя каждого параметра должно быть уникальным и информативным.

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

Сохранение запроса

Созданный запрос нужно сохранить. Для этого следует щелкнуть по кнопке ПИ Сохранить и в появившемся окне диалога указать его имя.

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

кнопок ПИ Запуск (восклицательный знак) и Вид (самая левая кнопка).

не подойти.

ПМИ

 

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

щелкнуть по кнопке Сохранить.

ДонНТУ

Установка свойств полей

Поля запроса наследуют многие свойства, заданные соответствующим полям таблицы (однако в окне свойств, вызываемом щелчком по нужному полю и по кнопке Свойства, они могут не отобразиться). При необходимости можно изменить значения таких свойств как Формат поля, Число десятичных знаков, Маска ввода, Подпись. Для вычисляемых полей рекомендуется всегда устанавливать эти свойства, так как назначаемые по умолчанию значения могут

Пример 1 (симметричное объединение с условием). Вывести сведения обо всех поставках указываемого товара

48

Нужно ли вызывать в окно конструктора запросов таблицы-справочники, которые использовались для подстановки?

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

автоматически. Если же на это поле налагается условие отбора или по нему

2) Одна из итоговых функций Access:

ДонНТУ

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

Итоговые запросы

Если необходимо проанализировать не отдельные записи таблицы, а обобщенные значения по группам записей, то нужно создать итоговый запрос (ИЗ). ИЗ можно создавать не только по одной таблице, но и на основе нескольких таблиц. При создании ИЗ необходимо указать поле (поля), которое используется для группировки записей, и поля, для которых выполняются вычисления. Для ИЗ в бланк QBE добавляется строка Групповая операция (по кнопке Групповые операции), которая может иметь такие значения:

1) Группировка для определения групп записей с одинаковыми

значениями поля (назначается по умолчанию);

для этих групп будут

ПМИ

 

вычисляться итоговые значения.

 

Sum вычисляет сумму всех значений поля в каждой группе (для числовых и денежных полей);

Avg вычисляет среднее арифметическое всех значений поля;

Count определяет число записей в каждой группе (Null не учитывается); Count(*) – число всех записей.

Min определяет наименьшее значение внутри каждой группы; Max определяет наибольшее значение внутри каждой группы; First возвращает значение поля первой записи группы;

Last возвращает значение поля последней записи группы.

3)Выражение указывается для вычисляемого поля; выражение, которое хотим ввести в строке Поле, должно использовать хотя бы одну итоговую функцию.

4)Условие указывается для поля, по которому составляется условие отбора определенных записей.

КафедраРассмотренные значения строки Групповая операция выбираются из раскрывающегося списка.

Можно также выполнить группировку по нескольким полям. В этом случае Access группирует записи на основании порядка следования полей, для которых установлена Группировка. Порядок следования таких полей не изменяет результата запроса, но определяет вид представления данных в результирующем наборе. Например, определить для каждого вида товара и каждого поставщика количество поставленных партий. Группировку записей

49

Соседние файлы в папке BD