----l 针对bookshop数据库:
----1、 创建一个视图cust_view,该视图只含收件人姓张的客户信息。(10分)
create view cust_view
as
select *
from customer
where receiver like ‘张%’
—drop view cust_view;
----2、 利用cust_view视图分别添加一条姓张的和不姓张的顾客数据。(注意:分别查看customer表和该视图的结果。)(15分)
insert into cust_view(cust_name,receiver,tel_no,cust_addr)
values(‘a2’,‘张萌萌1’,‘00’,‘江西南昌’)
,(‘b2’,‘李德德1’,‘01’,‘江西南昌’);
----3、 创建一个视图cust_view1,该视图只含收件人姓张的客户信息,带with check option 子句。(10分)
create view cust_view1
as
select *
from customer
where receiver like ‘张%’
with check option;
–drop view cust_view1;
----4、 利用cust_view1视图分别添加一条姓张的和不姓张的顾客数据。(注意:分别查看customer表和该视图的结果。)(15分)
insert into cust_view1(cust_name,receiver,tel_no,cust_addr)
values(‘za’,‘张a’,‘00’,‘江西南昌’)
,(‘lb’,‘李0’,‘01’,‘江西南昌’);
–不姓张的顾客数据插入失败,因为创建cust_view1时,加入了with check option,
–再对试图进行修改时,会判断receiver是否姓张,从而插入不姓张的数据时,会插入失败;
----5、 通过视图cust_view删除所有姓张的收件人且名字为2个汉字的客户数据。(10分)
delete
from cust_view
where receiver like ‘张_’;
----6、 通过视图cust_view修改表内某一客户的姓名(请给出以下几种情况进行测试:
----1、customer表中不存在的一个客户;
update cust_view
set cust_name=‘张嘻嘻’
where cust_name=‘张哈哈’;
----2、customer表中存在且没有销售记录的一个客户;
update cust_view
set cust_name=‘张梦梦’
where cust_name=‘张萌萌’;
----3、customer表中存在且有销售记录的一个客户。)(15分)
update cust_view
set cust_name=‘张益达’
where cust_name=‘张旭达’;
----tip:修改不了;原因:sales里面含有张旭达的信息,违反了约束条件;
----7、 从基本表employee和sales,创建一个视图sales_view,该视图包含业务员的编号、姓名、销售总金额。(10分)
create view sales_view(业务员的编号,姓名,销售总金额)
as
select sale_id,emp_name,sum(total_amt)
from employee,sales
where employee.emp_no=sales.sale_id
group by sale_id,emp_name;
select *
from sales_view
----8、 将上述视图中E0017业务员的销售总金额改为6000元。能成功吗?如果失败说明原因。(10分)
update sales_view
set 销售总金额=‘6000’
where 业务员的编号=‘E0017’;
–无法删除;因为销售总金额跟saels里所有total_amt相关,故不能修改聚集函数类型的数据;
----9、 删除上述所有已经创建的视图。(5分)
drop view sales_view;