资源描述
实验四:视图操作和数据控制
(一) 实验目的: 熟练掌握用SQL语句实现视图操作和数据控制。
(二) 实验内容:
(一) 定义如下视图:
①查询北京的供应商的编号、名称和城市。
②查询S1供应商的所有供应明细。
③查询各工程名称使用的各种颜色零件的个数。
查询上面定义的视图。
(二)数据控制:
①使用GRANT把对S表查询的权利授予WangLi。
②使用GRANT把对P表查询、插入、修改、删除的权利授予LiMing。
③使用REVOKE把LiMing对P表插入、删除的权利回收。
(三) 完成情况:
①查询北京的供应商的编号、名称和城市。
create view s1_s
as
select sno,sname,city
1from s
where city ='北京'
select *
from s1_s
②查询S1供应商的所有供应明细。
create view s2_s
as
select *
from s
where sno ='s1'
select *
from s2_s
③查询各工程名称使用的各种颜色零件的个数。
create view j1_j
as
select jname,color,sum(qty)零件总数
from j,p,spj
where j.jno=spj.jno and
p.pno =spj.pno
group by j.jname,color
select *
from j1_j
select *
from j1_j
(四) 实验结果:
1、定义如下视图:
①查询北京的供应商的编号、名称和城市。
②查询S1供应商的所有供应明细。
③查询各工程名称使用的各种颜色零件的个数。
2、数据控制:
①使用GRANT把对S表查询的权利授予WangLi。
grant select
on s
to wangli
②使用GRANT把对P表查询、插入、修改、删除的权利授予LiMing。
grant select,insert,update,delete
on p
to liming
③使用REVOKE把LiMing对P表插入、删除的权利回收。
revoke insert,delete
on p
from liming cascade
(五) 问题及解决:首先写出执行语句不成功的时候系统报告的错误信息。然后分析错误原因,并给出解决办法。
1、
create view j1_j
as
select jname,color,sum(qty) //无列名
from j,p,spj
where j.jno=spj.jno and
p.pno =spj.pno
group by j.jname,color
创建视图或函数失败,因为没有为列3 指定列名。需要改成sum(qty)零件总数。
2、 使用GRANT把对S表查询的权利授予WangLi
应是:grant select
on s
to wangli
而不是:grant select
on table s
to wangli
(六) 思考题:实验内容中的哪些视图可以用来更新记录?
一般的,行列子集视图是可以更新的。
(七) 实验总结:只看书不练习是学不到真是有用的sql语句的,但是在练习时有迷惑的地方还应该下去仔细看看书。
2
展开阅读全文