
4304 / Языки запросов к БД / Задания к лабораторным работам по ЯЗ к БД
.pdf
Задания к лабораторным работам по дисциплине «Языки запросов к базам данных»
Лабораторная работа №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