SQL查询练习参考答案.docx
- 文档编号:12546378
- 上传时间:2023-04-20
- 格式:DOCX
- 页数:8
- 大小:145.20KB
SQL查询练习参考答案.docx
《SQL查询练习参考答案.docx》由会员分享,可在线阅读,更多相关《SQL查询练习参考答案.docx(8页珍藏版)》请在冰豆网上搜索。
SQL查询练习参考答案
SQL查询练习参考答案
groupby学号orderbycount(课程号)
17.统计各系的修课的学生总数和考试的平均成绩.
select所在系,count(*)学生总数,avg(成绩)平均成绩fromstudentstjoinsconst.学号=sc.学号groupby所在系
18.查询选课门数超过两门的学生的平均成绩和选课门数.
select学号,count(课程号)选课门数,avg(成绩)平均成绩fromscgroupby学号havingcount(课程号)>2
19.列出总成绩超过200分的学生,要求列出学号,总成绩
select学号,sum(成绩)总成绩fromscgroupby学号havingsum(成绩)>200
20.平均价格超过12.0元的书的类型(type),平均价格
,要求只计算有确定价格的图书的情况。
usepubs
selecttype,avg(price)平均价格,max(price)最高价格
fromtitlesgroupbytypehavingavg(price)>12.0
21.查询pubs数据库的titles表中版税(royalty)为10的每类书的平均价格.
selectavg(price)平均价格fromtitleswhereroyalty=10groupbytype
22.查询pubs数据库的titles表中每类图书的数目超过3本的图书的总价格.
selectsum(price)总价格fromtitlesgroupbytypehavingcount(type)>3
23.查询选修了c02号课程的学生的姓名和所在系.
usesqllx
select姓名,所在系fromstudentst,scwherest.学号=sc.学号andsc.课程号='c02'
24.查询成绩80分以上的学生的姓名,课程号和成绩,并按成绩的降序排列结果.
select姓名,课程号,成绩fromstudentst,scwherest.学号=sc.学号andsc.成绩>80
orderby成绩desc
--等价于下列命令
select姓名,课程号,成绩fromstudentstjoinsconst.学号=sc.学号where成绩>80
orderby成绩desc
25.查询计算机系男生修了"数据库基础"的学生的姓名,性别,成绩
select姓名,性别,成绩fromstudentst,courseco,scwherest.学号=sc.学号and
sc.课程号=co.课程号andst.所在系='计算机系'andco.课程名='数据库基础'andst.性别='男'
26.查询学生的选课情况,要求列出每位学生的选课情况(包括未选课的学生),并列出学生的学号,姓名,修课号,修课成绩
selectstudent.学号,姓名,课程号,成绩fromstudentleftjoinsconstudent.学号=sc.学号
27.列出"数据库基础"课程考试成绩前三名的学号,姓名,所在系和考试成绩.
selecttop3st.学号,姓名,所在系,成绩fromstudentst,courseco,sc
wherest.学号=sc.学号andco.课程号=sc.课程号and课程名='数据库基础'orderby成绩desc
--或者表示为:
selecttop3st.学号,姓名,所在系,成绩fromstudentstjoinsconst.学号=sc.学号
joincoursecoonsc.课程号=co.课程号
where课程名='数据库基础'orderby成绩desc
28查询哪些学生合选了一门课程,要求列出合选课程的学生的学号和课程号
selectdistincts1.学号,s1.课程号fromscs1joinscs2ons1.课程号=s2.课程号orderbys1.课程号
--29.查询哪些学生的年龄相同,要求列出年龄相同的学生的姓名和年龄.
selectdistincts1.姓名,s1.年龄fromstudents1joinstudents2ons1.年龄=s2.年龄orderbys1.年龄
30.查询哪些课程没有人选,要求列出课程号和课程名.
selectco.课程号,co.课程名fromcourseco,sc
whereco.课程号=sc.课程号andco.课程号notin(select课程号fromsc)
31.查询有考试成绩的所有学生的姓名,修课名称,及考试成绩,要求将查询结果放在一张新的永久表(假设新表名为new_sc)中,
新表的列名分别为student_name,course_name,grade.
select姓名student_name,课程名course_name,成绩gradeintonew_sc
fromstudentstjoinsconst.学号=sc.学号joincoursecoonco.课程号=sc.课程号
wheresc.成绩isnotnull
32.分别查询信息系和计算机系的学生的姓名,性别,修课名称,修课成绩,并要求将这两个查询结果合并成一个结果集,
并以系名,姓名,性别,修课名称,修课成绩的顺序显示各列
selectst.所在系,st.姓名,st.性别,co.课程名,sc.成绩fromstudentst,courseco,sc
wheresc.学号=st.学号andsc.课程号=co.课程号andst.所在系='计算机系'
union
selectst.所在系,st.姓名,st.性别,co.课程名,sc.成绩fromstudentst,courseco,sc
wheresc.学号=st.学号andsc.课程号=co.课程号andst.所在系='信息系'
33用子查询实现如下查询:
1)查询选修了c01号课程的学生的姓名和所在系
select姓名,所在系fromstudentwhere学号
in(select学号fromscwhere课程号='c01')
2)查询数学系成绩80分以上的学生的学号,姓名.
select学号,姓名fromstudentwhere学号in(selectdistinct学号fromscwhere成绩>80)and所在系='数学系'
3)查询计算机系学生所选的课程名.
select课程名fromcoursewhere课程号in(select课程号fromscwhere学号
in(select学号fromstudentwhere所在系='计算机系'))
4)查询"VB"课程考试成绩前三名的学生的学号,姓名,所在系.
select学号,姓名,所在系fromstudentwhere学号
in(selecttop3withties学号fromscwhere课程号
in(select课程号fromcoursewhere课程名='VB')orderby成绩desc)
--34.
insertintotest_tvalues(null,'b1','')
insertintotest_tvalues('1','b2','c2')
insertintotest_tvalues('2','b3','')
insertintotest_tvalues(null,'b4','c4')
--35
selectst.学号,姓名,成绩,所在系intotest_3fromstudentst,sc
wherest.学号=sc.学号andst.所在系='计算机系'andsc.成绩>80
--36.
deletefromscwhere成绩=50
--37
--1)
deletefromscwhere成绩<50and学号in(select学号fromstudentwhere所在系='信息系')
deletefromsc
fromscjoinstudentonsc.学号=student.学号where所在系='信息系'and成绩<50
--38
updatescset成绩=成绩+10where课程号='c01'
--39
--1)
updatescset成绩=成绩+10where学号in(select学号fromstudentwhere所在系='计算机系')
and课程号in(select课程号fromcoursewhere课程名='计算机文化学')
--2)
updatescset成绩=成绩+10fromscjoinstudentonsc.学号=student.学号joincourseoncourse.课程号=sc.课程号
wherestudent.所在系='计算机系'andcourse.课程名='计算机文化学'*/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 查询 练习 参考答案