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

4304 / Языки запросов к БД / Задания к лабораторным работам по ЯЗ к БД

.pdf
Скачиваний:
13
Добавлен:
27.02.2016
Размер:
300.55 Кб
Скачать

Задания к лабораторным работам по дисциплине «Языки запросов к базам данных»

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

Рабочее задание:

Для выполнения данной лабораторной работы студент должен создать таблицы и разместить их на сервере Oracle. С помощью dbForge Studio for Oracle заполнить таблицы данными. В этих таблицах должна содержаться информация о деятельности некоторой торговой фирмы, а именно: данные о сотрудниках, товарах, поставщиках товаров, клиентах и их заказах.

Схема базы данных на схеме (базу данных можно разработать через схему - проект или через команды):

STUD_KLIENTY

codklienta: INTEGER NOT NULL

gorod: varchar2(30) NOT NULL telefon: varchar2(15) NOT NULL nazvanie: VARCHAR2(50) NOT NULL

STUD_SOTRUDNIK

codsotr: INTEGER NOT NULL

Family: varchar2(30) NOT NULL Name: varchar2(25) NOT NULL Otch: varchar2(30) NOT NULL DataNaima: DATE NOT NULL

STUD_POSTAVCHIKY

codpost: INTEGER NOT NULL

nazvanie: varchar2(50) NOT NULL strana: varchar2(30) NOT NULL gorod: varchar2(30) NOT NULL telefon: varchar2(15) NOT NULL

STUD_ZAKAZ

codzak: INTEGER NOT NULL

codsotr: INTEGER NOT NULL (FK) codpost: INTEGER NOT NULL (FK) codklienta: INTEGER NOT NULL (FK) DataOrof: DATE NOT NULL DataDost: DATE NOT NULL DataVipol: DATE NOT NULL

STUD_TOVARY

codtov: INTEGER NOT NULL

naimenovanie: varchar2(50) NOT NULL edIzm: varchar2(15) NOT NULL dataVipuska: DATE NOT NULL

STUD_ZAKAZANO

kolvo: INTEGER NOT NULL codtov: INTEGER NOT NULL (FK) codzak: INTEGER NOT NULL (FK) cena: INTEGER NOT NULL skidka: INTEGER NOT NULL

STUD_OGID_TOV

dataOgidaetsy: DATE NOT NULL codpost: INTEGER NOT NULL (FK) codtov: INTEGER NOT NULL (FK) kolOgidaetsy: INTEGER NOT NULL

Рисунок 1 – фрагмент физической модели

Полный список таблиц по лабораторным работам:

STUD_KLIENTY STUD_POSTAVCHIKY STUD_SOTRUDNIK STUD_TOVARY STUD_ZAKAZ STUD_ZAKAZANO

STUD_OGID_TOV, где STUD_ - это псевдоним студента.

После разработки таблиц, добавить обновление поля скидки нулевым значением:

update ZAKAZANO set skidka=0;

1

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

Рабочее задание:

Разработка запросов на Select, Insert, Update, Delete.

Список запросов:

1.Вывести список товара (в разрезе поставщиков), дата выпуска которых не превышает 3-х лет.

2.Рассчитать стоимость каждого заказа с учетом имеющейся скидки.

3.Определить количество заказов у каждого поставщика.

4.Вычислить сроки выполнения каждого заказа.

5.Составить список не выполненных заказов с полной информацией.

6.В таблицу OGID_TOV с помощью команды Insert внести записи о товарах, которые по заказам должны быть доставлены в течение недели. Значение поля DataDost соответствует значению поля dataOgidaetsy, а значение поля kolvo соответствует значению поля kolOgidaetsy.

7.Составить список ожидаемого товара.

8.С помощью команды Update обновить поле цена на 25 рублей дополнительно к существующей цене на товары, стоимость которых меньше 100 рублей.

9.Определить город, чьи поставщики оформили больше всего заказов (применение Distinct).

10.Удалить из таблицы OGID_TOV записи о товарах, чья дата ожидания меньше текущей.

11.С помощью команды Update (отдельной командой, программным блоком - на выбор студента) обновить поле скидка в таблице ZAKAZANO: при наличии у поставщика более 5 заказов, скидка 5%.

12.Удалить записи о заказах, срок исполнения которых истек более 3-х

лет назад.

Варианты заданий для проверки усвоенных знаний:

Вариант №1

1.Обновить таблицу STUD_ZAKAZ добавлением столбца DataOtkaza и заполнить столбец данными в нескольких записях.

2.Определить самый популярный товар 2013 года.

3.Составить динамику заказов определенного клиента (год, месяц, количество заказов).

4.Добавить данные в таблицу STUD_OGID_TOV о товаре, который будет доставлен в течение 2-х дней.

2

Вариант №2

1.Обновить таблицу STUD_ZAKAZ добавлением столбца DataOtkaza и заполнить столбец данными в нескольких записях.

2.Определить заказ, на который было потрачено больше всего времени.

3.Вывести список клиентов, отказавшихся от заказа.

4.Добавить данные в таблицу STUD_OGID_TOV о товаре со скидкой.

Вариант №3

1.Обновить таблицу STUD_SOTRUDNIK добавлением столбца Commis.

2.Обновить столбец Commis значением 25 у тех сотрудников, которые оформили заказы в текущем месяце.

3.Вывести список городов, куда отправляется товар.

4.Добавить данные в таблицу STUD_OGID_TOV о товаре, дата выпуска которого заканчивается в текущем году.

Вариант №4

1.Обновить таблицу STUD_ZAKAZ добавлением столбца VremyZak.

2.Обновить столбец VremyZak вычисляемым значением (разница значений столбцов DataDost и DataOfor).

3.Вывести список товара, которым необходимо продлить сертификат.

4.Добавить данные в таблицу STUD_OGID_TOV о товаре, который был оформлен последним.

Вариант №5

1.Обновить таблицу STUD_POSTAVCHIKY добавлением столбца Status.

2.Обновить столбец Status значением (“постоянный”, “не постоянный”), в зависимости от длительности отношений с поставщиком (при работе с поставщиком более 2-х лет).

3.Вывести список товара, которым необходимо продлить сертификат.

4.Удалить записи из таблицы STUD_ZAKAZANO при значении цены более 1000 рублей.

Вариант №6

1.Обновить таблицу STUD_ZAKAZ добавлением столбца Opt и заполнить столбец данными ‘да’ или ‘нет’.

2.Составить номенклатуру товара по каждому поставщику.

3.Вывести список клиентов, оформивших более 10 заказов в текущем месяце.

4.Добавить данные в таблицу STUD_OGID_TOV об оптовом товаре.

3

Вариант №7

1.Обновить таблицу STUD_TOVARY добавлением столбца Partiy и заполнить столбец данными ‘да’ или ‘нет’.

2.Определить количество товара (в разрезе наименования) поставленного за весь период работы фирмы.

3.Применит UNION для таблиц STUD_KLIENTY, STUD_POSTAVCHIKY по столбцам nazvanie, gorod.

4.Добавить данные о товаре в таблицу STUD_OGID_TOV, который поставляется не партиями.

Вариант №8

1.Удалить заказы поставщика, который оформлял заказ более 1 года назад.

2.Обновить таблицу STUD_ZAKAZ столбцом Status и значениями «закрыт», если дата выполнения не пустая (или меньше текущей).

3.Подсчитать количество действующих заказов по каждому поставщику.

4.Определить самый популярный товар.

Вариант №9

1.Добавить данные о товаре в таблицу STUD_OGID_TOV, количество которого варьируется между 50 и 150 экземпляров.

2.Обновить таблицу STUD_ZAKAZ столбцом DataOkonPreten и вычисляемыми значениями (к столбцу дата выполнения добавить 7 дней).

3.Вывести поставщиков, по чьим заказам истек срок претензий.

4.Рассчитать сумму скидок по всем заказам поставщика за весь период (наименование поставщика, сумма скидок (учесть, что скидка – это процент от полной стоимости заказа).

Вариант №10

1.Обновить значения столбца gorod таблиц STUD_KLIENTY и STUD_POSTAVCHIKY с «г. Северодвинск» на «г. Северодвинск, Архангельской обл.».

2.Добавить данные о товаре в таблицу STUD_OGID_TOV, который будет доставлен из города «Архангельск».

3.Вывести товары, заказанные во втором месяце каждого года.

4.Определить самого постоянного клиента.

4

Лабораторная работа №3 Экспорт баз данных.

Цель работы: Научиться создавать базы данных в разных средах и экспортировать данные в другие форматы.

Рабочее задание:

Задание. 1. Создать базу данных в MS Access формата 2000, состоящую из таблиц, приведенных ниже.

Задание 2. Создать источник данных DSN для связи с сервером SQL server.

1)Открыть Меню Пуск \ Настройки \ Панель управления \ Администрирование \ Источники данных ODBC (Control Panel \ Administrative Tools \ Data Sources (ODBC).).

2)Вкладка User DSN (Пользовательский DSN).

3)Кнопка Add (Добавить).

4)Открывается окно: Создание источника данных для SQL server.

5)Ввести в окно «Имя» придуманное имя, например свою фамилию на латинском.

6)В окне Сервер введите 10.58.31.10. Нажать Далее.

7)Выбрать «проверка подлинности учетной записи SQL server» и

введите пользователя и пароль. Нажать Далее. Далее. Готово. Проверка подлинности. OK.

8)Откроется список всех имен пользователей. ОК. В результате будет установлено соединение с сервером SQL server.

9)Создать базу данных в базе в MS Access. Выбрать «Внешние данные» - «Базы данных ODBC» и по цепочке дойти до выбора источника. Выбрать свой (только созданный) источник. Ввести пользователя и пароль, выбрать из списка таблицу Timn_Stud.

10)Ввести в таблицу свои данные. Сохранить запись.

11)Перейти в окно диалога с сервером «SQL server». Произвести обновление данных. Открыть таблицу Timn_Stud и убедиться в том, что введенная запись в СУБД MS Access отражается в таблице на сервере.

Задание 3 (в MS Access).

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

2.Файл\Экспорт. Из контекстного открывающего списка выбрать

Базы данных ODBC (ODBC Databases).

3.В окне Экспорт указать (или подтвердить) имя таблицы, под каким она будет перемещена в среду в SQL server. OK.

4.Выбрать свой источник.

5.В следующем окне ввести данные: User Name, Password – которые были указаны при создании Пользователя в среде SQL server.

5

Рисунок 2 – подключение к SQL серверу

Таблицы для построения Базы данных в Access:

Табл. 1. Студенты

-ID студента (номер студенческого билета)

-ФИО студента

-Домашний телефон

-Номер группы

Табл.2. Сводная экзаменационная ведомость

-ID студента (внешний ключ из табл.1)

-Номер группы

-Оценка 1 (оценка по 1-ому экзамену) – пустое поле

-Оценка 2 (оценка по 2-ому экзамену) – пустое поле

Табл.3 Результаты сдачи экзамена по БД гр. 4206

-ID студента

-Оценка

Задание:

1.Задать структуры трех таблиц в СУБД MS Access.

2.Заполнить данными.

3.Перенести таблицы в SQL server.

4.Написать SQLзапрос для переноса данных из табл.3, 1 в табл.2.

6

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

Цель работы: изучить порядок составления запросов к БД, разработанной в среде MS Access (базу данных с данными взять у преподавателя).

Рабочее задание:

Запросы на основе одной таблицы:

Вывести наименование, телефон заказчиков

а) названия которых начинаются на “А” (рекомендуемый оператор LIKE) б) у которых нет телефонов (IS NULL)

в) телефоны которых начинаются на 35 (LIKE) Вывести наименования комплектующих:

г) остаток на складе которых больше 200 и меньше 800 (BETWEEN) д) минимальный запас которых больше 1000 (>)

е) которые являются материалами (значение поля: 2) ж) единица измерения которых метр з) остаток на складе меньше минимального запаса.

Запросы на основе нескольких таблиц:

Вывести наименование изделий собственного производства а) на которые выпущена спецификация б) в состав которых входит комплектующее болт Вывести наименование заказчиков в) покупающих клюзы

г) заказы которых еще не выполнены (>DATE()) д) заказы которых уже выполнены (<DATE())

е) сделавших заказ в 1996, 1999 годах (BETWEEN)

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

Цель работы: научиться составлять запросы, используя вычисляемые поля.

Рабочее задание:

Запросы с вычисляемыми полями.

Вывести наименования заказчиков:

а) располагающихся в Северодвинске (рекомендуемая функция InStr) б) оформивших заказ в январе-апреле 1999 года (BETWEEN)

в) заказы которых были выполнены в предыдущем месяце.

7

Вывести номера заказов, дату оформления, дату готовности и:

г) количество лет и месяцев, потребовавшихся на выполнение заказа

Вывести номера заказов, дату оформления, дату готовности для заказов:

д) оформленных в конкретном году (год оформления указать в качестве параметра)

е) оформленных определенным заказчиком (код заказчика указать в качестве параметра)

ж) которые будут готовы в текущем месяце.

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

Цель работы: научиться составлять запросы, используя групповые операции.

Рабочее задание:

а) общее количество комплектующих (деталей) для каждого изделия собственного производства, на которое выпущена спецификация; б) количество комплектующих для каждого изделия собственного производства по категориям деталь и материал;

в) общее количество комплектующих, необходимых для выполнения каждого заказа; г) количество заказов, оформленных по годам (отсортировать по годам);

д) вывести номер заказа, для которого необходимо самое большое количество комплектующих; е) вывести номер заказа, время на изготовление которого оказалось минимальным;

ж) количество заказов, оформленных каждым заказчиком; з) самое раскупаемое изделие собственного производства; и) среднее количество заказов в год.

8

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

Цель работы: изучить формы представления переменных в PL/SQL, скалярные типы данных, поддерживаемые языком PL/SQL, правила объявления переменных и способы объявления композитных данных в PL/SQL.

Рабочее задание:

1. Проверить выполнение работы блоков PL/SQL, текст которых приведен в пунктах А и B.

А. BEGIN DBMS_OUTPUT.enable;

DBMS_OUTPUT.put_line (‘Hello, world!’);

END;

B.DECLARE

PI CONSTANT REAL := 3.14159265359; Circumf REAL;

Area REAL;

Radius REAL := &Radius; BEGIN

Circumf := PI * Radius * 2.0; Area := PI * Radius ** 2;

DBMS_OUTPUT.put_line (‘Радиус = ’ | | TO_CHAR(Radius ) | |

‘ , Длина окружности =’ | |

TO_CHAR(Circumf) | |

‘ , Площадь = ’ | | TO_CHAR(Area));

END;

/

Задание на проверку полученных знаний

2.Разработать программу, запрашивающую адрес (город, улица) и выводящую только название улицы.

3.Разработать программу, выводящую значение последнего дня того месяца, которому принадлежит введенная пользователем дата.

4.Разработать программу, запрашивающую координаты X и Y двух векторов на плоскости и вычисляющую их скалярное произведение.

9

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

Цель работы:

Изучить правила ссылки на объявленную переменную в PL/SQL и научиться использовать в программах основные структуры управления: ветвление, итерацию и последовательность.

Рабочее задание:

1.Проверить и проанализировать выполнение работы блоков PL/SQL, текст которых приведен в пунктах А и B.

A.<<OUTER_BLOCK>> DECLARE

X NUMBER (6,-3); Y NUMBER (4,2); BEGIN

X := 10.0; <<INNER_BLOCK>> DECLARE

X NUMBER; BEGIN

X := OUTER_BLOCK.X; Y := 4;

DBMS_OUTPUT.put_line (‘X=’ || TO_CHAR(X)); DBMS_OUTPUT.put_line (‘Y=’ || TO_CHAR(Y));

END INNER_BLOCK; END OUTER_BLOCK;

B.<<OUTER_BLOCK>> DECLARE

X NUMBER (6,-3); Y NUMBER (4,2); BEGIN

X := 10.0; <<INNER_BLOCK>> DECLARE

X NUMBER; BEGIN

X := 8; Y := 4;

DBMS_OUTPUT.put_line (‘X_INNER=’ || TO_CHAR(X)); DBMS_OUTPUT.put_line (‘Y=’ || TO_CHAR(Y));

END INNER_BLOCK;

DBMS_OUTPUT.put_line (‘X_OUTER=’ || TO_CHAR(X));

10