数据库实验《实验6》

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
print@department
print@avg
end
closecur
deallocatecur
15.
declare@snamenchar(30),@cnamenchar(30),@finalfloat
declarestucursorstatic
for
selectsname,final,cname
orderbyAVG(final)desc
selectteacher.*,cnamefromteacherleftjointeach_class
on=
leftjoincourseon=
3.
select,sname,cname,finalfromstudent
joinscoreon=
joincourseon=
printN'中'+@sname+@cname
elseif@final>=60and@final<70
printN'及'+@sname+@cname
elseif@final<60
printN'差'+@sname+@cname
end
closestu
deallocatestu
where='c语言'andexists
(
select*fromscoresc2joincoursec2on=
where='电子技术'and=
and>
)
12.
declare@maxnumeric(6,2)
select@max=MAX(平均分)from(
selectclassnoas班级号,AVG(final)as平均分fromscore
6.查询入学考试成绩最高的学生学号、姓名和入学成绩。
7.查询同时教授c05127号和c05109号课程的教师信息。
8.查询至少选修了姓名为“韩吟秋”的学生所选修课程中一门课程的学生学号和姓名。
9.查询所有教授c05127号课程的教师信息。
10.查询没有被任何学生选修的课程编号、课程名称和学分。
11.查询“C语言”课程期末成绩比“电子技术”课程期末成绩高的所有学生的学号和姓名。
print@department
print@avg
while@@FETCH_STATUS=0
begin
fetchnextfromcur
into@department,@num
set@avg=@num/(selectCOUNT(*)fromclasswheredepartment=@department)
wherein(
selectfromstudentgroupbyclassno
)
groupbydepartment
opencur
fetchcur
into@department,@num
set@avg=@num/(selectCOUNT(*)fromclasswheredepartment=@department)
begin
fetchnextfromstu
into@sname,@final,@cname
if@final>=90
printN'优'+@sname+@cname
elseif@final>=80and@final<90
printN'良'+@sname+@cname
elseif@final>=70and@final<80
end
closesc_cursor
deallocatesc_cursor
14.
declare@departmentnchar(30),@numint,@avgfloat
declarecurcursorstatic
for
selectdepartment,count(*)as'选修课数'fromclass
wherein
(
selectcoursenofromteach_classjointeacher
on=
wheretname='韩晋升'
)
andclassno='090501'
4.
select,cname,COUNT(studentno)from
scorejoincourseon=
groupby,cname
orderbyCOUNT(studentno)desc
5.
selectsname,AVG(final)fromscorejoinstudenton
=
wherefinal>=80
groupby,sname
havingCOUNT(courseno)>=2
6.
selectstudentno,sname,pointfromstudentwhere
2.查询教师基本信息和教授课程信息,其中包括未分配课程的教师信息。
3.查询160501班级中选修了“韩晋升”老师讲授的课程的学生学号、姓名、课程号和期末成绩。
4.查询每门课程的课程号、课程名和选修该课程的学生人数,并按所选人数升序排序。
5.查询两门及以上课程的期末成绩超过80分的学生姓名及平均成绩。
studentno=(selecttop1studentnofromstudentorderbypoint)
7.
select,tname,major,prof,departmentfrom
teacherjointeach_classon
=
wherecourseno='c05127'
8.
selectdistinct,snamefromscore
declaresc_cursorcursorfor
selectsname,cname,final
fromscorejoinstudenton=
joincourseon=
opensc_cursor
fetchnextfromsc_cursorinto@sname,@cname,@final
print'学生姓名 课程名称 期末成绩'
12.查询所有班级期末平均成绩的最高分,并将其赋值给变量,通过PRINT语句输出。
13.使用游标输出学生姓名、选修课程名称和期末考试成绩。
14.使用游标统计每个学院教师所开设课程的选修率。
15.使用游标计算学生期末成绩的等级,并更新level列。
三、实验环境
1.操作系统:Windows XP
2.开发软件:SQL Server 2008
elseif@final>=70and@final<80
printN'中'+@sname+@cname
elseif@final>=60and@final<70
printN'及'+@sname+@cname
elseif@final<60
printN'差'+@sname+@cname
while@@FETCH_STATUS=0
select*fromclass
insertintoclass(classno,classname,department,monitor)
values('160501','计算机','计算机学院','张三')
select*fromteach_class
insertintoteach_class(teacherno,classno,courseno)
joinstudenton=
wherecoursenoin
(
selectcoursenofromscorejoinstudenton
=
wheresname='韩吟秋'
)
andsname!='韩吟秋'
9.
select*fromteacherwhereteachernoin
(
selectteachernofromteach_classwhere
insertintoscore(studentno,courseno,usually,final)
values('','c05103',,
insertintoteacher(teacherno,tname,major,prof,department)
values('t05001','韩晋升','软件工程','教授','计算机学院')
joinstudenton=
joincourseon=
wherefinalisnotnull
groupbyclassno)t
print'所有班级期末平均成绩的最高分:'+cast(@maxasvarchar(6))
13.
declare@snamenchar(8),@cnamenchar(10),@finalnumeric(6,2)
四、提交文档
提交本实验报告(电子版),文件名命名:学号 姓名《实验X:XXXXXXX》.doc
教师将批阅后(有分数)的全体学生实验报告刻入一张光盘存档,保证光盘可读。
五、附:源代码
1.
selectstudentno,AVG(final)as平均分fromscoregroupbystudentnoorderbyAVG(final)
print'----------------------------------'
while@@FETCH_STATUS=0
begin
print@sname+@cname+cast(@finalasnchar(6))
fetchnextfromsc_cursorinto@sname,@cname,@final
courseno='c05127'
)
10.
selectcourseno,cname,creditfromcoursewherenotexists(
select*fromscorewhere=
11.
select,snamefromscoresc1joinstudent
on=
joincoursec1on=
实验名称
实验6
实验地点
8-318
实验类型
设计
实验学时
1
实验日期
2018-6-14
★撰写注意:版面格式已设置好(不得更改),填入内容即可。
一、实验目的
1. 掌握系统数据类型的特点和功能。
2. 掌握创建、修改表结构的方法。
3. 掌握插入、更新和删除表数据的方法。
二、实验内容
1.查询所有班级的期末成绩平均分,并按照平均分降序排序。
2.
select*fromteacher
select*fromstudent
select*fwk.baidu.comomcourse
insertintocourse(courseno,cname,ctype,period,credit)
values('c05103','高等数学','必修',64,
select*fromscore
values('t05001','160501','c05103')
select*fromteacher
select*fromcourse
select*fromscore
selectclassno,AVG(final)as平均分fromstudentjoinscore
on=
groupbyclassno
fromstudent,score,course
where=
and=
openstu
fetchstu
into@sname,@final,@cname
if@final>=90
printN'优'+@sname+@cname
elseif@final>=80and@final<90
printN'良'+@sname+@cname
相关文档
最新文档