Создание подзапросов. Создание и заполнение нескольких баз данных в разных областях

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

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

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

Федеральное агентство по образованию

Государственное образовательное учреждение

высшего профессионального образования

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


Лабораторная работа №6 «Создание подзапросов»

 по дисциплине «Базы данных» в среде Visual FoxPro 6.0

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

Факультет:   АВТ

Группа:         АМ-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'а.

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

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

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