Задание СУБД «Магазин» (pl/sql)

Текст задания:

  1. Создайте Базу Данных  для магазина. Структура её должна обеспечить получение информации в следующих разрезах:

—  список товаров  с указанием цены;

—  список категорий товаров с количеством видов товаров в заданной категории. Имеется в виду не запасы на складе, а количество видов товаров в категории. Например, швейные машины —  3 шт. (это швейные машины Zinger M1,  Zinger M2, Чайка).

2.  Напишите запрос на получение информации вида швейные машины – 3  шт., микроволновые печи  — 7 шт.
Решение:

  1. Запускаем APEX (найти инструкцию можно здесь http://www.vr-online.ru/blog/rabota-s-lokalnoj-bazoj-dannyh-oracle-xe-6722) .

Для создания базы данных (таблиц) необходимо зайти в раздел SQL Workshop, затем в подраздел Object Browser, нажать Create  и выбрать объект Table (подробное описание см. здесь http://www.vr-online.ru/blog/rabota-s-lokalnoj-bazoj-dannyh-oracle-xe-6722)

Создадим таблицы:

Cat (таблица будет содержать id и категорию товара)

image001

Tovar (содержит id, товар, цену товара)

image003

 Svod (будет содержать id, id категории, id товара). Эта таблица по сути будет объединять в себе таблицы CAT и TOVAR.

image005

Связь между таблицами показана на схеме ниже:

image007

Затем вставим строки в таблицы. Это можно сделать следующими способами:

Способ 1. Нажать вкладку Data, выбрать InsertRow, заполнить все поля, кроме поля «id».

image009

image011

image013

После заполнения нажать Create.

Таким же образом добавить остальные строки.

Примечание:

  •  для удаления строки необходимо, находясь во вкладке Data, нажать в таблице в удаляемой строке на                                значок в столбце EDIT.

 

Способ 2. Зайти в раздел SQL Workshop, затем в подраздел SQL Commands, указать максимальное значение строки (Rows-100000), записать команду следующего вида:

INSERT INTO имя таблиц (имя столбцов через запятую)

VALUES (значения через запятую);

По окончанию нажимать Run.

Примечания:

  •   знак «;» ставится в конце строки, если добавляются несколько строк сразу;
  •    в кавычках вставляются строковые символы, числовые символы вставляются без кавычек.

Добавим строки в таблицы:

[cc lang=»plsql» tab_size=»2″ line_numbers=»false» no_links=»false»]

INSERT INTO CAT (CATEGORIA) VALUES (‘Швейные машины’);
INSERT INTO CAT (CATEGORIA) VALUES (‘Микроволновые печи’);
INSERT INTO TOVAR (TOVAR,CENA) VALUES (‘SM KL56445B’, 16000);
INSERT INTO TOVAR (TOVAR,CENA) VALUES (‘SM BJMKLLY’, 12345);
INSERT INTO TOVAR (TOVAR,CENA) VALUES (‘SM BJMKLLY’, 17000);
INSERT INTO TOVAR (TOVAR,CENA) VALUES (‘SM SDRVGJ’, 5680);
INSERT INTO TOVAR (TOVAR,CENA) VALUES (‘SM JKMJ’, 13000);
INSERT INTO TOVAR (TOVAR,CENA) VALUES (‘SM DFG345F’, 13500);
INSERT INTO TOVAR (TOVAR,CENA) VALUES (‘SM 4562379G’, 15000);
INSERT INTO SPISOK (TOVAR,CENA) VALUES (‘SM DJ’, 15050);
INSERT INTO SPISOK (TOVAR,CENA) VALUES (‘SM DGHKL’, 11000);
INSERT INTO SPISOK (TOVAR,CENA) VALUES (‘SM TYUUIOOP’, 12500);
INSERT INTO SPISOK (TOVAR,CENA) VALUES (‘SM HHHHHHHH’, 6000);
INSERT INTO SPISOK (TOVAR,CENA) VALUES (‘SM KKNBBFFRT’, 6940);
INSERT INTO SPISOK (TOVAR,CENA) VALUES (‘SM HOZBIT’, 5976);
INSERT INTO SPISOK (TOVAR,CENA) VALUES (‘SM LASTOCHKA’, 3900);
INSERT INTO SPISOK (TOVAR,CENA) VALUES (‘SM GHJKLLB’, 4500);
INSERT INTO SPISOK (TOVAR,CENA) VALUES (‘ZANUSHL15’, 275610);
INSERT INTO SPISOK (TOVAR,CENA) VALUES (‘ZANUSSI’, 32620);
INSERT INTO SPISOK (TOVAR,CENA) VALUES (‘ZANUSSIJKL’, 30200);
INSERT INTO SPISOK (TOVAR,CENA) VALUES (‘FATON’, 35210);
INSERT INTO SPISOK (TOVAR, CENA) VALUES(‘Zil’, 25000);
INSERT INTO SPISOK (TOVAR, CENA) VALUES(‘Atlant’, 15750);
INSERT INTO SPISOK (TOVAR, CENA) VALUES(‘Samsung2’, 17500);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (2, 14);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (2, 16);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (2, 17);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (2, 20);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (2, 21);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (2, 22);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (2, 24);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (2, 27);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (2, 26);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (2, 25);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (2, 23);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (2, 19);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (2, 18);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (2, 15);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (1, 8);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (1, 3);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (1, 2);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (1, 13);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (1, 11);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (1, 6);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (1, 5);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (1, 1);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (1, 7);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (1, 12);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (1, 10);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (1, 9);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (1, 8);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (1, 7);
INSERT INTO SVOD (CAT_ID, TOVAR_ID) VALUES (1, 4);
[/cc]

Примечания:

  •  Проверить, все ли строки добавлены в таблицу, можно, перейдя в раздел Data  в Object Browser.
  •  Для редактирования/обновления строки используется следующая команда: UPDATE имя таблицы SET  имя столбца = новое значение, имя столбца = новое значение WHERE ID = условие отбора, т.е. значение ID строки, которую необходимо редактировать/обновить

              Пример:
[cc lang=»plsql» tab_size=»2″ line_numbers=»false» no_links=»false»]
UPDATE SPISOK SET TOVAR=’AZIMUT’, CENA=5320 WHERE ID=6
[/cc]

  • Для удаления строки используется команда:  DELETE FROM имя таблицы WHERE ID = условие отбора, т.е. значение ID строки, которую необходимо удалить

             Пример:
[cc lang=»plsql» tab_size=»2″ line_numbers=»false» no_links=»false»]
DELETE FROM SVOD WHERE ID=30
[/cc]

База данных создана.

2.  Напишем запросы (в подразделе SQL Commands раздела SQL Workshop):

[cc lang=»plsql» tab_size=»2″ line_numbers=»false» no_links=»false» escaped=»true»]
SELECT CATEGORIA, TOVAR, CENA    //выбрать данные из столбцов CATEGORIA, TOVAR, CENA
FROM CAT    //из
JOIN SVOD ON CAT.ID = SVOD.CAT_ID  //соединить таблицу CAT с таблицей SVOD по условию: ID таблицы CAT и CAT_ID таблицы SVOD
JOIN TOVAR ON TOVAR.ID = SVOD.TOVAR_ID  //соединить таблицу TOVAR с таблицей SVOD по условию: ID таблицы TOVAR и TOVAR_ID таблицы SVOD
WHERE CATEGORIA = ‘Швейные машины ’  //условие отбора
AND ROWNUM <=3  //псевдостолбец для ограничения количества выводимых данных в запросе
UNION   //объединение результатов запросов в единую таблицу
SELECT CATEGORIA, TOVAR, CENA    //выбрать данные из столбцов CATEGORIA, TOVAR, CENA
FROM CAT    //из
JOIN SVOD ON CAT.ID = SVOD.CAT_ID  //соединить таблицу CAT с таблицей SVOD по условию: ID таблицы CAT и CAT_ID таблицы SVOD
JOIN TOVAR ON TOVAR.ID = SVOD.TOVAR_ID  //соединить таблицу TOVAR с таблицей SVOD по условию: ID таблицы TOVAR и TOVAR_ID таблицы SVOD
WHERE CATEGORIA = ‘Микроволновые печи’  //условие отбора
AND ROWNUM <=7  //псевдостолбец для ограничения количества выводимых данных в запросе
[/cc]

Результат запросов выводится  в подразделе Results:

 image015

 

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *