четверг, 23 апреля 2009 г.

Запросы

Работа любой системы управления базами данных сводится к управлению данными, к которому относятся: ввод, изменение, удаление и выборка. При этом выборка данных является наиболее часто используемым аспектом управления данными.
Результат выполнения выборки - итоговый набор данных, удовлетворяющих заданным условиям, состоящий из заголовков столбцов и записей данных. Этот набор должен содержать не менее одного столбца, а также ноль или более записей.
В СУБД MS Access выборка данных реализуется с помощью запросов, которые могут быть использованы не только для просмотра, но и для изменения и анализа данных. Кроме этого запрос может быть использован в качестве источников записей для форм, отчетов и страниц доступа к данным.
Для создания запроса необходимо в окне базы данных вызвать диалоговое окно Новый запрос (вызывается кнопкой Создать), в котором предлагаются следующие варианты создания нового запроса:
• Конструктор – наиболее мощный инструмент детального, «ручного» создания запросов, выходящих за рамки предлагаемых далее простейших вариантов;
• Простой запрос – автоматическое создание простого запроса для получения данных из одной или нескольких таблиц и/или запросов и отображение их в виде таблицы;
• Перекрестный запрос – автоматическое создание перекрестного запроса для расчетов и представления данных в структуре, облегчающей их анализ;
• Повторяющиеся записи - автоматическое создание запроса на поиск записей с повторяющимися значениями полей;
• Записи без подчиненных - автоматическое создание запроса на поиск записей в одной (главной) таблице, которые не имеют подчиненных записей в другой (подчиненной) таблице.
7.1. Автоматическое создание запросов с помощью мастеров
Использование мастеров при создании запросов позволяет быстро получить нужные данные для просмотра и анализа.
Задание 12. Создайте запрос СтудентыФакультета, выводящий номера зачетных книжек, фамилии, имена и отчества студентов с указанием подгруппы.
Это простой запрос, для него удобнее использовать мастер простых запросов, в котором на первом шаге выбирается таблица Студенты и поля, которые необходимо отобразить (НомерЗачетнойКнижки, Фамилия, Имя, Отчество, Подгруппа), а на втором шаге запросу присваивается имя – СтудентыФакультета.

Задание 13. Создайте запрос ПовторДатыПринятия, выводящий фамилии и имена преподавателей, принятых на работу в один день.
Для этого примените мастер создания запроса на повторяющиеся записи. Работа с ним состоит из следующих шагов:
1-й шаг – выбрать таблицу, по которой делается запрос;
2-й шаг – выбрать поле, по которому будет идти поиск повторяющихся значений (ДатаПриемаНаРаботу);
3-й шаг – выбрать те поля, которые должны выводиться в запросе (Фамилия, Имя, Отчество, ДатаПриемаНаРаботу);
4-й шаг – ввести имя запроса (ПовторДатыПринятия).
Задание 14 .Создайте запрос СтудентыБезГрупп, выводящий сведения о студентах, для которых нет сведений об их подгруппах.
Воспользуйтесь мастером создания запросов на записи без подчиненных. Запросы такого типа могут быть использованы для контроля согласованности введенных пользователями данных.
1-й шаг – выбрать таблицу, записи из которой нужно получить (Студенты);
2-й шаг – выбрать связанную таблицу с подчиненными записями (Подгруппы);
3-й шаг – указать поля, по которым связаны эти таблицы (КодПодгруппы и Подгруппа);
4-й шаг – выбрать поля из основной таблицы, которые должны войти в запрос (НомерЗачетнойКнижки, Фамилия, Имя, Отчество);
5-й шаг – ввести имя запроса (СтудентыБезГрупп).
Задание 15. Создайте запрос Должности, показывающий распределение преподавателей по должностям на кафедрах (рис. 12).
Для создания такого запроса удобно использовать мастер перекрестных запросов. Перекрестные запросы используют для расчетов и представления данных в структуре, облегчающей их анализ. Перекрестный запрос может подсчитывать сумму, среднее арифметическое, количество значений или выполнять другие статистические расчеты, после чего результаты группируются в виде таблицы по двум наборам данных, один из которых определяет заголовки столбцов, а другой – заголовки строк.
Работа с мастером состоит из следующих шагов:
1-й шаг – выбрать таблицу (Преподаватели), причем в качестве источника записей можно выбрать только одну таблицу или запрос;
2-й шаг – выбрать поля, значения которых будут заголовками строк (Кафедра);
3-й шаг – выбрать поля, значения которых будут заголовками столбцов (Должность);
4-й шаг – выбрать поле и функцию для вычисления результатов (поле – Фамилия, так как нужно подсчитать преподавателей, а функция – Число, так как нужно подсчитать их количество);
5-й шаг - ввести имя запроса Должности.

Задание 16. Удалите запрос Должности и создайте новый запрос таким образом, чтобы вместо кода кафедры выводилось ее полное название.
Указание. Для этого вначале необходимо создать простой запрос, содержащий поле НазваниеКафедры таблицы Кафедры и поля Фамилия и Должность таблицы Преподаватели, а затем выбрать этот запрос как источник данных для перекрестного запроса.
7.2. Создание запросов на выборку в режиме Конструктора
Режим конструктора является наиболее общим способом при создании запросов, выходящих за рамки описанных выше.
Вызов окна для создания запроса в режиме конструктора может быть выполнен двумя способами: нажатием кнопки Создать и дальнейшим выбором команды Конструктор либо выбором команды Создание запроса в режиме Конструктора в окне базы данных.
Для перевода ранее созданного запроса в режим конструктора достаточно выделить требуемый в списке запрос и выполнить команду Конструктор в меню окна базы данных.
Составление запроса в режиме Конструктора в общем случае включает в себя следующие этапы:
1) Выбор нужных таблиц и указание полей, которые будут использоваться в запросе (рис. 13).
Таблицы выбираются при создании запроса в режиме конструктора через окно Добавление таблицы. Это окно можно вызвать также либо командой главного меню Запрос/Отобразить таблицу…, либо кнопкой Отобразить таблицу на панели инструментов Конструктор запросов.
Если в результирующем наборе будут присутствовать поля таблиц, напрямую не связанных между собой, то в запрос должны быть включены все связующие их таблицы в соответствии со Схемой данных.
2) Описание вычисляемых полей и групповых операций над записями.
При создании запросов допускается создание вычисляемых полей, значения которых формируются в процессе выполнения арифметических операций над значениями других полей и использования набора специальных встроенных функций. Значения вычисляемых полей формируются каждый раз при выполнении запроса.
3) Установление условий отбора записей в результирующем наборе.
При записи условия отбора допустимо использование:
• Операций сравнения: >, <, >=, <=, <>, = (предполагается по умолчанию).
• Логических операций: Not, And, Or (можно использовать строку или, которая находится после строки Условие отбора в окне конструктора запроса).
• Функции Between, которая используется для указания диапазона значений в следующем формате: between значение1 and значение2. Например: between 01.12.2006 and 15.12.2006 – значения даты с 1 по 15 декабря 2006 года.
• Функции Like, которая определяет соответствие строкового выражения маске, для записи которой используются символы * (любое количество произвольных символов) и ? (один произвольный символ). Например, Like “Ф*” – текстовые значения, начинающиеся с «Ф».
4) Определение параметров отображения результатов выполнения запроса (направление сортировки полей, показ полей).
В режиме конструктора запросов направление сортировки поля указывается в строке Сортировка, а показ полей – установкой или снятием флажка в строке Вывод на экран.
5) Сохранение и ввод имени созданного запроса.

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

Задание 18. Измените созданный запрос Лекции таким образом, чтобы вся информация выводилась для указанной пользователем подгруппы.
Так как необходимо, чтобы пользователь вводил нужную ему подгруппу при запуске запроса, то простое указание конкретной подгруппы в строке Условие отбора в режиме конструктора не решит задачу. Здесь нужно в качестве условия отбора добавить в запрос параметр.
Для этого в строке Условие отбора вместо конкретного значения поля указывается в квадратных скобках приглашение на ввод значения: [Введите значение параметра] (в нашем случае, например, [Введите подгруппу]).

Задание 19. Создайте запрос ДисциплиныФакультета, содержащий сведения о наименовании дисциплины, количестве лекционных и практических часов, наименовании кафедры, к которой относится дисциплина. Кроме того, добавьте вычисляемое поле, в котором для дисциплины отображается ее общий объем (сумма лекционных и практических часов).
Здесь необходимо в режиме конструктора добавить в запрос вычисляемое поле. Для этого в свободном столбце запроса (после всех выбранных полей) в строке Поле введите имя нового поля, поставьте двоеточие, а затем введите формулу вручную или воспользовавшись Построителем выражений, который вызывается кнопкой Построить на панели инструментов.
В окне Построителя выражений (рис. 14), раскрывая структуру в списке объектов базы данных, можно выбрать поля таблиц и необходимые функции и поместить их в выражение двойным щелчком или кнопкой Вставить. Во избежание ошибок старайтесь выбирать нужные элементы из списка объектов базы данных, а не прописывать вручную их имена.
Примечание. Если имя вычисляемого поля сразу не было указано, то по умолчанию оно будет определено как Выражение1 и в дальнейшем по усмотрению пользователя может быть переименовано.
Задание 20. Создайте запрос ДеньРождения, выводящий список студентов, у которых день рождения в месяце, указанном пользователем.
• Для решения этой задачи необходимо в запросе использовать параметр, т. е. в строке Условие отбора предложить пользователю ввести месяц.
• Далее в строке Поле этого же столбца, вызвав Построитель выражений (рис. 15), необходимо получить месяц нужной даты, для чего можно применить функцию Month, единственным аргументом которой будет значение типа Дата/Время (в нашем случае это значение поля ДатаРождения). То есть итоговое выражение будет иметь вид: Month([ДатаРождения]).
В общем случае нужную функцию можно найти в группе Все или в соответствующем разделе (например, Текстовые, Дата/Время, Логические, Управления). Кнопкой Справка вызывается информация о назначении и использовании выделенной функции.
Задание 21. Измените запрос Лекции так, чтобы вместе с фамилией преподавателя вместо имени и отчества выводились его инициалы. Например, Иванов А. П.(Указание. Используйте текстовую функцию Left.)

Задание 22. Выведите список преподавателей, имеющих ученые степени, указав их фамилии и инициалы, должность, наименование кафедры и стаж работы. Сохраните под именем КандидатыИДоктора.

Разве могли вы мечтать, что можно играть в онлайн казино с вами дома? Теперь это реальность!
Дешево, быстро и надежно - тайм карты для различных онлайн игр