SQL查询更新语句 课堂练习和习题

上传人:cn****1 文档编号:563803722 上传时间:2023-11-11 格式:DOCX 页数:8 大小:18.36KB
返回 下载 相关 举报
SQL查询更新语句 课堂练习和习题_第1页
第1页 / 共8页
SQL查询更新语句 课堂练习和习题_第2页
第2页 / 共8页
SQL查询更新语句 课堂练习和习题_第3页
第3页 / 共8页
SQL查询更新语句 课堂练习和习题_第4页
第4页 / 共8页
SQL查询更新语句 课堂练习和习题_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《SQL查询更新语句 课堂练习和习题》由会员分享,可在线阅读,更多相关《SQL查询更新语句 课堂练习和习题(8页珍藏版)》请在金锄头文库上搜索。

1、SQL查询语句课堂练习和习题一、试用SQL查询语句表达下列对教学数据库中三个基本表S、SC、C的查询:S(sno,sname,SAGE,SSEX)各字段表示学号,姓名,年龄,性别Sc(sno,cno,grade)各字段表示学号,课程号,成绩C(cno,cname,TEACHER)各字段表示课程号,课程名和教师名其中SAGE,grade是数值型,其他均为字符型。要求用SQL查询语句实现如下处理:1统计有学生选修的课程门数。2. 求选修C4课程的学生的平均年龄。3. 求LIU老师所授课程的每门课程的学生平均成绩。4. 统计每门课程的学生选修人数(超过2人的课程才统计)。要求输出课程号和选修人数查询

2、结果按人数降序排列,若人数相同,按课程号升序排列。5. 检索学号比WANG同学大,而年龄比他小的学生姓名。6. 检索姓名以WANG打头的所有学生的姓名和年龄。7. 在SC中检索成绩为空值的学生学号和课程号。8. 求年龄大于女同学平均年龄的男学生姓名和年龄。9. 求年龄大于所有女同学年龄的男学生姓名和年龄。其中涉及单表题:1.4.6.7参考答案:1. 统计有学生选修的课程门数。SELECTCOUNT(DISTINCTCno)FROMSC2求选修C4课程的学生的平均年龄。SELECTAVG(SAGE)FROMSWHERESnoIN(SELECTSnoFROMSCWHERECno=4)或者,SELE

3、CTAVG(SAGE)FROMS,SCWHERES.Sno=SC.SnoANDCno=43. 求LIU老师所授课程的每门课程的学生平均成绩。SELECTAVG(GRADE)FROMSCjoinConSC.Cno=C.CnoWHERETEACHER=liuGROUPBYc.Cno另:SELECTCNAME,AVG(GRADE)FROMSC,CWHERESC.Cno=C.CnoANDTEACHER=liuGROUPBYc.Cno,cname4统计每门课程的学生选修人数(超过2人的课程才统计)。要求输出课程号和选修人数查询结果按人数降序排列,若人数相同,按课程号升序排列。SELECTDISTINCT

4、Cno,COUNT(Sno)FROMSCGROUPBYCnoHAVINGCOUNT(Sno)2ORDERBY2DESC,CnoASC或:SELECTDISTINCTCno,COUNT(Sno)as人数FROMSCGROUPBYCnoHAVINGCOUNT(Sno)2ORDERBY人数DESC,CnoASC5. 检索学号比WANG同学大,而年龄比他小的学生姓名。SELECTX.SNAMEFROMSASX,SASYWHEREY.SNAME=WANGANDX.SnoY.SnoANDX.SAGE(selectsnofromswhereSNAME=WANG)andSAGE(SELECTAVG(SAGE)

5、FROMSWHERESSEX=女)9. 求年龄大于所有女同学年龄的男学生姓名和年龄。SELECTSNAME,SAGEFROMSASXWHEREX.SSEX=男ANDX.SAGEALL(SELECTSAGEFROMSASYWHEREY.SSEX=女)二、试用SQL更新语句表达对教学数据库中三个基本表S、SC、C的各个更新操作:要求用SQL更新语句实现如下处理:1往基本表S中插入一个学生元组S9,WU,18)。2. 在基本表S中检索每一门课程成绩都大于等于80分的学生学号、姓名和性别,并把检索到的值送往另一个已存在的基本表S1(Sno,SNAME,SSEX)。3. 在基本表SC中删除尚无成绩的选课

6、元组。4. 把WANG同学的学习选课和成绩全部删去。5把选修数据库原理课不及格的成绩全改为空值。6. 把低于总平均成绩的女同学成绩提高5%。7. 在基本表SC中修改4号课程的成绩,若成绩小于等于75分时提高5%,若成绩大于75分时提高4%(用两个UPDATE语句实现)。参考答案:1往基本表S中插入一个学生元组S9WU18)。INSERTINTOS(Sno,SNAME,SAGE)VALUES(59,WU,18)2. 在基本表S中检索每一门课程成绩都大于等于80分的学生学号、姓名和性别,并把检索到的值送往另一个已存在的基本表S1(Sno,SANME,SSEX)。selectSno,SNAME,SS

7、EXintos1fromstudentdeletefroms1INSERTINTOS1(Sno,SNAME,SSEX)SELECTSno,SNAME,SSEXFROMSWHERENOTEXISTS(SELECT*FROMSCWHEREGRADE80ANDS.Sno=SC.Sno)select*froms1考虑:以上会有什么问题?INSERTINTOS1(Sno,SNAME,SSEX)SELECTSno,SNAME,SSEXFROMSWHERENOTEXISTS(SELECT*FROMSCWHEREGRADE80ANDS.Sno=SC.SnoorS.Sno=SC.Snoandgradeisnul

8、l)andsnoin(selectsnofromsc)3. 在基本表SC中删除尚无成绩的选课元组。DELETEFROMSCWHEREGRADEISNULL4. 把WANG同学的学习选课和成绩全部删去。DELETEFROMSCWHERESnoIN(SELECTSnoFROMSWHERESNAME=WANG)5. 把选修数据库原理课不及格的成绩全改为空值。UPDATESCSETGRADE=NULLWHEREGRADE60ANDCnoIN(SELECTCnoFROMCWHERECNAME=数据库原理)6. 把低于总平均成绩的女同学成绩提高5%。UPDATESCSETGRADE=GRADE*1.05W

9、HEREGRADE(SELECTAVG(GRADE)FROMSC)ANDSnoIN(SELECTSnoFROMSWHERESSEX=女)7. 在基本表SC中修改4号课程的成绩,若成绩小于等于75分时提高5%,若成绩大于75分时提高4%(用两个UPDATE语句实现)。UPDATESCSETGRADE=GRADE*1.05WHERECno=4ANDGRADE75三、问题描述:为管理岗位业务培训信息,建立3个表:S(Sno,SN,SD,SA)Sno,SN,SD,SA分别代表学号、学员姓名、所属单位、学员年龄C(Cno,CN)Cno,CN分别代表课程编号、课程名称SC(Sno,Cno,G)Sno,Cn

10、o,G分别代表学号、所选修的课程编号、学习成绩要求实现如下5个处理:1. 使用标准SQL嵌套语句査询选修课程名称为税收基础的学员学号和姓名2. 使用标准SQL嵌套语句查询选修课程编号为C2的学员姓名和所属单位3. 使用标准SQL嵌套语句查询不选修课程编号为C5的学员姓名和所属单位4. 使用标准SQL嵌套语句查询只选修了一门课程的学员姓名和所属单位5. 查询选修了课程的学员人数6. 查询选修课程超过5门的学员学号和所属单位参考答案:1.使用标准SQL嵌套语句查询选修课程名称为税收基础的学员学号和姓名SELECTSN,SDFROMSWHERESnoIN(SELECTSnoFROMC,SCWHERE

11、C.Cno=SC.CnoANDCN=N税收基础)2使用标准SQL嵌套语句查询选修课程编号为C2的学员姓名和所属单位SELECTS.SN,S.SDFROMS,SCWHERES.Sno=SC.SnoANDSC.Cno=C23. 使用标准SQL嵌套语句查询不选修课程编号为C5的学员姓名和所属单位SELECTSN,SDFROMSWHERESnoNOTIN(SELECTSnoFROMSCWHERECno=C5)4. 使用标准SQL嵌套语句査询只选修了一门课程的学员姓名和所属单位SELECTSN,SDFROMSWHERESnoIN(SELECTSnoFROMSCinnerJOINCONSC.Cno=C.C

12、noGROUPBYSnoHAVINGCOUNT(*)=1)5. 查询选修了课程的学员人数SELECT学员人数=COUNT(DISTINCTSno)FROMSC6查询选修课程超过5门的学员学号和所属单位SELECTSN,SDFROMSWHERESnoIN(SELECTSnoFROMSCGROUPBYSnoHAVINGCOUNT(DISTINCTCno)5)学生关系。SNO为学号,SNAME为姓名课程关系。CNO为课程号,CNAME为课程名选课关系。GRADE为成绩四、问题描述:已知关系模式:S(SNO,SNAME)C(CNO,CNAME,TEACHER)TEACHER为任课教师SC(SNO,CN

13、O,GRADE)要求实现如下5个处理:1找出没有选修过“李明”老师讲授课程的所有学生姓名2列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩3列出既学过“1”号课程,又学过“2”号课程的所有学生姓名4列出“1”号课成绩比“04010002”号同学该门课成绩高的所有学生的学号5列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩参考答案:1找出没有选修过“李明”老师讲授课程的所有学生姓名selectsnamefromswherenotexists(select*fromc,o=oANDc.teacher=N李明ANDs.sno=sc.sno)参考:selectsno,snamefromswheresnonotin(selectsnofromsc,o=oANDc.teacher=Nliu)2列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩SELECTS.SNO,SNAME,AVG_GRADE=AVG(SC.GRADE)FROMS,SCWHEREGRADE=2SELECTS.SNO,S.SNAME,AVG_GRADE=AVG(SC.GR

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 商业计划书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号