3实验三数据库高级应用Word下载.docx
- 文档编号:22191827
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:19
- 大小:211.14KB
3实验三数据库高级应用Word下载.docx
《3实验三数据库高级应用Word下载.docx》由会员分享,可在线阅读,更多相关《3实验三数据库高级应用Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
完成实验报告
编写源代码
(1)使用简单COMPUTE子句生成score表中分数列的求和总计,对应实验结果图.1
useschool
select学号,课程号,分数
fromscore
where学号in(103,105)
orderby学号
computesum(分数)
(2)在COMPUTE子句中加入可选的BY关键字,以生成每个组的小计,对应实验结果图.2
computesum(分数)by学号
(3)在groupbyj子句上增加了cube,对应实验结果图.3
selectstudent.班号,course.课程名,avg(score.分数)as'
平均分'
fromstudent,course,score
wherestudent.学号=score.学号andcourse.课程号=score.课程号
groupbystudent.班号,course.课程名withcube
(4)使用连接查询以查询各班所有课程的任课教师姓名,对应实验结果图.4
selectallocate.班号,allocate.课程号,teacher.姓名
fromallocatejointeacheron(allocate.教师编号=teacher.编号)
orderbyallocate.班号
(5)检索各班的平均分和所有的平均分,对应实验结果图.5
selectstudent.班号,avg(score.分数)as'
wherestudent.学号=score.学号
groupbystudent.班号withrollup
(6)左外连接,在allocate表中插入记录,再采用左连接以查询各班所有的任课教师姓名,再通过左连接,可以查询某班某课程还没有安排任课教师,对应实验结果图.6
insertintoallocate(班号,课程号)values('
1031'
'
9-888'
)
fromallocateleftjointeacheron(allocate.教师编号=teacher.编号)
deleteallocatewhere班号='
and课程号='
(7)右外连接,在allocate表中插入记录,再采用右连接以查询各班所有的任课教师姓名,再通过右连接,可以查询某班某课程还没有安排任课教师,对应实验结果图.7
fromallocaterightjointeacheron(allocate.教师编号=teacher.编号)
(8)全外连接,对应实验结果图.8
fromallocatefullouterjointeacheron(allocate.教师编号=teacher.编号)
(9)使用交叉连接产生课程和教师所以可能的组合,对应实验结果图.9
selectcourse.课程名,teacher.姓名
fromcoursecrossjointeacher
(10)查询选修“6-166”课程号的学生名称,对应实验结果图.10
selectstudent.学号,student.姓名
fromstudent
wherestudent.学号in
(selectscore.学号fromscorewherescore.课程号='
6-166'
(11)查询没有选修“6-166”课程号的学生名称,对应实验结果图.11
wherestudent.学号notin
(12)查询王萍教师任课的学生成绩,并按成绩递增排序,对应实验结果图.12
select课程号,学号,分数
where课程号in
(select课程号
fromallocate
where教师编号=
(select编号fromteacherwhere姓名='
王萍'
)
)
orderby分数desc
(13)查询其平均分高于所有课程平均分的学生学号及其平均分,对应实验结果图.13
select学号,avg(分数)as'
groupby学号
havingavg(分数)>
all
(selectavg(分数)
fromscore
where分数isnotnull
(14)查询所有任课教师的姓名和单位,对应实验结果图.14
select姓名,单位
fromteachera
whereexists
(select*fromallocatebwherea.编号=b.教师编号)
(15)查询所有未讲课的教师姓名和单位,对应实验结果图.15
wherenotexists
(16)使用多层嵌套子查询来查询最高分的学生姓名及班号,对应实验结果图.16
select姓名,班号
fromstudentwhere学号=
(select学号fromscorewhere分数=
(selectmax(分数)fromscore)
(17)求出所有课程的平均分,整个查询再从中以递减的方式输出所有课程名和平均分,对应实验结果图.17
select课程号,avgsas'
from(select课程号,avg(分数)avgs
groupby课程号)T
orderbyavgsdesc
(18)求出所有具有分数的学生学号,姓名,班号,课程名和分数,整个查询再对结果以班号和学号分最,每组求出最高分,对应实验结果图.18
select班号,学号,姓名,max(分数)最高分
from(selects.学号,s.姓名,s.班号,c.课程名,sc.分数
fromstudents,coursec,scoresc
wheres.学号=sc.学号andc.课程号=sc.课程号and分数isnotnull)T
groupby班号,学号,姓名
orderby班号,学号
(19)启动一个事务向student表中插入一个记录,然后回滚该事务。
对应实验结果图.19
go
begintransaction
insertintostudentvalues('
100'
陈浩'
男'
1992/03/05'
1033'
rollback
select*fromstudent
(20)设置了在事务内设置保存点,对应实验结果图.20
begintransactionMytran
savetransactionMytran
200'
王浩'
1992/10/05'
rollbacktransactionMytran
committransaction
deletestudentwhere学号='
(21)设置事务隔离级别为可串行读,以确保并发事务不能在student表中插入行,对应实验结果图.21
settransactionisolationlevelserializable
select学号,姓名,班号fromstudent
(22)查看当前设置的事务隔离级别,对应实验结果图.22
dbccuseroptions
(23)将事务隔离级别设置为SERIALIZABLE,并且在SELECT语句中使用表级锁定提示TABLOCKX,最后使用sp_lock存储过程来查看锁定情况,对应实验结果图.23
select姓名fromstudentwith(tablockx)
execsp_lock
(24)游标的使用,从student表中读出所有学生记录的学号,姓名,班号,通过fetch语句取出第一个学生记录,对应实验结果图.24
declarest_cursorcursorforselect学号,姓名,班号fromstudent
openst_cursor
fetchnextfromst_cursor
closest_cursor
deallocatest_cursor
(25)使用游标打印一个简单的学生信息表,对应实验结果图.25
setnocounton
declare@snoint,@snamechar(10),@sclasschar(10),@savgfloat
declarest_cursorcursor
forselectstudent.学号,student.姓名,student.班号,avg(score.分数)
fromstudent,score
wherestudent.学号=score.学号andscore.分数>
groupbystudent.学号,student.姓名,student.班号
orderbystudent.班号,student.学号
fetchnextfromst_cursorinto@sno,@sname,@sclass,@savg
print'
学号姓名班号平均分'
--------------------------------'
while@@FETCH_STATUS=0
begin
printcast(@snoaschar(8))+@sname+@sclass+'
'
+cast(@savgaschar(5))
end
(26)在score表中增加一个等级列,然后采用游标方式根据分数计算出等级列,并显示score表中所有记录,然后删除score表中的等级列,对应实验结果图.26
altertablescoreadd等级char
(2)
forselect分数fromscorewhere分数isnotnull
declare@fsint,@djchar
(1)
fetchnextfromst_cursorinto@fs
set@dj=case
when@fs>
=90then'
A'
=80then'
B'
=70then'
C'
=60then'
D'
else'
E'
end
updatescore
set等级=@dj
whereCURRENTofst_cursor
select*fromscoreorderby学号
altertablescoredropcolumn等级
4、测试数据与实验结果(可以抓图粘贴)
图.1
图.2
图.3
图.4
图.5
图.6
图.7
图.8
图.9
图.10
图.11
图.12
图.13
图.14
图.15
图.16
图.17
图.18
图.19
图.20
图.21
图.22
图.23
图.24
图.25
图.26
5、结果分析与实验体会
通过本次实验,更加深入了解了SQL的查询功能,也对数据库有了更深一层次的认识和了解,在实验过程中,我熟悉了数据库的建立和修改,并能使用T-SQL语句对数据库进行有关方面的查询以及对查询结果的相关处理,通过不断的学习和认识,我也会克服这些困难,学习好数据库这门课程。
T-SQL语句的熟练度掌握需要多加练习,不仅课堂上认真听讲并认真练习语句,而且课余时间也得多加练习,所以,在今后的学习中,我会逐渐提升对T-SQL语句的熟练度,力求准确、快速并有效的对数据库进行有关处理。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 数据库 高级 应用