86 lines
3.2 KiB
SQL
86 lines
3.2 KiB
SQL
#####################################################
|
||
################ Завдання 2.1 ###################
|
||
1. На остнові таблиці Orders створіть представлення V_Orders з алгоритмом обробки TEMPTABLE,
|
||
яке б вивело увесь вміст таблиці.
|
||
|
||
CREATE ALGORITHM = TEMPTABLE VIEW V_Orders AS SELECT * FROM Orders;
|
||
|
||
SELECT * FROM V_Orders;
|
||
|
||
2. Переіменуйте представлення на VOrders
|
||
|
||
RENAME TABLE V_Orders TO VOrders;
|
||
|
||
SELECT * FROM VOrders;
|
||
|
||
3. Спробуйте використати переіменоване представлення для видалення запису з onum = 3001.
|
||
Поясніть результат.
|
||
|
||
DELETE FROM VOrders WHERE onum = 3001;
|
||
# Error: The target table VOrders of the DELETE is not updatable
|
||
# Видалення не відбулося, оскільки представлення було створено з алгоритмом TEMPTABLE.
|
||
|
||
#####################################################
|
||
################ Завдання 2.2 ###################
|
||
1. Створіть точну копію таблиці Salespeople, назвавши її Salespeople_1.
|
||
|
||
create table Salespeople_1 as select * from Salespeople;
|
||
|
||
2. На остнові таблиці Salespeople_1 створіть представлення V_Salespeople_1, яке б вивело увесь вміст
|
||
таблиці.
|
||
|
||
drop view if exists V_Salespeople_1;
|
||
|
||
CREATE VIEW V_Salespeople_1 AS SELECT * FROM Salespeople_1;
|
||
|
||
SELECT * FROM V_Salespeople_1;
|
||
|
||
3. Спробуйте використати представлення V_Salespeople_1 для додавання в якості продавця себе.
|
||
Перевірте наявність змін.
|
||
|
||
insert into
|
||
V_Salespeople_1 (SNUM, SNAME, CITY, COMM)
|
||
values (
|
||
1008,
|
||
'Vitalii',
|
||
'Zdolbuniv',
|
||
0.1
|
||
);
|
||
|
||
#####################################################
|
||
################ Завдання 2.3 ###################
|
||
1. На остнові таблиці Salespeople_1 створіть представлення V_Salespeople_2,
|
||
яке б вивело лише записи продавців, які проживають у місті London.
|
||
|
||
drop view if exists V_Salespeople_2;
|
||
|
||
create view V_Salespeople_2 as
|
||
select *
|
||
from Salespeople_1
|
||
where
|
||
CITY = 'London';
|
||
|
||
SELECT * FROM V_Salespeople_2;
|
||
|
||
2. Спробуйте використати представлення V_Salespeople_2 для зміни свого міста проживання на Texas.
|
||
Перевірте наявність змін.
|
||
|
||
update V_Salespeople_2 set CITY = 'Texas' where SNUM = 1008;
|
||
|
||
SELECT * FROM V_Salespeople_2;
|
||
|
||
3. Спробуйте самостійно знайти спосіб, який заборонить вносити зміни у записи,
|
||
які представленням не відображаються. Переконайтеся у працездатності такого обмеження
|
||
спробувавши видалити свій запис.
|
||
|
||
create view V_Salespeople_3 as
|
||
select *
|
||
from Salespeople_1
|
||
where
|
||
CITY = 'London'
|
||
with
|
||
check option;
|
||
|
||
update V_Salespeople_3 set CITY = 'Texas' where SNUM = 1001;
|
||
|
||
SELECT * FROM V_Salespeople_3; |