数据库实验报告TransactSQL语句的高级应用实验报告Word格式.docx
《数据库实验报告TransactSQL语句的高级应用实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《数据库实验报告TransactSQL语句的高级应用实验报告Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
Transact-SQL语句的高级应用
课程类型
专业限选课
实验目的:
利用SELECT语句中更复杂的特性,可以使用多个表进行查询并获取结果。
在实际应用过程中,SELECT语句查询通常是由多表连接、子查询等有机地组合而形成的,同时还可以处理大型数据块,使用游标处理结果集。
实验内容:
1、查询每一位教授的教师号、XX和讲授的课程名称
SQL代码:
useteaching
go
selectteachernoas'
教授号'
tnameas'
XX'
majoras'
课程名称'
fromteacher
whereprof='
教授'
实验结果:
2、利用现有的表生成新表,新表中包括学号、学生XX、课程名称和总评成绩(其中:
总评成绩=final*0.9+usually*0.1)。
selectstudent.studentnoas'
学号'
snameas'
学生XX'
ameas'
0.9*final+0.1*usuallyas'
总评成绩'
intonew_stuscore
fromstudent,score,course
wherestudent.studentno=score.studentnoandcourse.courseno=score.courseno
select*
fromnew_stuscore
3、分别统计每个学生期末成绩高于75分的课程门数
selectstudent.studentno,student.sname,count(*)as'
课程门数'
fromscore,student
wherefinal>
75andstudent.studentno=score.studentno
groupbystudent.studentno,student.sname
4、输出student表中年龄大于女生平均年龄的男生的所有信息
useteaching
fromstudent
wheresex='
男'
and
datediff(year,birthday,getdate())>
(
selectavg(datediff(year,birthday,getdate()))
女'
)
5、计算每个学生获得的学分。
selectstudent.studentno,student.sname,sum(credit)
fromstudentinnerjoinscore
onstudent.studentno=score.studentno
innerjoincourse
oncourse.courseno=score.courseno
wherescore.final>
60
groupbystudent.studentno,student.sname
6、获取入学时间在2008—2009年的所有学生中入学年龄小于19岁的学号、XX及所修课程的课程名称。
selectstudent.studentno,student.sname,course.ame
onstudent.studentno=score.studentno
where(substring(student.studentno,1,2)='
08'
and(datediff(year,birthday,'
2008-01-01'
)<
19))
or(substring(student.studentno,1,2)='
09'
2009-01-01'
7、查询09级学生的学号、XX、课程名及学分。
selectstudent.studentno,student.sname,course.ame,course.credit
8、查询选修课程少于3门或期末成绩含有60分以下课程的学生学号、XX、和.
selectstudentno,count(*)as'
countNUM'
intocount1
fromscore
groupbystudentno
selectstudent.syudentno,sname,phone,Email
innerjoincount1
onstudent.studentno=count1.studentno
wherescore.final<
60andcountNUM<
3
实验总结:
通过本次实验掌握使用多个表进行查询并获取结果,同时基本掌握处理大型数据块,使用游标处理结果集。
实验评语:
实验成绩
教师签字