Использование вычисляемых полей в запросах
Требования к содержанию, оформлению и порядку выполнения
Лабораторную работу необходимо выполнять в базе данных Университет, созданной вами ранее и сохраненной в папке «Ваша фамилия Lab 1» Далее изучите теоретический материал и выполните последовательно все предложенные задания. После выполнения лабораторной работы ответьте на контрольные вопросы.
Теоретическая часть
1. Связи между таблицами
Таблицы могут быть связаны отношениями:
· один-к-одному;
· один-ко-многим;
· многие-к-многим.
Access позволяет использовать только отношения первых двух типов. При установлении связи нужно определить какая таблица является главной, а какая - подчиненной.
Отношение один-к-одному означает, что одной записи подчиненной таблицы соответствует только одна запись в главной таблице. Такие отношения встречаются очень редко, т.к. требуют неоправданно много места в БД. Вместо них можно просто добавить поля подчиненной таблицы к полям главной.
Наиболее часто используются отношения один-ко-многим. В этом случае одной записи в главной таблице соответствует несколько записей в подчиненной таблице.
Для создания отношений необходимо указать поля в двух таблицах, которые содержат одни и те же данные. Обычно такое поле в одной из таблиц (главной) является ключевым. Имена связывающих полей могут отличаться, но типы и свойства должны совпадать.Возможна связь между полем типа Счетчик и полем типа Число с форматом Длинное целое.
Задание 1.
Установить связи между данными таблиц Факультет, Специальность, Группа и Студент.
Технология выполнения:
1. Загрузить файл базы данных Университет, созданный в предыдущей лабораторной работе.
2. Выполнить команду Работа с базами данных/Схема данных.
3. В окне Добавление таблицыпоследовательно выбирать указанные выше таблицы, щелкая затем по кнопке Добавить.
4. Добавив последнюю таблицу, щелкнуть по кнопке Закрыть.
5. В окне Схема данныхустановить связь между таблицей Факультет и таблицей Группа. Для этого:
· выделить щелчком поле Номер факультета в таблице Факультет и, удерживая нажатой левую клавишу мыши, переместить указатель на поле с тем же названием в таблице Группа',
· отпустить клавишу мыши, появится окно Связи,в котором необходимо включить флажок Обеспечение целостности данныхи нажать кнопку Создать;
Рисунок 1.
· в окне Схема данныхпоявится связь между таблицами типа один ко многим.
Рисунок 2.
Примечание 1. Для удаления ошибочно установленной связи следует выделить связь и, нажав правую кнопку мыши, вызвать контекстное меню, в котором выбрать пункт Удалить связь.
Примечание 2. Целостность данных может быть обеспечена при условии, что поля таблиц, которые обеспечивают связь, имеют одинаковый тип. Если при установлении связи обнаруживается разный тип полей, следует щелкнуть по таблице на схеме данных правой клавишей мыши, и в контекстном меню выбрать пункт Конструктор таблиц,с помощью которого изменить тип поля.
6. Аналогично установить связь между таблицами Специальность и Группа по полю Номер специальности. Установить связь между таблицами Группа и Студент по полю Номер группы.
7. Закрыть окно Схема данных.
Запросы
Запрос - это средство Access для выборки данных из базы данных в форме таблицы, выполняемой по заданному условию, а также для выполнения определенных действий над табличными данными.
Условие может определять:
· порядок сортировки выводимых данных;
· фильтрацию данных;
· вычисляемые поля;
· вывод данных из нескольких связанных таблиц.
Запросы по существу являются псевдотаблицамии их можно использовать также как и таблицы. Применение запросов позволяет избежать дублирования данных в таблицах и обеспечивает максимальную гибкость при поиске и отображении данных БД. С помощью запроса создается временная таблица - динамический набор данных.С помощью запроса можно осуществить выборку данных сразу из нескольких таблиц.
Все запросы можно разделить на 2 группы:
· запросы-выборки;
· запросы действия.
Запросы-выборкиизвлекают данные из таблиц в соответствии с заданными условиями
Основные виды запросов-выборок:
· запрос-выборка по одной таблице с заданными ключами сортировки (таблицы, рассортированы только по одному ключу);
· запрос с критерием поиска;
· запрос перекрестный;
· запрос с параметром;
· запрос с вычисляемым полем;
· запрос с итогами;
· запрос к связанным таблицам.
Запросы-действияпредназначены для выполнения требуемых действий над данными таблиц. Они позволяют добавлять, изменять или удалять данные. В приложении Access существует 4 вида запросов - действия:
· запрос на удаление;
· запрос на замену (обновление);
· запрос на создание новой таблицы;
· запрос на добавление новых записей в таблицу.
При составлении запроса используется таблица описания запроса, имеющая 4 основные строки. Количество столбцов таблицы определяется количеством полей, которые в нем будут использоваться.
1-я строка таблицы называется Поле. Вней содержатся имена полей. Поле может быть вычисляемым. Тогда в соответствующей ячейке содержится выражение для вычисления значения этого поля.
2-я строка таблицы называется Сортировка. Она определяет способ сортировки по соответствующему полю (по возрастанию, по убыванию или без сортировки).
3-я строка таблицы управляет Выводом на экран значения соответствующего поля
4-я строка таблицы называется Условием отбора. Содержит критерии, по которым производится отбор записей в динамический набор данных.
При записи в таблицу условий в одну ячейку таблицы можно поместить до 1024 символов.Одно и то же поле может записываться в строку таблицы описания запроса несколько раз.
При записи в запросе условия можно объединять критерии при помощи операций И (AND) или ИЛИ(OR).
Использование вычисляемых полей в запросах
Допускается создание вычисляемых полей в запросе с помощью ввода выражения в строку с именами полей.
1. В режиме конструктора запроса введите выражение в пустую ячейку строки «Поле». После нажатия клавиши Enter или перевода курсора в другую ячейку будет выведено имя поля "Выражение №N, где N - целое число, увеличивающееся на единицу для каждого нового создаваемого вычисляемого поля в запросе. Это имя выводится перед выражением и отделяется от него двоеточием. В режиме таблицы данное имя становится заголовком столбца.
2. Пользователь имеет возможность переименовать вычисляемое поле.
Например, для создания поля «Сумма» следует ввести в ячейку в строке «Поле» выражение: Сумма: [Цена]*[Количество]
При выполнении запроса в поле «Сумма» будет занесено новое значение, найденное путем перемножения содержимого полей «Цена» и «Количество».
Вычисляемые поля позволяют:
· рассчитывать числовые значения и даты;
· комбинировать значения в текстовых полях;
· создавать подчиненные запросы;
· рассчитывать значения итоговых полей с помощью групповых функций.
Для вычисляемых полей допускается сортировка, задание условий отбора и расчет итоговых значений, как и для любых других полей. Для расчета итоговых значений следует выбрать в ячейке строки "Групповая операция" элемент "Выражение".
Ввод данных в вычисляемые поля или их изменение в режимах таблицы или формы невозможен. При изменении значений полей, используемых в выражении, значение вычисляемого поля обновляется автоматически.
При делении денежного значения на любое число возвращается числовое значение со значением свойства <Размер поля> - «С плавающей точкой (8 байт)». Для того чтобы возвращалось значение типа «Денежный», следует указать этот тип в свойстве запроса <Формат поля>.
В Microsoft Access определена специальная функция, Count, обеспечивающая подсчет числа записей в запросе. Для этого следует ввести Count(*)в ячейку в строке полей.
Окно "Область ввода", выводящееся нажатием клавиш Shift+F2,позволяет просматривать выражения целиком (без прокрутки).
Элементы выражений
Элементами выражения могут быть операторы, идентификаторы, функции, литералы и константы.
Оператор=, <, >,&, And, Or, Like Определяет операцию, выполняемую над одним или несколькими элементами.
ИдентификаторФормы! [Заказы]! [Заказ] или Отчеты! [Счет]. ВыводНаЭкран Задает ссылку на значение поля элемента управления или свойства.
ФункцияDate, Sum, DLookup Возвращает значение, найденное в результате расчета или другой операции. Access Basic предоставляет пользователю возможность создавать собственные функции.
Литерал100, #1-янв-94#, "New York" Представляет значение, например, число, строку или дату, которое используется в Microsoft Access, именно в том виде, как оно записано. Даты заключаются в символы номера (#), а строки в прямые кавычки (").
Константа True,False, Да, Нет, Null Представляет значение, остающееся неизменным.
Задание2.
Создать простой запрос для выборки сведений из базы данных, включающий следующие поля:
· наименование факультета;
· номер группы;
· наименование специальности;
· номер зачетной книжки;
· фамилия, имя, отчество
Технология выполнения:
1. В окне База данных выбрать на панели основного меню вкладку Создание.
2. В появившемся списке команд на инструментальной панели выбрать Конструктор запросов.
Рисунок 3.
3. В диалоговом окне Добавление таблицы добавить таблицы Студент, Группа, Специальность, Факультет, затем закрыть окно.
Рисунок 4.
4. При необходимости отрегулировать размеры и расположение окон с таблицами на схеме данных.
5. Перетащить соответствующие названия полей из окон таблиц в бланк запроса, расположенный под схемой данных, соблюдая заданный их порядок.
Примечание. Вместо перетаскивания названия поля можно использовать двойной щелчок левой клавишей мыши по соответствующей строке в окне таблицы на схеме данных. То же самое можно получить, если использовать кнопку, разворачивающую список полей таблиц. Эта кнопка появляется при щелчке по ячейке в первой строке бланка.
Рисунок 5.
6. Просмотреть полученную выборку, выполнив команду Главная/Режим таблицыили щелкнув по кнопке инструментальной панели «Таблица».
7. Вернуться в режим конструктора запросовв случае, если выборка содержит ошибки, и откорректировать запрос.
8. Закрыть запрос. Появится диалоговое окно, в котором следует подтвердить необходимость его сохранения.Присвоить запросу имя «Выборка 1»
Задание3.
Создать простой запрос для выборкисведений из базы данных, включающий те же поля, что и предыдущий запрос, но содержащий сведения только о студентах, обучающихся на коммерческой основе. Такой запрос называется запросом по условию.
Для выполнения этого задания необходимо на бланке запроса добавить поле «Коммерческий» и ввести по нему соответствующее условие - ДА
Задание 4.
Составить запрос для подсчета количества коммерческих студентов в каждой группе.
Технология выполнения:
1. Создать в режиме конструктора новый запрос с использованием таблиц Факультет, Группа, Студент.
2. Ввести в 1-ый столбец бланка запроса поле Наименование факультета, во 2-ой столбец - поле Номер труппы, в 3-ий столбец - поле Коммерческий.
3. Установить в качестве условия выборки для 3-го столбца -значение Да.
4. Установить для 1-го и 2-го столбцов бланка сортировку по возрастанию.
5. Отключить вывод на экран данных 3-го столбца.
6. Ввести в 4-ый столбец поле Коммерческий и замените название столбца на Количество коммерческих. Для этого новое и старое названия столбца следует разделить символом «двоеточие», т.е. ячейка с названием поля должна содержать: Количество коммерческих: Коммерческий
7. Щелкнув по кнопке инструментальной панели Групповые операции (значок суммы Σ),добавить в бланк строку Групповая операцияи выбрать из списка в этой строке для 4-го столбца операцию Count.
Рисунок 6.
8. Просмотреть выборку с подсчетом итогов, щелкнув по кнопке инструментальной панели Выполнить.
9. Вернуться в режим конструктора запросов, щелкнув по кнопке Режимы инструментальной панели или с помощью контекстного меню.
10.Сохранить запрос, присвоив ему имя Подсчет коммерческих по группам.
Задание 5. Составить запрос-выборкудля подсчета количествакоммерческих студентов по каждому факультету.
Задание 6.Составить запрос, позволяющий увидеть выборку, отражающую количество студентов по каждому факультету и каждой группе. Заголовки столбцов должны соответствовать названиям факультетов, заголовки строк - номерам групп. Такой вид выборки может быть реализован перекрестным запросом.Для применения подобного запроса желательно иметь в базе данных сведения по 5-6 группам, отнесенным к 3 факультетам.
Технология выполнения:
1. Создать с помощью конструктора новый запрос с использованием таблиц Факультет, Группа, Студент.
2. Ввести в 1-ый столбец бланка запроса поле Наименование факультета, во 2-ой столбец - поле Номер группы, в 3-ий столбец - поле Коммерческий.
3. Выполнить команду на инструментальной панелиПерекрестный запросиливызвать контекстное меню в области создания запросов, выделить команду Тип запросаи выбрать из списка Перекрестный запрос.
4. Выбрать значения в строке бланка Перекрестная таблица, развернув список в ячейках:
· для 1-го столбца заголовок строк,
· для 2-го столбца - заголовок столбцов,
· для 3-го столбца - значение.
5. Выбрать функцию Count для групповой операции в 3-м столбце.
6. Просмотреть перекрестную выборку, щелкнув по кнопке Выполнить.
7. В режиме таблицы уменьшить ширину столбцов таблицы-выборки. Для этого выделить столбцы с данными по группам и выполнить команду Главная/Записи/Ширина поля/По ширине данных.
8. Сохранить запрос под именем Количество студентов по факультетам и группам.
Задание7. Составить запрос, позволяющий увидеть перекрестную выборку, отражающую количество коммерческих студентов по каждому факультету и каждой группе.
Задание 8. Составить запрос для вывода списков групп, причем номер группы должен запрашиваться в процессе выполнения запроса. Такой запрос называется запросом с параметром.Параметром является номер группы.Значение параметра вводится в диалоговом окне. Для создания запроса необходимо ввести в ячейку с условием текст условия отбора в квадратных скобках.
Технология выполнения:
1. Создать с помощью конструктора новый запрос с использованием одной таблицы Студент.
2. Ввести в 1-ую строку бланка запроса все поля таблицы.
3. Ввести в ячейку строки Условие отбора для поля Номер группы текст: [Введите номер группы].
4. Запустить запрос, и в появившееся диалоговое окно ввести номер одной из групп. Просмотреть выборку. Сохранить запрос, присвоив ему имя Запрос с параметром.
Задание 9.Составить запрос для получения справки по стоимости обучения коммерческих студентов с учетом НДС. Принять, что стоимость обучения с учетом НДС коммерческого студента равна стоимости обучения по выбранной им специальности, умноженной на (1+0,2), где 0,2 - величина НДС. Такой запрос называется запросом с вычисляемым полем
Технология выполнения:
1. Создать с помощью конструкторановый запрос с использованием таблиц Специальность, Группа, Студент.
2. Ввести в бланк запроса поля: Номер группы, Номер специальности, Фамилия, N зачетки, Коммерческий, Стоимость обучения.
3. Ввести в поле Коммерческий условие Да и отключить вывод содержимого этого поля на экран.
4. Щелкнуть мышью в строке поле следующего свободного столбца бланка и щелкнуть по кнопке инструментальной панели Построитель.Будет вызвано окно Построителя выражений.
5. Используя поле таблицы Специальность, ввести в окно построителя выражение: НДС: [Стоимость обучения] * 0,2,где НДС: - заголовок столбца с вычисляемым полем, [Стоимость обучения]- поле таблицы «Специальность», 0,2 - величина НДС.
Для записи выражения следует использовать инструменты построителя выражений. После ввода выражения щелкнуть по кнопке Ok.
Рисунок 7.
6. Щелкнуть мышью в ячейке поля следующего свободного столбца и перейти в окно Построителя выражений.Ввести в этом окне формулу: Итого: [Стоимость обучения]+[НДС]
Примечание.
Для редактирования выражения в вычисляемом поле запроса можно использовать окно Область ввода, которое вызывается комбинацией клавиш Shift+F2,если ячейка с полем активизирована.
7. Включить флажки вывода на экран вычисляемых полей.
8. Запустить запрос
9. Отладив запрос, сохранить его с именем Запрос с вычисляемым полем.
Задание 10.Составить запрос на обновлениебазы данных. Необходимо создать запрос, при выполнении которого произойдет увеличение стоимости обучения по всем специальностям в 1.5 раза.
Технология выполнения:
1. Создать с помощью конструктора новый запрос. Выбрать в качестве исходной таблицы одну таблицу - Специальность.
2. Указать тип запроса, выполнив команду на инструментальной панелиОбновление,или, щелкнув правой клавишей по свободному месту схемы данных, выбрать из контекстного меню пункт Тип запроса/Обновление.
3. Выбрать поле Стоимость обучения и ввести в него с помощью Построителя выраженийв строку Обновление выражение: [Стоимость обучения]*1,5.
4. Выполнить запрос и сохранить его, присвоив имя Запрос на обновление.
Задание 11.Составить запрос на обновлениебазы данных. Необходимо создать запрос, при выполнении которого произойдет уменьшение стоимости обучения по двум специальностям на 10%.
Задание 12.Составить запрос на создание новой таблицы
Экзаменационная ведомость. Необходимо сконструировать запрос, при выполнении которого можно будет создавать заполненные данными таблицы со следующими столбцами:
· Номер группы;
· Код дисциплины;
· Фамилия студента;
· № зачетной книжки.
Отдельные таблицы должны быть созданы для каждой группы студентов, имеющейся в базе данных, и для выбранной дисциплины. Поэтому следует предусмотреть ввод соответствующих условий как параметров.В дальнейшем эти таблицы будут использоваться для ввода результатов экзаменов.
Предварительно необходимо дополнить базу данныхеще двумя таблицами Дисциплина и Вспомогательная.
Таблица Дисциплинадолжна иметь следующий состав полей:
· Код дисциплины - ключевое поле, длинное целое;
· Наименование дисциплины - текстовое поле, 30 символов;
· Лекции (часов) - числовое ноле, целое;
· Практика (часов) - числовое поле, целое;
Ввести в таблицу Дисциплина 5-6 строк с различными кодами и наименованиями дисциплин.
В таблицу Вспомогательная включить только одно поле: Оценка - числовое, байтовое, необязательное.
Ввести в таблицу Вспомогательная одну запись, причем значение поля Оценка не заполнять.
Технология выполнения:
1. Создать с помощью конструкторановый запрос. Выбрать в качестве исходных таблиц - Студент, Дисциплина и Вспомогательная.
2. Указать тип запроса, выполнив команду на инструментальной панели Создание таблицы.Присвоить таблице имя Ведомость 1.
Рисунок 8.
3. Ввести в бланк запроса поля:
· Номер группы;
· Код дисциплины;
· Наименование дисциплины;
· Фамилия;
· № зачетки;
· Оценка
4. Ввести для поля Номер группы параметрическое условие отбора: [Введите номер группы: ]
5. Ввести для поля Код дисциплины параметрическое условие отбора: [Введите код дисциплины: ]
6. С использованием запроса создать 6 ведомостей: по двум дисциплинам для каждой из 3-х групп. Номера групп и коды дисциплин задавать в окне ввода параметров. Присвоить созданным таблицам имена Ведомость 1, Ведомость 2 и т.д.
Замечание
1. Поскольку при повторном использовании запроса на создание таблицы ранее созданная таблица удаляется необходимо перед созданием новой таблицы переименовывать ранее созданную таблицу. Для переименования необходимо:
· установить вкладку базы данных Таблицы;
· выделить исходную таблицу и вызвать правой кнопкой мыши контекстное меню;
· выполнить пункт Переименовать.
2. При создании ведомостей для всех трех групп необходимо выбирать один и тот же набор из двух дисциплин (например, каждая из трех групп сдает Дисциплину 1 и Дисциплину 2).
3. Заполнить созданные таблицы сведениями об оценках, полученных студентами при сдаче экзаменов.
Задание 13.Составить запрос на добавление записей из одной таблицы в другую.Объединить с помощью такого запроса все заполненные экзаменационные ведомости в одну, назвав ее, например, Общая ведомость.
Технология выполнения:
1. Создать в окне базы данных на вкладке Таблицы копию таблицы Ведомость 1 и заменить ее имя на Общая ведомость (щелчок правой клавишей по имени таблицы и вызов соответствующей команды из контекстного меню).
2. Создать с помощью конструкторановый запрос. Выбрать в качестве исходной таблицу Ведомость 2.
3. Указать тип запроса, выполнив команду на инструментальной панелиДобавление.В окне Добавление ввести имя таблицы Общая ведомость, к которой должны добавляться строки исходной таблицы.
4. Ввести в строку Поле бланка запроса все поля таблицы Ведомость 2.
5. Закрыть запрос, присвоив ему имя Запрос на добавление.
6. Выполнить запрос и просмотреть таблицу Общая ведомость, которая должна пополниться записями из таблицы Ведомость 2. 1. Временно переименовывая другие ведомости в Ведомость2, добавить их содержимое в Общую ведомость.
Задание 14.Составить параметрический запрос на удаление сведений из таблицыОбщая ведомость о студентах одной из групп по заданной дисциплине.
Технология выполнения:
1. Создать с помощью конструкторановый запрос. Выбрать в качестве исходной таблицу Общая ведомость.
2. Указать тип запроса, выполнив команду ЗАПРОС/Удаление.
3. Ввести в бланк запроса поля Номер группы и Код дисциплины.
4. Ввести в строку Условие отбора соответственно для каждого из полей параметрические условия: [Введите номер группы:] и [Введите код дисциплины:]
5. Закрыть и сохранить запрос под именем Запрос на удаление.
6. Выполнить запрос и просмотреть результаты его выполнения.
7. Воспользовавшись таблицами Ведомость 1 - Ведомость 6 и Запросом на добавление добавить в Общую ведомость удаленную часть.
Контрольные вопросы:
1. Какие отношения используются для связи таблиц?
2. Что называется Ключевым полем? Как задать ключевое поле?
3. Поясните назначение опций Обеспечение целостности данных, Каскадное обновление связанных полей и Каскадное удаление связанных полейв окне Изменение связей.
4. Как можно удалить связь между таблицами?
5. Как можно отсортировать данные по нескольким полям?
6. Что называется запросом?
7. Какими способами можно включить поля таблиц в запрос?
8. Каким образом можно добавить в бланк запроса строку Групповые операции.
9. Какие типы запросов на изменение Вы знаете? Для чего они используются?
10. На какие группы можно разделить все запросы?
11. Опишите технологию создания параметрического запроса?