上机目的:
- 理解视图的定义及优点
- 熟练创建删除视图
上机练习:
- 创建视图v1,显示学生学号、姓名、性别、出生年月日、班级、课程名、成绩。
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
- 创建视图v2,统计各学生学号、平均分、最高分、最低分、课程门数.
create view v2
as
select studno 学号,CAST(AVG(studscore) as numeric(4,2)) as 平均分,MAX(studscore) 最高分,MIN(studscore) 最低分,COUNT(*) 课程门数
from studscoreinfo$
group by studno
- 创建视图v3,查询各学生的姓名、学号、平均分、最高分、最低分、课程门数.
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
- 创建视图v4,查询学生基本信息、班级信息、课程信息和成绩信息
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命令,将学号为2011001的英语成绩改为60分。请问修改后对数据库中的哪些信息有影响?
update studscoreinfo$
set studscore=60
where studno=2011001 and courseid='英语'
表studscoreinfo$,视图v1,v2,v3,v4受影响
- 使用视图v4创建统计各学生的学号、姓名、班级、平均分、最高分、最低分、课程门数的视图v5
create view v5(学号,姓名,班级,平均分,最高分,最低分,课程门数)
as
select studno,studname,classid,AVG(studscore),MAX(studscore),MIN(studscore),COUNT(*)
from v4
group by studno,studname,classid
- 创建加密视图v6,显示各学生的学号、平均分、课程门数,并与前面的非加密视图比较,简要说明其区别?
create view v6
with encryption
as
select studno,AVG(studscore) avgscore,COUNT(*) coursecount
from studscoreinfo$
group by studno
可以不让用户查看视图的定义文本
- 使用视图(v2)查询平均分为85 以上的学生的学号、平均分、最低分、最高分、课程门数信息
- 使用视图(v3)查询最高分大于80 以上的学生的学号、姓名、平均分、最低分、最高分、课程门数信息
- 删除视图v1、v2
- .什么是视图,视图有什么用处
视图:视图就像一个窗口,透过它可以看到数据库中用户感兴趣的数据及变化。
视图的作用:
优点:1.数据库视图可以简化复杂的查询;2.数据库视图有助于限制对特定用户的数据访问;3.数据库视图提供了额外的安全层;4.数据库视图可以定义计算列;5.数据库视图支持应用兼容性。
缺点:1.性能可能会较差;2.视图对表结构的依赖。