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

Лабы / Лаб2

.docx
Скачиваний:
301
Добавлен:
11.06.2017
Размер:
135.7 Кб
Скачать

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

Федеральное государственное образовательное бюджетное учреждение

высшего профессионального образования

Московский технический университет связи и информатики

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

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

по дисциплине

Базы данных

Москва 2017

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Создадим 3 таблицы CLIENT, PRODUCT, SDELKA.

SQL> create table CLIENT (

2 ID_Client int PRIMARY KEY,

3 Surname varchar(20) NOT NULL,

4 Name varchar(20) NOT NULL,

5 Last_Name varchar(30) NULL,

6 Phone varchar(15) NULL,

7 City varchar(25) NOT NULL,

8 Firma varchar(30) NULL);

Table created.

SQL> create table PRODUCT (

2 ID_Product int PRIMARY KEY,

3 Nazvanie varchar(30) NOT NULL,

4 Price int NOT NULL,

5 Copy int NULL,

6 Type varchar(30) NULL);

Table created.

SQL> create table SDELKA (

2 ID_Sdelka int PRIMARY KEY,

3 ID_Product int NOT NULL,

4 ID_Client int NOT NULL,

5 Kolichestvo int NULL,

6 DatePokupki date NOT NULL);

Table created.

Создадим связь между таблицами SDELKA и CLIENT, SDELKA и PRODUCT.

SQL> alter table SDELKA

2 ADD CONSTRAINT ProductFK FOREIGN KEY (ID_Product) REFERENCES PRODUCT;

Table altered.

SQL> alter table SDELKA

2 ADD CONSTRAINT ClientFK FOREIGN KEY (ID_Client) REFERENCES CLIENT;

Table altered.

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

SQL> Create Sequence ID_Cl Increment by 1 start with 1;

Sequence created.

SQL> Create Sequence ID_Pr Increment by 1 start with 100;

Sequence created.

SQL> Create Sequence ID_Sd Increment by 1 start with 500;

Sequence created.

Заполним каждую таблицу информацией. Для этого создадим 3 файла table1.sql, table2.sql и table3.sql, в которые пропишем код для заполнения данных, и запустим их.

Table1.sql

Insert into CLIENT (ID_Client, Surname, Name, Last_Name, Phone, City, Firma)

Values (ID_Cl.NextVal,'Ivanov','Ivan','Ivanovich','1-234-56','Moscow','Silver');

Insert into CLIENT (ID_Client, Surname, Name, Last_Name, Phone, City, Firma)

Values (ID_Cl.NextVal,'Sidorov','Maksim','Alekseevich','3-741-86','Ryazan','GoldF');

Insert into CLIENT (ID_Client, Surname, Name, Last_Name, Phone, City, Firma)

Values (ID_Cl.NextVal,'Dmitrova','Alena','Viktorovna','7-123-71','Perm','Green');

Insert into CLIENT (ID_Client, Surname, Name, Last_Name, Phone, City, Firma)

Values (ID_Cl.NextVal,'Malisheva','Anna','Vladimirovna','3-281-32','Moscow','Silver');

Insert into CLIENT (ID_Client, Surname, Name, Last_Name, Phone, City, Firma)

Values (ID_Cl.NextVal,'Smirnov','Alexey','Ivanovich','4-571-83','Perm','Green');

SQL> start c:\tmp\table1.sql

1 row created.

1 row created.

1 row created.

1 row created.

1 row created.

Table2.sql

Insert into PRODUCT (ID_Product, Nazvanie, Price, Copy, Type)

Values (ID_Pr.NextVal,'Lenovo65','25000','12','Notebook');

Insert into PRODUCT (ID_Product, Nazvanie, Price, Copy, Type)

Values (ID_Pr.NextVal,'Nokia732','7500','15','Phone');

Insert into PRODUCT (ID_Product, Nazvanie, Price, Copy, Type)

Values (ID_Pr.NextVal,'Nokia3105','10150','15','Phone');

Insert into PRODUCT (ID_Product, Nazvanie, Price, Copy, Type)

Values (ID_Pr.NextVal,'ASUS123','32000','10','Notebook');

Insert into PRODUCT (ID_Product, Nazvanie, Price, Copy, Type)

Values (ID_Pr.NextVal,'Xiaomi35','16000','10','Planshet');

Insert into PRODUCT (ID_Product, Nazvanie, Price, Copy, Type)

Values (ID_Pr.NextVal,'Samsung21','12000','8','Planshet');

Insert into PRODUCT (ID_Product, Nazvanie, Price, Copy, Type)

Values (ID_Pr.NextVal,'Xiaomi5c','18500','13','Phone');

Insert into PRODUCT (ID_Product, Nazvanie, Price, Copy, Type)

Values (ID_Pr.NextVal,'LenovoM74','28000','11','Notebook');

SQL> start c:\tmp\table2.sql

1 row created.

1 row created.

1 row created.

1 row created.

1 row created.

1 row created.

1 row created.

1 row created.

Table3.sql

Insert into SDELKA (ID_Sdelka, ID_Product, ID_Client, Kolichestvo, DatePokupki)

Values (ID_Sd.NextVal,'103','3','1',TO_DATE('2016/04/17','YYYY/MM/DD'));

Insert into SDELKA (ID_Sdelka, ID_Product, ID_Client, Kolichestvo, DatePokupki)

Values (ID_Sd.NextVal,'106','1','1',TO_DATE('2016/08/21','YYYY/MM/DD'));

Insert into SDELKA (ID_Sdelka, ID_Product, ID_Client, Kolichestvo, DatePokupki)

Values (ID_Sd.NextVal,'100','5','1',TO_DATE('2016/11/01','YYYY/MM/DD'));

Insert into SDELKA (ID_Sdelka, ID_Product, ID_Client, Kolichestvo, DatePokupki)

Values (ID_Sd.NextVal,'106','4','2',TO_DATE('2017/02/22','YYYY/MM/DD'));

SQL> start c:\tmp\table3.sql

1 row created.

1 row created.

1 row created.

1 row created.

Выполнение задания:

  1. Создание представлений с выборкой всех данных

SQL> create view Cl_View

2 as select * from client;

View created.

SQL> create view Pr_View

2 as select * from product;

View created.

SQL> create view Sd_View

2 as select * from sdelka;

View created.

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

Показать всех клиентов из г.Москва

SQL> create view Punct2_V1

2 as select ID_Client, Surname, Name, Last_Name from client

3 where city=’Moscow’;

View created.

SQL> select * from punct2_v1;

Показать товары, цена которых лежит в пределе от 11тыс. до 21тыс.

SQL> create view Punct2_V2

2 as select ID_Product, Nazvanie, Type from product

3 where price between ‘11000’ and ‘21000’;

View created.

SQL> select * from punct2_v2;

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

SQL> create synonym C for CLIENT;

Synonym created.

SQL> create view Punct3_V1

2 as select Surname, Phone, Firma from C;

View created.

SQL> select * from punct3_v1;

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

SQL> create view Punct4_V1

2 as select Nazvanie from product

3 where ID_Product in (select ID_Product from Sdelka);

View created.

SQL> select * from punct4_v1;

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

Сортировка товаров по названию (в алфавитном порядке)

SQL> create view Punct5_V1

2 as select Nazvanie, Price from product

3 order by Nazvanie;

View created.

SQL> select * from punct5_v1;

Сортировка товаров по цене (от max к min)

SQL> create view Punct5_V2

2 as select Nazvanie, Price from product

3 order by Price desc;

View created.

SQL> select * from punct5_v2;

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

SQL> create view Punct6_V1

2 as select Type, sum(copy) as allcopy from product

3 group by type;

View created.

SQL> select * from punct6_v1;

SQL> create view Punct6_V2

2 as select ID_Product, sum(Kolichistvo) as all_kol from sdelka

3 group by ID_Product;

View created.

SQL> select * from punct6_v2;

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

SQL> create view Punct7_V1

2 as select Sdelka.ID_Sdelka, Client.Surname, Sdelka.ID_Product

3 from sdelka inner join client

4 on Sdelka.ID_Client=Client.ID_Klient;

View created.

SQL> select * from punct7_v1;

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

SQL> create view Punct8_V1

2 as select distinct Type from Product;

SQL> select * from punct8_v1;

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

SQL> create view Punct9_V1

2 as select Type, max(price) as max_price from product

3 group by type;

View created.

SQL> select * from punct9_v1;

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

Добавим двух клиентов, у которых не укажем номер телефона.

Insert into CLIENT (ID_Client, Surname, Name, Last_Name, City, Firma)

Values (ID_Cl.NextVal,'Pavlov',’Pavel','Ivanovich','Ryazan','GoldF');

Insert into CLIENT (ID_Client, Surname, Name, Last_Name, City, Firma)

Values (ID_Cl.NextVal,'Sidorova','Irina','Alexeevna',,'Moscow,'Silver');

SQL> create view Punct10_V1

2 as select ID_Client, Surname from client

3 where phone is null;

View created.

SQL> select * from punct10_v1;

SQL> create view Punct10_V2

2 as select ID_Client, Surname from client

3 where phone is not null;

View created.

SQL> select * from punct10_v2;

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

SQL> create view Punct11_V1

2 as select ID_Client, Surname from client

3 where surname like ‘S%’;

View created.

SQL> select * from punct11_v1;

Конечные таблицы данных

SQL> select * from client;

SQL> select * from product;

SQL> select * from sdelka;

Соседние файлы в папке Лабы