Министерство образования и науки РФ
Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
Новосибирский государственный технический университет
Выполнил: Сероштан В.Ю. Преподаватель: Трошина Г.В.
Факультет: АВТ
Группа: АМ-411
Вариант: 5
Новосибирск, 2007 г.
Цель работы: Изучить средства быстрого поиска информации в БД и получения ответов на разнообразные вопросы в среде VFP. Изучение конструктора запросов VFP. Научиться создавать запросы любого уровня сложности, производить различные вычисления над полями, выбираемыми из таблиц, осуществлять группировку полей запроса.
Задание: Создать и заполнить несколько БД в разных областях, взяв за основу поля базы данных из лабораторной работы № 1, установить связи между ними. Выполнить выбор записи по диапазону значений для заданной БД. Провести вычисления итоговых значений. Осуществить выборку из нескольких таблиц. Использовать результаты запроса для создания диаграмм. Произвести упорядочение данных в запросе по нескольким полям. Организовать вывод результатов запроса в таблицу, на экран, в отчёт. Продемонстрировать приобретённые навыки построения многотабличных запросов. Одна таблица (минимально) должна содержать поля: факультет, идентификатор факультета в обязательном порядке, другая (минимально) курс, идентификатор факультета в обязательном порядке.
Вариант 5:
Созданный запрос «вывод минимального, максимального и среднего значения поля "возраст" для студентов 1 курса» использовать как подзапрос для следующих запросов:
· вывод фамилий студентов, получающих от 100 до 300 рублей для факультета АВТ;
· вывод фамилий всех студентов, кроме обучающихся на 3 курсе факультетов РТФ, ФАМ;
· выборка фамилий всех студентов 2 курса факультетов АВТ.
Рис.1 Форма с лабораторной работой №6
Текст подзапроса:
Подзапрос 1
Рис.2 подзапрос №1.
SELECT MAX(Inform.возраст), MIN(Inform.возраст),;
AVG(Inform.возраст);
FROM inform!inform INNER JOIN fakul ;
ON Inform.id_факульт = Fakul.id_факульт;
WHERE Inform.курс = "1"
Запрос 1
Рис.3 Запрос №1.
SELECT Inform.фамилия, Fakul.факультет, Inform.возраст, Inform.стипендия;
FROM inform!inform INNER JOIN fakul ;
ON Inform.id_факульт = Fakul.id_факульт;
WHERE Inform.стипендия BETWEEN 100 AND 300;
AND Fakul.факультет = "АВТ";
AND inform.возраст > (SELECT AVG(Inform.возраст);
FROM inform!inform INNER JOIN fakul ;
ON Inform.id_факульт = Fakul.id_факульт;
WHERE Inform.курс = "1");
ORDER BY Inform.фамилия DESC
Запрос 2
Рис.4 Запрос №.2
SELECT Inform.фамилия, Fakul.факультет, Inform.курс, Inform.возраст;
FROM inform!inform INNER JOIN fakul ;
ON Inform.id_факульт = Fakul.id_факульт;
WHERE (Inform.курс <> "3";
OR (Fakul.факультет NOT IN ("РТФ","ФАМ")));
AND inform.возраст > (SELECT AVG(Inform.возраст);
FROM inform!inform INNER JOIN fakul;
ON Inform.id_факульт = Fakul.id_факульт;
WHERE Inform.курс = "1");
ORDER BY Inform.курс
Запрос 3
Рис.5 Запрос №.3
SELECT Inform.фамилия, Fakul.факультет, Inform.курс, Inform.возраст;
FROM inform!inform INNER JOIN fakul ;
ON Inform.id_факульт = Fakul.id_факульт;
WHERE Inform.курс = "2";
AND Fakul.факультет IN ("АВТ","ФЕН");
AND Inform.возраст >= ( SELECT AVG(Inform.возраст);
FROM inform!inform INNER JOIN fakul ;
ON Inform.id_факульт = Fakul.id_факульт;
WHERE Inform.курс = "1");
ORDER BY Inform.курс
Структура базы данных
База данных включает основную таблицу «Студенты» и справочник «Факультеты». Связи типа «один ко многим» между справочниками и основной таблицей были установлены в окне Database Designer'a.
Рис.6 Структура базы данных.
Контрольный запрос
Вывести студентов имеющие книги издательства «наука» или «сибирь», обучающиеся во 2 или 7 корпусе у лекторов Иванова или Петрова, получающие стипендию больше чем средняя стипендия студентов обучающихся в аудитории с 301 по 320. Основной: кроме студентов 1 и 5 курсов факультетов АВТ и ФЛА.
Рис.7 Контрольный запрос.
SELECT Inform.фамилия, Fakul.факультет, Inform.курс, Inform.стипендия, Inform.книги, Inform.корпус_обуч, Inform.лектор;
FROM inform!inform INNER JOIN fakul ;
ON Inform.id_факульт = Fakul.id_факульт;
WHERE ((Fakul.факультет NOT IN ("АВТ","ФЛА"));
OR Inform.курс NOT IN ("1","5"));
AND (Inform.книги IN ("наука","сибирь"));
AND (Inform.корпус_обуч IN ("2","7"));
AND (Inform.лектор IN ("Иванов","Петров"));
AND inform.стипендия > (SELECT AVG(Inform.стипендия);
FROM inform!inform INNER JOIN fakul ;
ON Inform.id_факульт = Fakul.id_факульт;
WHERE Inform.аудитория between "301" and "320");
ORDER BY Inform.фамилия DESC
Выводы
Создание запросов с помощью языка SQL значительно облегчает работу с БД, позволяет выводить данные по различным критериям. Создание запросов на выборку и многотабличных запросов с помощью текстового редактора значительно удобнее, чем создание аналогичных запросов с помощью Designer'а.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.