Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

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

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

Кафедра ВТ

Лабораторная работа №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 Результат выполнения запроса

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