数据库实验—视图

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

湖南科技学院电信学院

实验报告

实验项目视图

课程名称数据库原理

时间16年5月10日第12 周第 1.2节地点E404

姓名陶建敏学号2013080021

07

班级通信1301

一、实验要求

能在SQL Server 2012的环境中熟练的进行表的创建和管理。

二、实验目的

1)掌握在SQL Server Management Studio 中对表进行插入、修改和删除数据的操作。2)掌握使用T-SQL语句对表进行插入、修改和删除数据的操作。

3)重点掌握带查询的更新方法。

三、实验环境

1)硬件设备:PC机一台

2)操作系统:Windows 7

3)应用工具:SQL Server 2012

四、实验内容及程序代码

对于“Student”数据库的三个基本表:

S(Sno,Sname,Sage,Ssex,Sdept),C(Cno,Cname,Credit,Semester),SC(Sno,Cno,Grade) 1、请用SQL语句按要求创建视图:

(1)查询学生的学号、姓名、所在系、课程号、课程名、课程学分。

create view学生视图1(学号,姓名,所在系,课程号,课程名,课程学分)

as

select Student.Sno,Sname,Sdept,o,Cname,Ccredit

from Student join SC on Student.Sno=SC.Sno

join Course on o=o

select*from学生视图1

(2)查询学生的学号、姓名、选修的课程名和选课成绩。

create view学生视图2(学号,姓名,选修的课程名,选课成绩)

as

select Student.Sno,Sname,Cname,Grade

from Student join SC1on Student.Sno=SC.Sno

join Course on o=o

select*from学生视图2

(3)统计每个学生的选课门数,要求列出学生学号和选课门数。create view学生视图3(学生学号,选课门数)

as

select Student.Sno,count(Cno)

from Student join SC on Student.Sno=SC.Sno

group by Student.Sno

select*from学生视图3

(4)统计每个学生的修课总学分,要求列出学生学号和总学分。(注明:成绩大于60分才可获得学分)create view学生视图4(学生学号,总学分)

as

select Student.Sno,sum(Ccredit)

from Student join SC on Student.Sno=SC.Sno

join Course on o=o

where Grade>60

group by 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='VB'and grade=(select max(grade)from student join sc on

student.sno=sc.sno

join 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门课的学生(我的原始数据库有更改可能与其他同学不同)(3)查询计算机系选课门数超过3的学生的姓名和选课门数。

select姓名,选课门数

from学生视图1s1join学生视图3s3on s1.学号=s3.学生学号

where所在系='计算机系'and选课门数>3

对比分析可知满足题目要求的没有

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

select distinct学号,姓名,所在系,总学分

from学生视图1s1join学生视图4s4on s1.学号=s4.学生学号

where总学分>10

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

from Student s join学生视图1s1on s.Sno=s1.学号

join学生视图4s4on s4.学生学号=s1.学号

where Sage>20 and总学分>10

再去执行以下代码验证

select distinct Sname,Sage

from Student S join SC on S.Sno=SC.Sno

where s.Sno='9531101'or s.sno='9521102'

可以知道而另外一个人年龄不符,所以该结果是正确的

相关文档
最新文档