Изучение средств быстрого поиска информации в базе данных и получение ответов на разнообразные запросы в среде FoxPro

Страницы работы

Содержание работы

Министерство образования и науки РФ

Новосибирский государственный технический университет

Кафедра ВТ

Лабораторная работа №5

по дисциплине «Базы данных»

Вариант 10

Группа: АМ-411

Студент: Гребенникова М.Ю.

Преподаватель: Трошина Г.В.

                                                            Новосибирск, 2007

Цель работы: Изучить средства быстрого поиска информации в базе данных и получение ответов на разнообразные запросы в среде FoxPro. Изучение конструктора запросов FoxPro. Научиться создавать запросы любого уровня сложности, производить различные вычисления над полями, выбираемыми из таблиц, осуществлять группировку полей запроса.

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

Индивидуальное задание: Выполнить запросы: вывод минимального, максимального и среднего значения возраста для студентов 1 и 3 курсов факультета ФТФ. Вывод фамилий студентов, получающих стипендию до 300 рублей, кроме обучающихся на 2 курсе факультетов РЭФ и АВТ. Вывод фамилий всех студентов, кроме обучающихся на факультетах ФТФ и ФЭН. Выборка фамилий всех студентов, обучающихся на 1 курсе факультетов АВТ и РЭФ.

Для  выполнения данной работы добавим к проекту еще 2 таблицы (рис.1): facult & stipend, хранящие данные о факультетах и размерах стипендий, соответственно.

Рис.1  Структура БД

Рис.2 Запросы к БД

  Кнопки «Студенты», «Факультеты», «Стипендия» предназначены для  вывода на экран содержимого соответствующих таблиц. Кнопка «Общая таблица» объединяет все вышеназванные таблицы:

SELECT biblio.фамилия, biblio.имя, biblio.отчество, biblio.дата_рождения,;

  facult.факультет, biblio.группа, biblio.курс,;

  biblio.номер_билета, stipend.стипендия, biblio.учебник, biblio.автор, biblio.стоимость;

FROM  bibl!biblio;

INNER JOIN bibl!stipend ON biblio.id_stipend = stipend.id_stipend;

INNER JOIN bibl!facult ON biblio.id_faculty = facult.id_facult

Рис.3 Результат объединения таблиц

Запрос №1: Выборка фамилий всех студентов, обучающихся на 1 курсе факультетов АВТ и РЭФ.

select фамилия, имя, отчество, курс,facult.факультет;

from biblio;

INNER JOIN bibl!facult ON biblio.id_faculty = facult.id_facult;

where (курс = 1) and (facult.факультет = 'АВТ' or facult.факультет = 'РТФ')

Рис.4 Запрос №1

Запрос №2: Вывод фамилий всех студентов, кроме обучающихся на факультетах ФТФ и ФАМ.

select фамилия, имя, отчество,facult.факультет;

from biblio;

INNER JOIN bibl!facult ON biblio.id_faculty = facult.id_facult;

where  not (facult.факультет = 'ФАМ' or facult.факультет = 'ФТФ')

Рис.5 Запрос №2

Запрос №3: Вывод фамилий студентов, получающих стипендию до 300 рублей, кроме обучающихся на 2 курсе факультетов РТФ и АВТ.

SELECT biblio.фамилия, biblio.имя, biblio.отчество, biblio.дата_рождения,;

  facult.факультет, biblio.группа, biblio.курс,;

  biblio.номер_билета, stipend.стипендия, biblio.учебник, biblio.автор, biblio.стоимость;

FROM  bibl!biblio;

INNER JOIN bibl!stipend ON biblio.id_stipend = stipend.id_stipend;

INNER JOIN bibl!facult ON biblio.id_faculty = facult.id_facult;

where  (not(biblio.курс = 2)  and not(facult.факультет = 'АВТ' or facult.факультет = 'РТФ')) and (stipend.стипендия < 300)

Рис.5 Запрос №3

Вывод минимального значения возраста для студентов 1 и 3 курсов факультета ФТФ:

SELECT  (year(date()) - max(year(biblio.дата_рождения))) as "Min_возраст_ФТФ";

FROM  bibl!biblio;

INNER JOIN bibl!facult ON biblio.id_faculty = facult.id_facult;

WHERE (facult.факультет = 'ФТФ') and (курс = 1 or курс = 3)

Рис.6 Минимальный возраст студентов 1 и 3 курсов факультета ФТФ.

Вывод максимального значения возраста студентов 1 и 3 курсов факультета ФТФ:

SELECT  (year(date()) - min(year(biblio. дата_рождения))) as "Max_ возраст_ФТФ ";

FROM  bibl!biblio;

INNER JOIN bibl!facult ON biblio.id_faculty = facult.id_facult;

WHERE (facult. факультет = 'ФТФ') and (курс = 1 or курс = 3)

Рис.7 Максимальный возраст

Вывод среднего значения возраста студентов 1 и 3 курсов факультета ФТФ:

SELECT  (year(date()) - avg(year(biblio. дата_рождения))) as "Max_ возраст_ФТФ ";

FROM  bibl!biblio;

INNER JOIN bibl!facult ON biblio.id_faculty = facult.id_facult;

WHERE (facult. факультет = 'ФТФ') and (курс = 1 or курс = 3)

Рис.7 Средний возраст студентов

Работа с конструктором запросов

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

Выборка фамилий всех студентов, обучающихся на 1 курсе факультетов АВТ и РТФ.

Откроем окно конструктора запросов и добавим в него таблицы Biblio и Facult, при этом устанавливая связь между ними (рис.8). Во вкладке Fields выберем поля, которые будут отображаться в запросе и с помощью команды ADD перенесем их в область Selected Fields.

Рис. Окно конструктора запросов

Во вкладке Filter введем условия, в соответствии с которыми будут выводиться данные (рис.8). В нашем случае это  следующие условия: курс = 1, факультет = «АВТ» or «РТФ»

Рис.8 Вкладка Filter

На панели инструментов Query Designer  выберем кнопку SQL. Это даст нам возможность посмотреть  код.

SELECT Biblio.фамилия, Biblio.имя, Biblio.отчество, Biblio.курс,;

  Facult.факультет;

 FROM  bibl!biblio INNER JOIN bibl!facult ;

   ON  Biblio.id_faculty = Facult.id_facult;

 WHERE Biblio.курс = 1;

   AND Facult.факультет = "АВТ";

   OR (Facult.факультет = "РТФ");

 ORDER BY Biblio.фамилия

Рис. 9 Результат выполнения запроса

Похожие материалы

Информация о работе

Предмет:
Базы данных
Тип:
Отчеты по лабораторным работам
Размер файла:
204 Kb
Скачали:
0