SQL查询及答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

一、单表查询练习1、查询学生信息表,查询学生张三的全部基本信息Select*fromA_studentinfowheresname='张三'2、查询学生信息表,查询学生张三和”李四”的基本信息Select*fromA_studentinfowheresname='张三'orsname='李四'3、查询学生信息表,查询姓张学生的基本信息Select*fromA_studentinfowheresnamelike'张%'4、查询学生信息表,查询姓名中含有四字的学生的基本信息Select*fromA_studentinfowheresnamelike'%四%'5、查询学生信息表,查询姓名长度为三个字,姓“李”,且最后一个字是“强”的全部学生信息。select*fromA_studentinfowheresnamelike'李_强'6、查询学生信息表,查询姓张或者姓”李”的学生的基本信息。Select*fromA_studentinfowheresnamelike'张%'orsnamelike'李%'7、查询学生信息表,查询姓张并且所属省份是北京的学生信息Select*fromA_studentinfowheresnamelike'张%'andprovince='北京'8、查询学生信息表,查询所属省份是北京、”新疆”、”山东”或者上海的学生的信息Select*fromA_studentinfowhereprovincein('北京','上海','新疆','山东')9、查询学生信息表,查询姓张,但是所属省份不是北京的学生信息Select*fromA_studentinfowheresnamelike'张%'andprovince!='北京'10、查询学生信息表,查询全部学生信息,并按照“性别”排序,性别相同的情况下按照“所属省份”排序,所属省份相同的情况下再按照“班级”排序select*fromA_studentinfoorderbysex,province,class11、查询学生信息表,查询现有学生都来自于哪些不同的省份selectdistinctprovinceas省份fromA_studentinfo12、查询学生选修信息表,查询没有填写成绩的学生的学号、课程号和成绩Select*fromA_studentcoursewherescoreisnull13、查询学生选修信息表,查询全部填写了成绩的学生的选修信息,并按照“成绩”从高到低进行排序Select*fromA_studentcoursewherescoreisnotnullorderbyscoredesc二、聚合函数练习1、统计学生信息表,统计共有多少个学生Selectcount(*)as学生数量fromA_studentinfo2、统计学生信息表,统计年龄大于20岁的学生有多少个Selectcount(*)as学生数量fromA_studentinfowhere(2008-yearofbirth)203、统计学生信息表,统计入学时间在1980年至1982年的学生人数selectcount(*)as学生数量fromA_studentinfowhereenrollmentbetween'1998-01-01'and'2003-12-30'对比以下查询方式,看看有何不同,为什么?selectcount(*)as学生数量fromA_studentinfowhereenrollmentbetween'1998'and'2003'4、统计学生选修信息表,统计学号为S001的学生的平均成绩Selectavg(score)as平均成绩fromA_studentcoursewheresno='S001'5、统计学生选修信息表,统计学号为S001的学生的总成绩selectsum(score)as总成绩fromA_studentcoursewheresno='S001'6、统计学生选修信息表,查询课程号为”C001”的课程的最高成绩selectmax(score)as最高成绩fromA_studentcoursewherecno='C001'7、统计学生信息表,查询所有学生中的最小年龄是多少select2008-min(yearofbirth)as最大年龄fromA_studentinfo三、分组查询练习1、统计学生选修信息表,统计每个课程的选修人数selectcno,count(*)as学生数量fromA_studentcoursegroupbycno2、统计学生选修信息表,统计每个同学的总成绩selectsno,sum(score)as总成绩fromA_studentcoursegroupbysno3、统计学生信息表,统计每个班级中每种性别的学生人数,并按照班级排序selectclassas班级,sexas性别,count(*)as人数fromA_studentinfogroupbyclass,sexorderbyclass4、统计学生选修信息表,统计每门课程的平均成绩,并按照成绩降序排序Selectcno,avg(score)as平均成绩fromA_studentcoursegroupbycnoorderbyavg(score)desc5、统计学生选修信息表,显示有两门以上课程不及格的学生的学号Selectsnoas不及格学生学号fromA_studentcoursewherescore60groupbysnohavingcount(*)16、统计学生信息表,统计每个班级中的最大年龄是多少selectclassas班级,2008-min(yearofbirth)as最大年龄fromA_studentinfogroupbyclass四、嵌套查询练习1、用子查询实现,查询选修“高等数学”课的全部学生的总成绩selectsum(score)as高等数学总成绩fromA_studentcoursewherecno=(selectcnofromA_courseinfowheresubject='高等数学')2、用子查询实现,统计学生选修信息表,显示学号为S001的学生在其各科成绩中,最高分成绩所对应的课程号和成绩selectscore,cnofromA_studentcoursewheresno='S001'andscore=(selectmax(score)fromA_studentcoursewheresno='S001')思考:如果该学号学生有两个课程分数都为最高的100分,查询会有什么结果3、用子查询实现,查询2班选修数据库技术课的所有学生的成绩之和selectsum(score)as数据库技术总成绩fromA_studentcoursewherecno=(selectcnofromA_courseinfowheresubject='数据库技术')andsnoin(selectsnofromA_studentinfowhereclass='2')4、用子查询实现,查询3班张三同学的测试管理成绩selectscorefromA_studentcoursewherecno=(selectcnofromA_courseinfowheresubject='测试管理')andsnoin(selectsnofromA_studentinfowhereclass='3'andsname='张三')五、联接查询练习1、查询张三的各科考试成绩,要求显示姓名、课程号和成绩selectsnameas姓名,cnoas课程号,scoreas成绩fromA_studentinfo,A_studentcoursewhereA_studentinfo.sno=A_studentcourse.snoandsname='张三'2、查询张三的各科考试成绩中,哪科没有记录考试成绩,要求显示姓名、课程号和成绩selectsnameas姓名,cnoas课程号,scoreas成绩fromA_studentinfo,A_studentcoursewhereA_studentinfo.sno=A_studentcourse.snoandsname='张三'andscoreisnull3、查询张三的各门课程成绩,要求显示姓名、课程名称和成绩selectsnameas姓名,subjectas课程名称,scoreas成绩fromA_studentinfo,A_courseinfo,A_studentcoursewhereA_studentcourse.sno=A_studentinfo.snoandA_studentcourse.cno=A_courseinfo.cnoandA_studentinfo.sname='张三'4、查询3班张三的测试管理成绩,要求显示姓名、成绩selectsnameas姓名,scoreas成绩fromA_studentcourse,A_courseinfo,A_studentinfowhereA_studentcourse.cno=A_courseinfo.cnoandA_studentcourse.sno=A_studentinfo.snoandsubject='测试管理'andclass='3'andsname='张三'5、查询所有2000年以前入学的,各班男生的各科考试平均成绩selectclassas班级,avg(score)as男生平均成绩fromA_studentcourse,A_courseinfo,A_studentinfowhereA_studentcourse.cno=A_courseinfo.cnoandA_studentcourse.sno=A_studentinfo.snoandsex='男'andenrollment'2000-01-01'groupbyclass六、外联接查询查询李坚强所有课程的成绩,并显示学号、姓名、课程号和成绩,没有成绩记录的学号包括:('S009','S010','S011')1、使用左联接selectA_studentinfo.snoas学生表学号,snameas姓名,A_studentcourse.snoas成绩表学号,cnoas课程号,scoreas成绩fromA_studentinfoleftjoinA_studentcourseonA_studentinfo.sno=A_studentcourse.snowheresname='李坚强'2、使用右联接selectA_studentinfo.snoas学生表学号,snameas姓名,A_studentcourse.snoas成绩表学号,cnoas课程号,scoreas成绩fromA_studentcourserightjoinA_studentinfoonA_studentinfo.sno=A_studentcourse.snowheresname='李坚强'3、对比等值连接selectsname,scorefromA_studentinfo,A_studentcoursewhereA_studentinfo.sno=A_studentcourse.snoandsname='李坚强'七、补充提高1、查询“张三”比“王三”入学早几年selectA.snameas姓名,year(A.enrollment)as入学时间,B.snameas姓名,year(B.enrollment)as入学时间,datediff(year,A.enrollment,B.enrollment)as年差fromA_studentinfoA,A_studentinfoBwhereA.sname='张三'andB.sname='王三'2、查询所在班级和该班内学生的年龄之和,其中每个人的年龄都大于20岁,每个班的年龄之和大于60岁selectclassas班级,sum(2008-yearofbirth)as年龄和

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功