Лабортаторные № 1-2
.docx
Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации
Ордена Трудового Красного Знамени
Федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики»
Кафедра «Интеллектуальные системы в управлении и автоматизации»
Отчет по лабораторным работам №1-2
по дисциплине «Технологии баз данных»
Выполнил: Кондратьев И.В
Студент группы БСТ1851
Лабораторная работа №1
Цель работы: знакомство с возможностями проверки работоспособности ORACLE-сервер. Создание БД. Приобретение навыков работы в SQL* Plus. Создание пользователя и настройка прав доступа.
Вход в систему.
Проверка сервера
Работа в командной строке SQL Plus
Лабораторная работа №2
Цель: создание таблиц и форматирование запросов в СУРБД Oracle.
Задачи: построить таблицы, заполнив их информацией, сформировать по 2 запроса следующих типов:
выборка всех данных
запрос с условием
запрос с использованием синонимов
с использованием подзапроса
с использованием сортировки
с использованием группировки
с использованием конкатенации
выборка неповторяющихся записей
с использованием агрегатных функций
с использованием NOT
с использованием WHERE
Запросы сохранить в виде представлений!
Создание таблиц CUSTOMERRS и ORDERRS, создание последовательностей ORDER_ID и CUSTOMER_ID
Create table CUSTOMERRS
(CUSTOMER_ID number(10) NOT NULL
,CUST_FIRST_NAME varchar2(20) NOT NULL
,CUST_LAST_NAME varchar2(20) NOT NULL
,CITY varchar2(20)
,AGE varchar2(20)
);
ALTER TABLE CUSTOMERRS
ADD CONSTRAINT CustomerrsSPK PRIMARY KEY (CUSTOMER_ID);
-------------------------------------------------------
Create table ORDERRS
(ORDER_ID number(10) NOT NULL,
CUSTOMER_ID number(10) NOT NULL,
ORDER_TOTAL number(8,2),
ORDER_TIMESTAMP date
);
ALTER TABLE ORDERRS ADD CONSTRAINT CustomerrsFK
FOREIGN KEY (CUSTOMER_ID) REFERENCES CUSTOMERRS;
--------------------------------------------------------
Create Sequence ORDER_ID Increment by 1 start with 1;
Create Sequence CUSTOMER_ID Increment by 1 start with 1;
------------------------------------------------------
Заполнение таблиц CUSTOMERRS и ORDERRS
INSERT INTO CUSTOMERRS
(CUSTOMER_ID, CUST_FIRST_NAME,CUST_LAST_NAME,CITY,AGE)
VALUES
(CUSTOMER_ID.NextVal,'Adeline', 'West', 'LA', 18);
INSERT INTO CUSTOMERRS
(CUSTOMER_ID, CUST_FIRST_NAME,CUST_LAST_NAME,CITY,AGE)
Values
(CUSTOMER_ID.NextVal,'Allegra', 'Soleil', 'LA', 23);
INSERT INTO CUSTOMERRS
(CUSTOMER_ID, CUST_FIRST_NAME,CUST_LAST_NAME,CITY,AGE)
Values
(CUSTOMER_ID.NextVal,'Fleur', 'Elliot', 'NY', 16);
INSERT INTO CUSTOMERRS
(CUSTOMER_ID, CUST_FIRST_NAME,CUST_LAST_NAME,CITY,AGE)
VALUES
(CUSTOMER_ID.NextVal,'Aurelia', 'West', 'NY', 32);
INSERT INTO CUSTOMERRS
(CUSTOMER_ID, CUST_FIRST_NAME,CUST_LAST_NAME,CITY,AGE)
Values
(CUSTOMER_ID.NextVal,'Adeline', 'Sage', 'NY', 19);
INSERT INTO CUSTOMERRS
(CUSTOMER_ID, CUST_FIRST_NAME,CUST_LAST_NAME,CITY,AGE)
VALUES
(CUSTOMER_ID.NextVal,' Daisy', 'Primrose', 'NY', 25);
------------------------------------------------------------------
INSERT INTO ORDERRS
(ORDER_ID, CUSTOMER_ID,ORDER_TOTAL,ORDER_TIMESTAMP)
VALUES
(ORDER_ID.NextVal,1, 1500, '16.10.21');
INSERT INTO ORDERRS
(ORDER_ID, CUSTOMER_ID,ORDER_TOTAL,ORDER_TIMESTAMP)
VALUES
(ORDER_ID.NextVal,2, 1800, '16.10.21');
INSERT INTO ORDERRS
(ORDER_ID, CUSTOMER_ID,ORDER_TOTAL,ORDER_TIMESTAMP)
VALUES
(ORDER_ID.NextVal,3, 1400, '17.10.21');
INSERT INTO ORDERRS
(ORDER_ID, CUSTOMER_ID,ORDER_TOTAL,ORDER_TIMESTAMP)
VALUES
(ORDER_ID.NextVal,4, 2900, '18.10.21');
INSERT INTO ORDERRS
(ORDER_ID, CUSTOMER_ID,ORDER_TOTAL,ORDER_TIMESTAMP)
VALUES
(ORDER_ID.NextVal,5, 18200, '18.10.21');
INSERT INTO ORDERRS
(ORDER_ID, CUSTOMER_ID,ORDER_TOTAL,ORDER_TIMESTAMP)
VALUES
(ORDER_ID.NextVal,6, 22000, '18.10.21');
INSERT INTO ORDERRS
(ORDER_ID, CUSTOMER_ID,ORDER_TOTAL,ORDER_TIMESTAMP)
VALUES
(ORDER_ID.NextVal,1, 1200, '20.10.21');
INSERT INTO ORDERRS
(ORDER_ID, CUSTOMER_ID,ORDER_TOTAL,ORDER_TIMESTAMP)
VALUES
(ORDER_ID.NextVal,5, 21750, '20.10.21');
----------------------------------------------
Отобразим заполненные таблицы
select * from CUSTOMERRS;
select * from ORDERRS;
Выборка данных
create or replace view L2_P21 as select * from CUSTOMERRS;
create or replace view L2_P22 as select * from ORDERRS;
select * from L2_P21;
select * from L2_P22;
Запрос с условием
create or replace view L2_P31 as select * from CUSTOMERRS where CUSTOMER_ID = 3;
create or replace view L2_P32 as select * from ORDERRS where ORDER_TIMESTAMP = '20.10.21';
select * from L2_P31;
select * from L2_P32;
Запрос с использованием синонимов
create or replace synonym C for CUSTOMERRS;
create or replace synonym O for ORDERRS;
create or replace view L2_P41 as select * from C;
create or replace view L2_P42 as select * from O;
select * from L2_P41;
select * from L2_P42;
C использованием подзапроса
create or replace view L2_P51 as
select * from CUSTOMERRS CU where CU.CUSTOMER_ID in (select CUSTOMER_ID from ORDERRS);
select * from L2_P51;
C использованием сортировки
create or replace view L2_P61 as select * from CUSTOMERRS order by AGE desc;
create or replace view L2_P62 as select * from ORDERRS order by ORDER_TOTAL asc;
select * from L2_P61;
select * from L2_P62;
C использованием группировки
create or replace view L2_P71 as
select ORDER_TIMESTAMP,
sum(ORDER_TOTAL) as ITOG
from ORDERRS
group by ORDER_TIMESTAMP;
create or replace view L2_P72 as
select CITY,
count(CITY) as KOLVO
from CUSTOMERRS
group by CITY;
select * from L2_P71;
select * from L2_P72;
C использованием конкатенации
create or replace view L2_P81 as
select ('В городе'||' '||city||' '||'проживает' ||' '||count(city)||' клиентов') as T1
from CUSTOMERRS
group by city;
select * from L2_P81;
Выборка неповторяющихся записей
create or replace view L2_P91 as (select distinct CUST_FIRST_NAME from CUSTOMERRS);
create or replace view L2_P92 as (select distinct ORDER_TIMESTAMP from ORDERRS);
select * from L2_P91;
select * from L2_P92;
C использованием агрегатных функций
create or replace view L2_P10_0 as (select count(*) as kolvo_pokup from CUSTOMERRS);
create or replace view L2_P10_1 as (select count(*) as kolvo_zakazov from ORDERRS);
select * from L2_P10_0; select * from L2_P10_1;
C использованием NOT
create or replace view L2_P11_0 as (select * from CUSTOMERRS where CITY not in ('LA'));
create or replace view L2_P11_1 as (select * from ORDERRS where ORDER_TIMESTAMP not in ('20.10.21'));
select * from L2_P11_0;
select * from L2_P11_1;
C использованием WHERE
create or replace view L2_P12_0 as (select * from CUSTOMERRS where CUST_FIRST_NAME like ('A%'));
create or replace view L2_P12_1 as (select * from ORDERRS where ORDER_TOTAL > 15000);
select * from L2_P12_0;
select * from L2_P12_1;
Москва 2021