练习六:视图
上机目的:
上机练习:
create view v1
as
select s.studno 学号,s.studname 姓名,s.studsex 性别,s.studbirthday 出生年月,s.classid 班级,ss.courseid 课程名,ss.studscore 成绩
from studinfo$ s,studscoreinfo$ ss
where s.studno=ss.studno
create view v2
as
select studno 学号,CAST(AVG(studscore) as numeric(4,2)) as 平均分,MAX(studscore) 最高分,MIN(studscore) 最低分,COUNT(*) 课程门数
from studscoreinfo$
group by studno
create view v3
as
select studname,s.studno,CAST(AVG(studscore) as numeric(4,2)) avgscore,MAX(studscore) maxscore,MIN(studscore) minscore,COUNT(*) coursecount
from studinfo$ s,studscoreinfo$ ss
where s.studno=ss.studno
group by studname,s.studno
create view v4
as
select s.studno,studname,studsex,studbirthday,
c.classid,classname,
ci.courseid,coursename,coursetype,coursecredit,
studscore
from studinfo$ s,classinfo$ c,courseinfo$ ci,studscoreinfo$ si
where s.classid=c.classid and
ci.coursename=si.courseid and
s.studno=si.studno
update studscoreinfo$
set studscore=60
where studno=2011001 and courseid='英语'
表studscoreinfo$,视图v1,v2,v3,v4受影响
create view v5(学号,姓名,班级,平均分,最高分,最低分,课程门数)
as
select studno,studname,classid,AVG(studscore),MAX(studscore),MIN(studscore),COUNT(*)
from v4
group by studno,studname,classid
create view v6
with encryption
as
select studno,AVG(studscore) avgscore,COUNT(*) coursecount
from studscoreinfo$
group by studno
可以不让用户查看视图的定义文本
视图:视图就像一个窗口,透过它可以看到数据库中用户感兴趣的数据及变化。
视图的作用:
优点:1.数据库视图可以简化复杂的查询;2.数据库视图有助于限制对特定用户的数据访问;3.数据库视图提供了额外的安全层;4.数据库视图可以定义计算列;5.数据库视图支持应用兼容性。
缺点:1.性能可能会较差;2.视图对表结构的依赖。