4.7学习总结

数据库原理第五章习题

1.试说明视图的好处

答:利用视图可以简化客户端的数据查询语句, 使用户能从多角度看待同一数据, 可以提高数据的安全性, 视图对应数据库三级模式中的外模式, 因此提供了一定程度的逻辑独立性。适当的利用视图可以更清晰的表达查询

2.使用视图可以加快数据的查询速度,这句话对吗?为什么?

答:不对,因为视图并没有保存数据,对视图的查询要转换成为对基本表的查询,这个转换需要时间,它会降低查询效率。

3.利用第3章建立的Student、Course和SC表,写出创建满足下述要求的视图的SQL语句。

 ⑴查询学生学号、姓名、所在系、课程号、课程名、课程学分。

Create view t1(sno,sname,sdept,cno,cname,credit)

As Select s.sno ,s.sname,s.dept,c.cno,c.cname,c.credit From student s join course c on s.sno=c.sno

⑵查询学生的学号、姓名、选修的课程名和考试成绩。 Create view t2(sno,sname,cname,grade) As

Select s.sno,s.sname,c.cname,c.grade 

From student s join course c on s.sno=c.cno

⑶统计每个学生的选课门数,要求列出学生学号和选课门数。 Create view t3(sno,选课门数) As

Select s.sno ,count(*) 选课门数

From student s LEFT OUTER join sc on s.sno=sc.sno group by s.sno

⑷统计每个学生的选课总学分,要求列出学生学号和总学分(说明:考试成绩大于等于陆拾才可获得此门课程的学分)。 Create view t4 (sno,总学分) As

Select sno , sum(credit) From sc

Where grade>=60 Group by sno

(5)查询计算机系JAVA考试成绩最高的学生的学号、姓名和JAVA考试成绩

Create view v5As

Select top1 with ties s.sno,sname, grade

From studentsjoin scon s.sno=sc.sno

Join course c on c.cno =sc.cno

Where sdept =计算机系 and cname ='java'

Order by grade desc

4.利用第3题建立的视图,完成如下查询:

(1)查询考试成绩大于等于90分的学生的姓名、课程名和成绩。

Select sname,cname,grade From v2 where grade >=90

(2)查询选课门数超过3门的学生的学号和选课门数。

Select*from v3where total >=3

(3)查询计算机系选课门数超过3 门的学生的姓名和选课门数

Select sname,total from v3 join student s on s.sno = v3.sno

Where sdept=计算机系 and total >= 3

(4)查询修课总学分超过 10 分的学生的学号、姓名、所在系和修课总学分。

Select v4.sno,sname,sdept,total credit

From v4 join student s on s.sno = v4.sno

Where totalcredit >= 10

(5)查询年龄大于等于20 岁的学生中,修课总学分超过 10分的学生的姓名、年龄所在系和修课总学分。

Select sname,sage,sdept,total credit

Fromv4 join student s ons.sno= v4.sno

Where sage >= 20 and total credit >= 10

5修改第3题(4)定义的视图,使其查询每个学生的学号、总学分以及总的选课门数。

Alter view v4 As Select sno,sum(credit) as total credit,count(*) as total cnoFrom sc join course c on c.cno=sc.cno Group by sno

6修改第3题(5)定义的视图,使其统计全体学生中JAVA 考试成绩最高的学生的学号、姓名、所在系和JAVA考试成绩。

Alter view v5 As Select top 1 with ties s.sno,sname,sdept, grade From students join scon s.sno=sc.sno

Join course c on c.cno =sc.cno

Where cname=’java'

Order by grade desc

posted @   代不动码  阅读(135)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示