book_shop 实验十

本文档展示了如何使用SQL创建、更新和删除视图,以及视图在数据过滤和完整性方面的作用。通过实例详细解释了如何通过视图添加、修改和删除数据,并探讨了with check option子句在确保数据一致性上的应用。同时,还介绍了如何通过视图进行复杂查询,如创建包含业务员销售总金额的sales_view视图。最后,讨论了对视图数据的修改限制及其原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

----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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ROY_1997

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值