数据库原理与应用习题整理.docx
- 文档编号:26856822
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:17
- 大小:21.29KB
数据库原理与应用习题整理.docx
《数据库原理与应用习题整理.docx》由会员分享,可在线阅读,更多相关《数据库原理与应用习题整理.docx(17页珍藏版)》请在冰豆网上搜索。
数据库原理与应用习题整理
数据库原理与应用习题整理
第四次练习:
--第三题
--方法1用in
select*fromstudscoreinfowherestudnoin
(selectstudnofromstudinfowherestudsex='女')
--方法2用关联
selectstudscoreinfo.*fromstudinfojoinstudscoreinfo
onstudinfo.studno=studscoreinfo.studno
wherestudsex='女'
--第四题
selectsum(studscore)as总分,avg(studscore)as平均分,
count(*)as选课门数
fromstudscoreinfowherestudno='20050319001'
--第五题
select*fromstudinfowherestudnoin
(selectstudnofromstudscoreinfo
groupbystudnohavingavg(studscore)between70and80)
--第6题
selecttop10studno,avg(studscore)as平均分,
count(*)as课程门数,max(studscore)as最高分,
min(studscore)as最低分
fromstudscoreinfo
groupbystudno
orderby平均分desc
--第7题
--第8题
selectstudinfo.studnoas学号,studnameas姓名,
avg(studscore)as平均分,sum(studscore)as总分,
max(studscore)最高分,min(studscore)as最低分,
count(*)as课程门数
fromstudinfojoinstudscoreinfo
onstudinfo.studno=studscoreinfo.studno
groupbystudinfo.studno,studname
orderby平均分desc
--第9题
selectstudinfo.studnoas学号,studnameas姓名,
avg(studscore)as平均分,sum(studscore)as总分,
max(studscore)最高分,min(studscore)as最低分,
count(*)as课程门数
intoLastStudScore
fromstudinfojoinstudscoreinfo
onstudinfo.studno=studscoreinfo.studno
groupbystudinfo.studno,studname
orderby平均分desc
select*fromLastStudScore
--第10题
select*
fromstudinfo
wherestudnamein
(selectstudnamefromstudinfogroupbystudname
havingcount(*)>1
)
select*fromstudinfo
insertintostudinfo
values('200501','任雪莹','男','1999-9-9','20050319')
第五次练习:
--1
--方法1
select*fromstudscoreinfowhere
studscore>80andstudscore<90or
studscorebetween60and70
--方法2
select*fromstudscoreinfowherestudscore>80andstudscore<90
unionall
select*fromstudscoreinfowherestudscorebetween60and70
--第2题
selectstudnoas学号,sum(studscore)总分,平均分=avg(studscore),
count(*)as课程门数,max(studscore)as最高分,min(studscore)as
最低分
fromstudscoreinfo
groupbystudnohavingavg(studscore)>70
--第3题
select*fromstudscoreinfowherestudnoin
(selectstudnofromstudscoreinfo
groupbystudnohavingavg(studscore)between60and70)
select*fromstudscoreinfoass1whereexists
(selectstudnofromstudscoreinfoass2
wheres1.studno=s2.studno
groupbystudnohavingavg(studscore)between60and70
)
--第4题
selectstudinfo.studnoas学号,studnameas姓名,sum(studscore)as
总分,avg(studscore)as平均分,count(*)as课程门数,max(studscore)as
最高分,min(studscore)as最低分
fromstudscoreinfojoinstudinfo
onstudscoreinfo.studno=studinfo.studno
groupbystudinfo.studno,studnamehavingavg(studscore)between60
and70oravg(studscore)between90and100
--第5题
select*fromstudinfowherestudsex='女'andstudnoin
(selectstudnofromstudscoreinfogroupbystudnohaving
avg(studscore)>80
)
selectstudinfo.*fromstudinfojoinstudscoreinfoonstudinfo.studno=
studscoreinfo.studnowherestudsex='女'
groupbystudinfo.studno,studname,studsex,studbirthday,classid
havingavg(studscore)>80
--第6题
select学生学号asstudno,学生姓名asstudname,
班级名称asclassname,max(英文速度)asspeede,
max(中文速度)asspeedc,max(英文分数)asscoree,
max(中文分数)asscorec
intotypetestinfo
fromtypetest
groupby学生学号,学生姓名,班级名称
--第7题
selectclassnameas班级名称,avg(speede)平均英文速度,
avg(speedc)as平均中文速度,avg(scoree)as平均英文分数,
avg(scorec)as平均中文分数,max(speedc)as最高中文速度,
max(scoree)as最高英文分数,max(scorec)as最高中文分数,
count(*)as人数
fromtypetestinfogroupbyclassname
--第8题
select*fromtypetestinfowhere
scoree>=80andscorec>=80
--第9题
select*fromtypetestinfowherestudnoin
(selectstudnofromtypetestinfogroupbystudnohaving
avg(scoree)>80andavg(scorec)>80)
--第10题
selectstudno,studname,classname,scorec*0.7+scoree*0.3asscore
intotypescore
fromtypetestinfo
orderbyscorecdesc,scoreeasc
deletefromtypetestinfowherestudnoisnull
第六次练习:
练习六
第1题.
解法一,简单连接:
selects.studnoas学号,studnameas姓名,
studsexas性别,courseidas课程编号
studsocreas成绩
fromstudinfos,stduscoreinfosc
wheres.studno=sc.studno
解法二,超级连接
selects.studnoas学号,studnameas姓名,
studsexas性别,courseidas课程编号,
studscoreas成绩
fromstudinfosinnerjoinstudscoreinfosc
ons.studno=sc.studno
注:
若是左连接,右连接,全连接只须将innerjoin依次改为leftjoin,rightjoin,和fulljoin.
第二题.
selectc.courseidas课程编号,coursenameas课程名称,
sum(studscore)as课程总分,avg(studscore)as课程平均分,
max(studscore)as课程最高分,min(studscore)as课程最低分,
count(*)as参考人数
fromcourseinfocinnerjoinstudscoreinfoss
onc.courseid=ss.courseid
groupbyc.courseid,coursename
第三题.
createviewV_GetCourseScoreas
selectc.courseidas课程编号,coursenameas课程名称,
sum(studscore)as课程总分,avg(studscore)as课程平均分,
max(studscore)as课程最高分,min(studscore)as课程最低分,
count(*)as参考人数
fromcourseinfocinnerjoinstudscoreinfoss
onc.courseid=ss.courseid
groupbyc.courseid,coursename
havingcount(*)>30andcount(*)<50
第四题.
略
第五题.
selects.studno姓名,s.studname姓名,studsex性别,
avg(studscore)平均分,count(*)课程门数,
max(studscore)最高分,min(studscore)最低分,
case
whenavg(studscore)>=90andavg(studscore)<=100then'优秀'
whenavg(studscore)>=80andavg(studscore)<90then'良好'
whenavg(studscore)>=70andavg(studscore)<80then'中等'
whenavg(studscore)>=60andavg(studscore)<70then'及格'
whenavg(studscore)<60hen'差'
endas等级
fromstudinfosjoinstudscoreinfoss
ons.studno=ss.studno
groupbys.studno,studname,studsex
第六题.
createviewV_studAvgScoreas
selects.studnoas学生学号,studnameas学生姓名,
avg(studscore)as平均分,sum(studscore)as总分,
max(studscore)as最高分,min(studscore)as最低分,
count(*)as课程门数
fromstudinfosjoinstudscoreinfosc
ons.studno=sc.studno
groupbys.studno,studname
第七题.
select学生学号,学生姓名,classname班级名称,平均分,课程门数
fromV_studAvgScorevjoinstudinfosjoinclassinfoci
ons.classid=ci.classid
onv.studno=s.studno
where平均分>=80and平均分<85or平均分>60and平均分<70
第八题.
select学生学号,学生姓名,studsexas性别,出生日期,
classnameas班级,平均分
fromV_studAvgScorevjoinstudinfosjoinclassinfoci
ons.classid=ci.classid
onv.studno=s.studno
--练习五SQL数据库统计处理
--第一题
--方法一:
SELECT*FROMStudScoreInfoWHEREStudScore>80ANDStudScore<90
UNIONALL
SELECT*FROMStudScoreInfoWHEREStudScore>=60ANDStudScore<=70
--方法二:
SELECT*FROMStudScoreInfo
WHEREStudScore>=60ANDStudScore<=70ORStudScore>80ANDStudScore<90
--第二题:
SELECTStudNo,SUM(Studscore)ASSumscore,COUNT(*)Coursecount,MAX(Studscore),MIN(Studscore),
CAST(AVG(StudScore)ASNumeric(4,1))Avgscore
FROMStudScoreInfo
GROUPBYStudNo,studScore
HAVINGstudScore>=70
--第三题:
select*fromStudScoreInfowhereStudNoin(
selectstudnofromStudscoreInfo
groupbystudno
havingAVG(StudScore)>=60andAVG(StudScore)<=70)
--第四题:
selectStudInfo.StudNoas学号,StudInfo.StudNameas姓名,Sum(StudScore)as总分,AVG(StudScore)as平均分,
COUNT(CourseID)as课程门数,MAX(StudScore)as最高分,MIN(StudScore)as最低分fromStudScoreInfo,StudInfo
whereStudInfo.StudNo=StudScoreInfo.StudNo
groupbyStudInfo.StudNo,StudInfo.StudName
havingAVG(StudScore)>=60andAVG(StudScore)<=70orAVG(StudScore)>=90andAVG(StudScore)<=100
--第五题:
select*fromStudScoreInfo,StudInfowhereStudSex='女'andStudInfo.StudNoin(selectStudNofromStudScoreInfo
groupbystudno
HavingAVG(StudScore)>=80)
--第六题:
select'优秀'as等级,'[90,100]'as分数段,COUNT(*)as人数fromStudInfowhereStudNoin(selectStudNofromStudScoreInfo
groupbystudnohavingAVG(StudScore)>90andAVG(StudScore)<=100)
union
select'优良'as等级,'[80,90)'as分数段,COUNT(*)as人数fromStudInfowhereStudNoin(selectStudNofromStudScoreInfo
groupbystudnohavingAVG(StudScore)>80andAVG(StudScore)<=90)
union
select'一般'as等级,'[70,80)'as分数段,COUNT(*)as人数fromStudInfowhereStudNoin(selectStudNofromStudScoreInfo
groupbystudnohavingAVG(StudScore)>70andAVG(StudScore)<=80)
union
select'及格'as等级,'[60,70)'as分数段,COUNT(*)as人数fromStudInfowhereStudNoin(selectStudNofromStudScoreInfo
groupbystudnohavingAVG(StudScore)>60andAVG(StudScore)<=70)
union
select'不及格'as等级,'[0,60)'as分数段,COUNT(*)as人数fromStudInfowhereStudNoin(selectStudNofromStudScoreInfo
groupbystudnohavingAVG(StudScore)>0andAVG(StudScore)<=60)
--第七题:
SELECT*FROMStudInfo,ClassInfo
WHEREStudNoIN(SELECTStudNoFromStudScoreInfoWHEREStudScore<60GROUPBYStudNoHAVINGCOUNT(*)>=10)
--第八题:
selects.StudNamename,avg(s1.StudScore)avgscore,SUM(s1.StudScore)sumscore,COUNT(*)countscore,MAX(s1.StudScore)maxscore,MIN(s1.StudScore)minscore,c.ClassName
fromStudInfos,ClassInfoc,StudScoreInfos1
wheres.ClassID=c.ClassIDands.StudNo=s1.StudNo
groupbys.StudNo,c.ClassName,s.StudName
havingc.ClassName='工商05'
--第九题:
selectcourseinfo.CourseIDas'课程编号',coursenameas'课程名称',COUNT(*)as'参考人数',AVG(StudScore)
fromCourseInfo,StudScoreInfo
whereCourseInfo.CourseID=StudScoreInfo.CourseID
groupbyCourseInfo.CourseID,CourseInfo.CourseName
havingCOUNT(*)>30andAVG(StudScore)>80
--第十题:
selectstudinfo.StudNo,studinfo.StudName,AVG(StudScore)
fromStudScoreInfo,StudInfo
whereStudInfo.StudNo=StudScoreInfo.StudNoandStudScore>80
groupbystudinfo.StudNo,StudName
--1
SELECTStudNo,AVG(StudScore)AvgScore
FROMStudScoreInfo
GROUPBYStudNo
--2
SELECTStudNo,SUM(StudScore)ASSumScore,COUNT(*)CourseCount,
CAST(AVG(StudScore)ASNumeric(4,1))AvgScore
FROMStudScoreInfo
GROUPBYStudNo
--3
SELECTStudInfo.StudNo,StudInfo.StudName,StudScoreInfo.CourseID,StudScoreInfo.StudScore
FROMStudInfo,StudScoreInfo
--4
SELECTStudInfo.StudNo,StudInfo.StudName,ClassInfo.ClassID,ClassInfo.ClassName,
CourseInfo.CourseID,CourseInfo.CourseName,CourseInfo.CourseType
FROMStudInfo,StudScoreInfo,ClassInfo,CourseInfo
--5
select*
fromStudInfo
whereStudNoIN(
selectStudNo
fromStudScoreInfo
whereStudSex='女')
--6
SELECTSUM(StudScore),AVG(StudScore)ASAvgScore,CourseCount=COUNT(*)
FROMStudScoreInfo
WHEREStud
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 应用 习题 整理