Сибирский государственный университет путей сообщения
Практика Система управления базами данных Access 97Работа 4. Формирование сложных запросов

РАБОТА 4. ФОРМИРОВАНИЕ СЛОЖНЫХ ЗАПРОСОВ

КРАТКАЯ СПРАВКА

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

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

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

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

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

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

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

ЗАДАНИЕ

 1.Разработайте запрос с параметрами о студентах заданной группы, в котором при вводе в окно параметров номера группы (в примере это 151 или 152) на экран должен выводиться состав этой группы. 

2. Создайте запрос, в котором выводятся оценки студентов заданной группы по заданной дисциплине.

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

4. Разработайте запрос на увеличение на 10% заработной платы тех преподавателей, кто получает менее 500 руб.

5. Создайте запрос на удаление отчисленных студентов.

6. Разработайте запрос на создание базы данных отличников.

7. Для всех созданных вами запросов разработайте формы.

ТЕХНОЛОГИЯ РАБОТЫ

1.     Для создания запроса с параметрами о студентах заданной группы:

  • откройте вкладку Запросы',
  • щелкните по кнопке <Создать>;
  • в появившемся окне выберите Простои запрос и щелкните по кнопке <ОК>;
  • в появившемся окне в строке Таблицы/запросы выберите из списка таблицу Студенты;
  • перенесите все поля из окна "Доступные поля" в окно "Выбранные поля";                      
  • щелкните по кнопке <Далее>. Выводить надо все поля, поэтому еще раз щелкните по кнопке <Далее>;    
  • в появившемся окне введите имя запроса Группа;
  • щелкните по кнопке <Готово>. На экране появится таблица с данными запроса. Но вам надо, чтобы при выполнении запроса выяснялся номер группы. Для этого перейдите в режим конструктора;                
  • в строке Условия отбора для поля "Номер группы" введите фразу (скобки то же вводить): [Введите номер группы];
  • выполните запрос, щелкнув по кнопке на панели инструментов, или выполните команду Запрос, Запуск;
  • в появившемся окне введите 151 и щелкните по кнопке <ОК>. На экране появится таблица с данными о студентах 151-й группы;
  • сохраните запрос и закройте таблицу запроса.

2. Для создания запроса, в котором выводятся оценки студентов заданной группы по заданной дисциплине:

  • на вкладке Запросы щелкните по кнопке <Создать>;
  • выберите Простой запрос и щелкните по кнопке <ОК>;
  • выберите таблицу Студенты и перенесите поля "Фамилия", "Имя", "Отчество", "Номер группы" в окно "Выделенные поля" (выделяя нужное поле и щелкая по кнопке).

Внимание! В дальнейшем под фразой В таблице ... выберите поле ... будем понимать выбор таблицы, выбор поля и перенос его в окно "Выделенные поля".

  • в таблице Дисциплины выберите поле "Название дисциплины";
  • в таблице Оценки выберите поле "Оценки". Вы сформировали шесть полей запроса - они связаны между собой посредством схемы данных;
  • щелкните по кнопке <Далее>, затем в появившемся окне снова щелкните по кнопке <Далее>;
  • в появившемся окне введите имя запроса Оценки группы, затем щелкните по ячейке Изменение структуры запроса (в ней должна появиться черная точка) - это позволит сразу перейти в режим конструктора;
  • щелкните по кнопке <Готово>;
  • в строке Условия отбора для поля "Номер группы" введите фразу: [Введите номер группы], 
  • в строке Условия отбора для поля "Название дисциплины" введите фразу: [Введите название дисциплины]                           
  • выполните запрос;  
  • в первом появившемся окне введите 152, затем щелкните по кнопке <ОК>, во втором - введите Информатика и щелкните по кнопке <ОК>. На экране появится таблица со списком 152-й группы и оценками по информатике;
  • сохраните запрос и закройте таблицу запроса.

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

  • на вкладке Запросы щелкните по кнопке <Создать>;
  • выберите Простой запрос и щелкните по кнопке <ОК>;
  • выберите из таблицы Студенты поле "Номер группы";
  • выберите из таблицы Дисциплины поле "Название дисциплины" ;
  • выберите из таблицы Оценки поле "Оценки";
  • щелкните по кнопке <Далее>, затем в появившемся окне снова щелкните по кнопке <Далее>;
  • в появившемся окне введите имя запроса Дисциплины оценки группы;
  • щелкните по кнопке <Готово>;
  • сохраните запрос и закройте таблицу запроса. Теперь можно создавать перекрестный запрос. Для этого:
  • на вкладке Запросы щелкните по кнопке <Создать>;
  • выберите Перекрестный запрос и щелкните по кнопке <ОК>;
  • щелкните по ячейке Запросы, выберите Дисциплины оценки группы и щелкните по кнопке <Далее>;                        
  • выберите поле "Название дисциплины" и щелкните по кнопке <Далее>;
  • выберите поле "Номер группы" и щелкните по кнопке <Далее>;
  • выберите функцию AVG, т.е. среднее (она по умолчанию уже выделена), и щелкните по кнопке <Далее>;
  • введите название запроса Средние оценки и щелкните по кнопке <Готово>. Откроется таблица перекрестного запроса. Обратите внимание на то, что Access создает еще итоговое значение средних оценок по дисциплинам;
  • закройте таблицу запроса.

4. Для создания запроса на изменение заработной платы преподавателей:

  • на вкладке Запросы щелкните по кнопке <Создать>;
  • выберите Простой запрос;
  • в таблице Преподаватели выберите поле <3арплата>;
  • щелкните по кнопке <Далее>, затем в появившемся окне снова щелкните по кнопке <Далее>;
  • в появившемся окне введите имя запроса Изменение зарплаты;
  • щелкните по ячейке Изменение структуры запроса;
  • щелкните по кнопке <Готово>;
  • в строке Условия отбора введите <1>500;
  • откройте пункт меню Запрос и выберите Обновление;
  • в строке конструктора запроса Обновление в поле "Зарплата" введите:[Зарплата]* 1,1; 
  • выполните запрос, подтвердив готовность на обновление данных;
  • закройте запрос, подтвердив его сохранение;
  • откройте форму Преподаватели;
  • просмотрите изменение заработной платы у преподавателей, получающих меньше 500 р.;
  • закройте форму.

5. Для создания запроса на отчисление студента гр. 152 Перлова Кирилла Николаевича:

  • на вкладке Запросы щелкните по кнопке <Создать>;       
  • выберите Простой запрос;,
  • в таблице Студенты выберите поля "Фамилия", "Имя", "Отчество", "Номер группы";
  • щелкните по кнопке <Далее>, затем в появившемся окне снова щелкните по кнопке <Далее>;
  • в появившемся окне введите имя запроса Отчисленные студенты;
  • щелкните по ячейке Изменение структуры запроса;
  • щелкните по кнопке <Готово>;
  • в строке Условия отбора введите; в поле "Фамилия" - Перлов, в поле "Имя" - Кирилл, в поле "Отчество" - Николаевич, в поле "Номер группы" - 152;
  • откройте пункт меню Запрос и выберите Удаление;
  • просмотрите удаляемую запись, щелкнув по кнопке или выполнив команду Вид, Режим таблицы; если отчисляемый студент выбран правильно, то перейдите в режим конструктора и выполните запрос. Если условия отбора сделаны неправильно, измените их;
  • закройте запрос;
  • откройте форму Студенты и удостоверьтесь в удалении записи о студенте Перлове;
  • закройте форму.

6. Для создания запроса на создание базы данных отличников:

  • на вкладке Запросы щелкните по кнопке <Создать>;
  • выберите Простой запрос;
  • в таблице Студенты выберите поля "Фамилия", "Имя", "Отчество" и "Номер группы", а в таблице Оценки - поле "Оценки";
  • щелкните по кнопке <Далее>, затем в появившемся окне вновь щелкните по кнопке <Далее>;
  • в появившемся окне введите имя запроса Отличники;
  • щелкните по ячейке Изменение структуры запроса;
  • щелкните по кнопке <Готово>;

Примечание.Для создания этого запроса надо воспользоваться операцией группировки. Будем считать отличниками тех студентов, которые набрали за четыре экзамена 20 баллов. Операция группировки позволит просуммировать оценки студентов по всем экзаменационным дисциплинам.

  • для выполнения групповых операции щелкните на панели инструментов по кнопке или выполните команду Вид, Групповые операции;
  • в строке Групповые операции поля "Оценки" щелкните по ячейке Групповые операции. Откройте раскрывающийся список и выберите функцию SUM;
  • в строке Условия отбора поля "Оценки" введите 20;
  • просмотрите создаваемую базу, щелкнув по кнопке или выполнив команду Вид, Режим таблицы;
  • перейдите в режим конструктора;
  • выполните команду Запрос, Создание таблицы;
  • введите имя таблицы Студенты-отличники и щелкните по кнопке <ОК>;
  • подтвердите создание таблицы;
  • закройте с сохранением запрос;
  • откройте вкладку Таблицы;
  • откройте таблицу Студенты-отличники. Удостоверьтесь в правильности создания таблицы. Закройте таблицу.      

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