《数据库实验—视图(7页).doc》由会员分享,可在线阅读,更多相关《数据库实验—视图(7页).doc(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-数据库实验视图实验项目视 图课程名称数据库原理时 间16年5月10日第12 周 第 节地 点E404姓 名陶建敏学 号201308002107班 级通信1301一、实验要求 能在SQL Server 2012的环境中熟练的进行表的创建和管理。二、实验目的1)掌握在SQL Server Management Studio 中对表进行插入、修改和删除数据的操作。2)掌握使用T-SQL语句对表进行插入、修改和删除数据的操作。3)重点掌握带查询的更新方法。三、实验环境1) 硬件设备:PC机一台2) 操作系统:Windows 73) 应用工具:SQL Server 2012四、实验内容及程序代码对于“
2、Student”数据库的三个基本表:S(Sno,Sname,Sage,Ssex,Sdept),C(Cno,Cname,Credit,Semester),SC(Sno,Cno,Grade)1、请用SQL语句按要求创建视图: (1)查询学生的学号、姓名、所在系、课程号、课程名、课程学分。create view 学生视图1(学号,姓名,所在系,课程号,课程名,课程学分)asselect Student.Sno,Sname,Sdept,SC.Cno,Cname,Ccreditfrom Student join SC on Student.Sno=SC.Snojoin Course on Course.
3、Cno=SC.Cnoselect * from 学生视图1 (2)查询学生的学号、姓名、选修的课程名和选课成绩。create view 学生视图2(学号,姓名,选修的课程名,选课成绩)as select Student.Sno,Sname,Cname,Gradefrom Student join SC1 on Student.Sno=SC.Snojoin Course on Course.Cno=SC.Cnoselect * from 学生视图2 (3)统计每个学生的选课门数,要求列出学生学号和选课门数。create view 学生视图3(学生学号,选课门数)asselect Student.
4、Sno,count(Cno)from Student join SC on Student.Sno=SC.Snogroup by Student.Snoselect * from 学生视图3 (4)统计每个学生的修课总学分,要求列出学生学号和总学分。(注明:成绩大于60分才可获得学分)create view 学生视图4(学生学号,总学分)as select Student.Sno,sum(Ccredit)from Student join SC on Student.Sno=SC.Snojoin Course on Course.Cno=SC.Cnowhere Grade60group by
5、Student.Sno select * from 学生视图4 (5)查询计算机系VB考试成绩最高的学生的学号、姓名和VB考试成绩。create view 学生视图5(学生的学号,VB考试成绩,姓名)as select Student.Sno,grade,Sname from student join sc on student .sno=sc.sno join course on o=o where Sdept=计算机系and Cname=VBand grade=(select max(grade) from student join sc on student .sno=sc.sno jo
6、in course on o=o where Sdept=计算机系and Cname=VB ) Group BY Student.Sno,grade,Sname select * from 学生视图5 2、 利用上面建立的视图,完成如下查询: (1)查询考试成绩大于等于90分的学生的姓名、课程名和成绩。select 姓名,选修的课程名,选课成绩 from 学生视图2 where 选课成绩 =90 (2)查询选课门数超过3门的学生的学号和选课门数。select 学生学号,选课门数 from 学生视图3 where 选课门数3 学生视图3 从右图对比可知原始数据库没有超过选修3门课的学生(我的原始
7、数据库有更改可能与其他同学不同) (3)查询计算机系选课门数超过3的学生的姓名和选课门数。select 姓名,选课门数 from 学生视图1 s1 join 学生视图3 s3 on s1.学号=s3.学生学号 where 所在系=计算机系and 选课门数3 对比分析可知满足题目要求的没有 (4)查询修课总学分超过10分的学生的学号、姓名、所在系和修课总学分。select distinct 学号,姓名,所在系,总学分 from 学生视图1 s1 join 学生视图4 s4 on s1.学号=s4.学生学号 where 总学分10 (5)查询年龄大于等于20岁的学生中,修课总分数查过10分的学生的
8、姓名、年龄、所在系和修课总学分。 select distinct 姓名,Sage,所在系,总学分 from Student s join 学生视图1 s1 on s.Sno=s1.学号 join 学生视图4 s4 on s4.学生学号=s1.学号 where Sage20 and 总学分10 再去执行以下代码验证 select distinct Sname,Sage from Student S join SC on S.Sno=SC.Sno where s.Sno=9531101or s.sno=9521102可以知道而另外一个人年龄不符 ,所以该结果是正确的 五、 实验总结通过本次实验可以通过视图的方式来定义自己需要的数据,而且可以通过对自定义的视图来进行查看相应的数据,可以不需要通过原来的表就可以参看数据,非常方便而且可对指定的数据进行参看,还有加深了前面所学的有关表的定义,多表连接以及对表的相关查询等的熟悉度,知道了它们之间的相同之处和不同之处,能够更好的对数据进行操作了。六、教师评语教师签字: 年 月 日 -第 7 页湖南科技学院电信学院实 验 报 告