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

4 курс (заочка) / Лабораторные работы / Лабораторная работа 2

.docx
Скачиваний:
29
Добавлен:
08.01.2022
Размер:
320.71 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНСТВО СВЯЗИ

ОРДЕНА ТРУДОВОГО КРАСНОГО ЗНАМЕНИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ БЮДЖЕТНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ СВЯЗИ И ИНФОРМАТИКИ

Кафедра «Интеллектуальные системы в управлении и автоматизации»

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

По дисциплине «Технологии баз данных»

Выполнила: Иванова Иоанна, студентка группы БСТ17xx

Цель работы

Освоить создание таблиц и формирование запросов в СУБД Oracle.

Задачи

Построить таблицы, заполнить их информацией, сформировать по 2 запроса следующих типов:

  • Выборка всех данных

  • Запрос с условием

  • Запрос с использованием синонимов

  • С использованием подзапроса

  • С использованием сортировки

  • С использованием группировки

  • С использованием конкатенации

  • Выборка неповторяющихся записей

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

  • С использованием NOT

  • С использованием WHERE

Запросы сохранить в виде представлений.

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

  1. Создание соответствующих таблиц.

Создадим таблицы CUSTOMER, PRODUCT, DEAL.

CREATE TABLE CUSTOMER(

customer_id NUMBER NOT NULL,

surname VARCHAR2(20) NOT NULL,

name VARCHAR2(20) NOT NULL,

patronym VARCHAR2(30),

phone_num VARCHAR2(16) NOT NULL,

city VARCHAR2(25) NOT NULL,

firm VARCHAR2(30),

CONSTRAINT customer_pk PRIMARY KEY (customer_id)

);

Рисунок 1. - Структура таблицы CUSTOMER.

CREATE TABLE PRODUCT (

product_id NUMBER NOT NULL,

manufacturer VARCHAR2(20) NOT NULL,

product_name VARCHAR2(30) NOT NULL,

price NUMBER NOT NULL,

type VARCHAR2(30),

CONSTRAINT product_pk PRIMARY KEY (product_id)

);

Рисунок 2. Структура таблицы PRODUCT.

CREATE TABLE DEAL (

deal_id NUMBER NOT NULL,

product_id NUMBER NOT NULL,

customer_id NUMBER NOT NULL,

quantity NUMBER NOT NULL,

ddate DATE NOT NULL ENABLE,

CONSTRAINT deal_pk PRIMARY KEY (deal_id )

);

ALTER TABLE DEAL ADD CONSTRAINT customer_fk FOREIGN KEY (customer_id)

REFERENCES CUSTOMER (customer_id);

ALTER TABLE DEAL ADD CONSTRAINT product_fk FOREIGN KEY (product_id)

REFERENCES PRODUCT (product_id);

Рисунок 3. Структура таблицы DEAL.

  1. Заполнение таблиц информацией

Создадим следующие последовательности:

Create Sequence CUSTOMER_SEQ Increment by 1 start with 1;

Create Sequence PRODUCT_SEQ Increment by 1 start with 10000;

Create Sequence DEAL_SEQ Increment by 1 start with 500;

Рисунок 4. - Таблица CUSTOMER.

Рисунок 5. - Таблица PRODUCT.

Рисунок 6. - Таблица DEAL.

  1. Построение запросов

  • Выборка всех данных

CREATE VIEW CUST_VIEW (customer_id, surname, name, patronym, phone_num, city, firm) AS

SELECT * FROM CUSTOMER;

Рисунок 7. Представление CUST_VIEW.

CREATE VIEW PROD_VIEW (product_id, manufacturer, product_name, price, type) AS

SELECT * FROM PRODUCT;

Рисунок 8. Представление PROD_VIEW.

  • Запрос с условием

CREATE VIEW MOSCUSTOMERS (customer_id, surname, name, patronym) AS

SELECT customer_id, surname, name, patronym

FROM CUSTOMER

WHERE CITY = 'MOSCOW';

Рисунок 10. Представление MOSCUSTOMERS.

CREATE VIEW 20K_TO_40K (product_id, manufacturer, product_name, type) AS

SELECT product_id, manufacturer, product_name, type FROM PRODUCT

WHERE PRICE BETWEEN 20000 AND 40000;

Рисунок 11. Представление 20K_TO_40K.

  • Запрос с использованием синонимов

CREATE SYNONYM C FOR CUSTOMER;

CREATE VIEW CUST_SYN (surname, phone_num, firm) AS

SELECT surname, phone_num, firm FROM C;

Рисунок 12. Представление CUST_SYN.

CREATE SYNONYM P FOR PRODUCT;

CREATE VIEW PROD_SYN (product_name, price, type) AS

SELECT product_name, price, type FROM P;

Рисунок 13. Представление PROD_SYN.

  • С использованием подзапроса

CREATE VIEW SUBQUERY (manufacturer, product_name, type) AS

SELECT manufacturer, product_name, type FROM PRODUCT

WHERE product_id IN (SELECT product_id FROM DEAL);

CREATE VIEW SUBQUERY_VIEW (product_name) AS

SELECT product_name FROM SUBQUERY;

CREATE VIEW SUBQUERY_VIEW2 (type) AS

SELECT type FROM SUBQUERY;

Рисунок 14. Представление SUBQUERY.

Рисунок 15. SUBQUERY_VIEW. Рисунок 16. SUBQUERY_VIEW2.

  • С использованием сортировки

CREATE VIEW MAN_SORT (manufacturer, product_name, price) AS

SELECT manufacturer, product_name, price FROM PRODUCT

ORDER BY MANUFACTURER;

Рисунок 17. Представление MAN_SORT.

CREATE VIEW PRICE_SORT (manufacturer, product_name, price) AS

SELECT manufacturer, product_name, price FROM PRODUCT

ORDER BY PRICE;

Рисунок 18. Представление PRICE_SORT.

  • С использованием группировки

CREATE VIEW MAN_TOTAL (manufacturer, total) AS

SELECT manufacturer, SUM(price) AS total FROM PRODUCT

GROUP BY manufacturer;

Рисунок 19. Представление MAN_TOTAL.

CREATE VIEW D_QUANTITY (product_id, total_q) AS

SELECT product_id, SUM(quantity) AS total_q FROM DEAL

GROUP BY product_id;

Рисунок 20. Представление D_QUANTITY

  • С использованием конкатенации

CREATE VIEW DEAL_BY_SURNAME (deal_id, surname, product_id) AS

SELECT DEAL.deal_id, CUSTOMER.surname, DEAL.product_id

FROM DEAL INNER JOIN CUSTOMER

ON DEAL.customer_id = CUSTOMER.customer_id;

Рисунок 21. Представление DEAL_BY_SURNAME.

CREATE VIEW DEAL_BY_PRODUCT (deal_id, product_name, product_id) AS

SELECT DEAL.deal_id, PRODUCT.product_name, DEAL.product_id

FROM DEAL INNER JOIN PRODUCT

ON DEAL.product_id = PRODUCT.product_id;

Рисунок 22. Представление DEAL_BY_PRODUCT.

  • Выборка неповторяющихся записей

CREATE VIEW NONREPEATABLE (manufacturer) AS

SELECT DISTINCT manufacturer FROM PRODUCT;

Рисунок 23. Представление NONREPEATABLE.

CREATE VIEW NONREPEATABLE2 (city) AS

SELECT DISTINCT city FROM CUSTOMER;

Рисунок 24. Представление NONREPEATABLE2.

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

CREATE VIEW MAX_PRICE (manufacturer, max_price) AS

SELECT manufacturer, MAX(price) AS max _ price FROM PRODUCT

GROUP BY manufacturer;

Рисунок 25. Представление MAX_PRICE.

CREATE VIEW MAX_QUANTITY (product_id, quantity) AS

SELECT product_id, MAX(quantity) AS quantity FROM DEAL

GROUP BY product_id;

Рисунок 26. Представление MAX_QUANTITY

  • С использованием NOT

CREATE VIEW PERSON (customer_id, surname) AS

SELECT customer_id, surname FROM CUSTOMER

WHERE firm IS NULL;

Рисунок 27. Представление PERSON.

CREATE VIEW FIRM (customer_id, surname) AS

SELECT customer_id, surname FROM CUSTOMER

WHERE firm IS NOT NULL;

Рисунок 28. Представление FIRM.

  • С использованием WHERE

CREATE VIEW K_SURNAME (customer_id, surname) AS

SELECT customer_id, surname FROM CUSTOMER

WHERE surname LIKE 'K%';

Рисунок 29. Представление K_SURNAME.

CREATE VIEW P_MODEL (product_id, product_name) AS

SELECT product_id, product_name FROM PRODUCT

WHERE product_name LIKE 'P%';

Рисунок 30. Представление P_MODEL.

Выводы

В процессе выполнения данной лабораторной работы были освоены навыки создания таблиц и построения запросов в СУБД Oracle.

Москва, 2020