Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ud / lab1

.docx
Скачиваний:
5
Добавлен:
09.04.2015
Размер:
512.84 Кб
Скачать

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

Московский государственный университет печати имени Ивана Фёдорова

Кафедра «Медиасистемы и технологии»

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

По дисциплине «Управление данными»

Выполнил: студент группы ДЦИТД 4-1 Ананьев Ф.С.

Проверил: старший преподаватель Куракин П.В.

Москва 2012 г.

Постановка задачи

В ходе выполнения лабораторной нужно освоить работу с базами данных в среде DreamCoder, а именно научиться создавать базы данных и таблицы в них. Нужно научиться делать запросы, в том числе с использованием группировочного оператора GROUP BY, в том числе с использованием встроенных функций MAX(), MIN(), SUM(), в том числе с использованием оператора JOIN. Нужно научиться изменять базу данных с помощью запросов.

Ход выполнения

В первую очередь я создал таблицу lab_base:

Далее я создал таблицу salespeople с полями:

  • Идентификатора продавца snum типа INT,

  • Имени продавца sname типа TEXT,

  • Города продавца city типа TEXT,

  • Комиссионных продавца comm типа DECIMAL.

Поле cnum я выбрал в качестве первичного ключа этой таблицы.

Я заполнил таблицу данными с помощью запроса типа INSERT INTOVALUES:

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

Наконец, я создал таблицу orders с заказами покупателей продавцам, в которой предусмотрел поля идентификатора заказа, даты заказа, стоимости, идентификатора покупателя, идентификатора продавца; после это я заполнил таблицу следующим образом:

Далее я обратился к таблице с рядом запросов:

Так выглядит текст и результат запроса, выбирающего заказы за июнь 2007 года стоимостью более 3400 рублей:

Так выглядит текст и результат запроса, выдающего информацию о покупателях, обслуживаемых продавцами с комиссионными более 0,12:

Так выглядит текст и результат запроса, выдающего список покупателей с рейтингом более 100, проживающих не в Нижнем Новгороде:

Так выглядит текст и результат запроса, выдающего для каждого покупателя наибольшую стоимость его заказа:

Запрос отличен от того, который указан в методическом пособии:

SELECT max(amt), customers.* FROM orders, customers WHERE customers.cnum = orders.cnum GROUP BY amt DESC;

Отличен он по той причине, что запрос из методического пособия создает две записи в выходной таблице для Антона, то есть выдаёт не наибольшую для него стоимость заказа, а стоимости обоих его заказов.

Так выглядит текст и результат запроса, выдающего для каждого покупателя наименьшую стоимость его заказа:

Запрос отличен от того, который указан в методическом пособии:

SELECT min(amt), customers.* FROM orders, customers WHERE customers.cnum = orders.cnum GROUP BY amt DESC;

Отличен он по той причине, что запрос из методического пособия создает две записи в выходной таблице для Антона, то есть выдаёт не наименьшую для него стоимость заказа, а стоимости обоих его заказов.

Так выглядит текст и результат запроса, выдающего итоги по сумме заказов на каждый день:

Так выглядит текст и результат запроса, выдающего даты заказов и максимальную стоимость заказов за этот день:

Так выглядит текст и результат запроса, выдающего даты заказов и количество заказов за этот день:

Так выглядит текст и результат запроса, выдающего список городов и максимальный рейтинг покупателей в городе:

Так выглядит текст и результат запроса, выдающего количество заказов у продавцов:

Так выглядит текст и результат запроса, выдающего список покупателей с рейтингом выше среднего:

Так выглядит текст и результат запроса, выдающего имя покупателя с максимальным рейтингом:

Так выглядит текст и результат запроса, выдающего список заказов с фамилиями покупателей и продавцов:

Так выглядит текст и результат запроса, выдающего список продавцов, имеющих покупателей с рейтингом более 100:

Запрос отличен от того, который написан в методическом пособии:

SELECT salespeople.sname, customers.* FROM salespeople, customers WHERE salespeople.snum = customers.snum AND customers.rating > 100;

Модифицированный запрос и исправляет ошибку, в результате которой записей с Максимом система выдавала две из-за наличия у него двух покупателей с рейтингом более 100. В условии запроса же указывается необходимость вывода не более чем одной записи для одного продавца.

Так выглядит текст и результат запроса, выдающего фамилии покупателей, обслуживаемых продавцами с комиссионными более 0,11, с выводом фамилий продавцов, комиссионных продавцов и рейтингов покупателей:

Так выглядит текст и результат запроса, выдающего суммы стоимостей заказов по продавцам:

Так выглядит текст и результат запроса, выдающего суммы стоимостей заказов по покупателям:

Далее я написал несколько запросов, изменяющих данные таблиц.

Так выглядит результат запроса, увеличивающего комиссионные на 0,01 всем продавцам, имеющим заказы:

Так выглядит результат запроса, увеличивающего комиссионные на 0,02 всем продавцам в нижнем Новгороде:

Так выглядит результат запроса, устанавливающего comm=0.1 всем продавцам, не имеющим заказов:

Вывод

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

Соседние файлы в папке ud