SQL练习题

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

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

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

资源描述

测试表格--1.学生表Student(S#,Sname,Sage,Ssex)--S#学生编号,Sname学生姓名,Sage出生年月,Ssex学生性别--2.课程表Course(C#,Cname,T#)--C#--课程编号,Cname课程名称,T#教师编号--3.教师表Teacher(T#,Tname)--T#教师编号,Tname教师姓名--4.成绩表SC(S#,C#,score)--S#学生编号,C#课程编号,score分数创建测试数据学生表StudentcreatetableStudent(S#varchar(10),Snamenvarchar(10),Sagedatetime,Ssexnvarchar(10))insertintoStudentvalues('01',N'赵雷','1990-01-01',N'男')insertintoStudentvalues('02',N'钱电','1990-12-21',N'男')insertintoStudentvalues('03',N'孙风','1990-05-20',N'男')insertintoStudentvalues('04',N'李云','1990-08-06',N'男')insertintoStudentvalues('05',N'周梅','1991-12-01',N'女')insertintoStudentvalues('06',N'吴兰','1992-03-01',N'女')insertintoStudentvalues('07',N'郑竹','1989-07-01',N'女')insertintoStudentvalues('08',N'王菊','1990-01-20',N'女')科目表CoursecreatetableCourse(C#varchar(10),Cnamenvarchar(10),T#varchar(10))insertintoCoursevalues('01',N'语文','02')insertintoCoursevalues('02',N'数学','01')insertintoCoursevalues('03',N'英语','03')教师表TeachercreatetableTeacher(T#varchar(10),Tnamenvarchar(10))insertintoTeachervalues('01',N'张三')insertintoTeachervalues('02',N'李四')insertintoTeachervalues('03',N'王五')成绩表SCcreatetableSC(S#varchar(10),C#varchar(10),scoredecimal(18,1))insertintoSCvalues('01','01',80)insertintoSCvalues('01','02',90)insertintoSCvalues('01','03',99)insertintoSCvalues('02','01',70)insertintoSCvalues('02','02',60)insertintoSCvalues('02','03',80)insertintoSCvalues('03','01',80)insertintoSCvalues('03','02',80)insertintoSCvalues('03','03',80)insertintoSCvalues('04','01',50)insertintoSCvalues('04','02',30)insertintoSCvalues('04','03',20)insertintoSCvalues('05','01',76)insertintoSCvalues('05','02',87)insertintoSCvalues('06','01',31)insertintoSCvalues('06','03',34)insertintoSCvalues('07','02',89)insertintoSCvalues('07','03',98)1.查询01课程比02课程成绩高的学生的信息及课程分数1.1查询同时存在01课程和02课程的情况1.2查询存在01课程但可能不存在02课程的情况(不存在时显示为null)1.3查询不存在01课程但存在02课程的情况2.查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩3.查询在SC表存在成绩的学生信息4.查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为null)4.1查有成绩的学生信息5.查询「李」姓老师的数量6.查询学过「张三」老师授课的同学的信息7.查询没有学全所有课程的同学的信息8.查询至少有一门课与学号为01的同学所学相同的同学的信息9.查询和01号的同学学习的课程完全相同的其他同学的信息10.查询没学过张三老师讲授的任一门课程的学生姓名11.查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩12.检索01课程分数小于60,按分数降序排列的学生信息13.按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩14.查询各科成绩最高分、最低分和平均分:以如下形式显示:课程ID,课程name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率及格为=60,中等为:70-80,优良为:80-90,优秀为:=90要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列15.按各科成绩进行排序,并显示排名,Score重复时保留名次空缺15.1按各科成绩进行排序,并显示排名,Score重复时合并名次16.查询学生的总成绩,并进行排名,总分重复时保留名次空缺16.1查询学生的总成绩,并进行排名,总分重复时不保留名次空缺17.统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[60-0]及所占百分比18.查询各科成绩前三名的记录19.查询每门课程被选修的学生数20.查询出只选修两门课程的学生学号和姓名21.查询男生、女生人数22.查询名字中含有「风」字的学生信息23.查询同名同性学生名单,并统计同名人数24.查询1990年出生的学生名单25.查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列26.查询平均成绩大于等于85的所有学生的学号、姓名和平均成绩27.查询课程名称为「数学」,且分数低于60的学生姓名和分数28.查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况)29.查询任何一门课程成绩在70分以上的姓名、课程名称和分数30.查询不及格的课程31.查询课程编号为01且课程成绩在80分以上的学生的学号和姓名32.求每门课程的学生人数33.成绩不重复,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩34.成绩有重复的情况下,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩35.查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩36.查询每门功成绩最好的前两名37.统计每门课程的学生选修人数(超过5人的课程才统计)。38.检索至少选修两门课程的学生学号39.查询选修了全部课程的学生信息40.查询各学生的年龄,只按年份来算41.按照出生日期来算,当前月日出生年月的月日则,年龄减一42.查询本周过生日的学生43.查询下周过生日的学生44.查询本月过生日的学生45.查询下月过生日的学生答案参考,亲测,如有更优解答,有劳各位献上,供大家学习参考[sql]viewplaincopy1.selectA.*,B.C#,B.scorefrom(select*fromSCwhereC#='01')A2.leftjoin(select*fromSCwhereC#='02')B3.onA.S#=B.S#4.whereA.scoreB.score5.--1查询“01”课程比02课程成绩高的学生的信息及课程分数6.7.select*from(select*fromSCwhereC#='01')A8.leftjoin(select*fromSCwhereC#='02')BonA.S#=B.S#9.whereB.S#isnotnull10.--1.1查询同时存在01课程和02课程的情况11.12.select*from(select*fromSCwhereC#='01')A13.leftjoin(select*fromSCwhereC#='02')BonA.S#=B.S#14.--1.2查询存在01课程但可能不存在02课程的情况(不存在时显示为null)15.16.select*fromSCwhereC#='02'andS#notin(selectS#fromSCwhereC#='01')17.--1.3查询不存在01课程但存在02课程的情况18.19.selectA.S#,B.Sname,A.dcfrom(selectS#,AVG(score)dcfromSCgroupbyS#)A20.leftjoinStudentBonA.S#=B.S#whereA.dc=6021.--2.查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩22.23.select*fromStudentwhereS#in(selectdistinctS#fromSC)24.--3.查询在SC表存在成绩的学生信息25.26.selectB.S#,B.Sname,A.选课总数,A.总成绩from27.(selectS#,COUNT(C#)选课总数,sum(score)总成绩fromSCgroupbyS#)A28.rightjoinStudentBonA.S#=B.S#29.--4.查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为null)30.31.selectA.S#,B.Sname,A.选课总数,A.总成绩from32.(selectS#,COUNT(C#)选课总数,sum(score)总成绩fromSCgroupbyS#)A33.leftjoinStudentBonA.S#=B.S#34.--4.1查有成绩的学生信息35.36.selectCOUNT(*)李姓老师数量fromTeacherwhereTnamelike'李%'37.--5.查询「李」姓老师的数量38.39.select*fromStudent40.whereS#in(selectdistinctS#fromSC41.whereC#=(selectC#fromCourse42.whereT#=(selectT#fromTeacherwhereTname='张三')))43.--6.查询学过「张三」老师授课的同学的信息44.45.select*fromStudentwhereS#in(selectS#fromSCgroupbyS#havingCOUNT(C#)3)46.--7.查询没有学全所有课程的同学的信息47.48.select*fromStudent49.whereS#in(selectdistinctS#fromSCwhereC#in(selectC#fromSCwhereS#='01')50.)51.--8.查询至少有一门课与学号为01的同学所学相同的同学的信息52.53.select*fromStudent54.whereS#in(selectS#fromSCwhereC#in(selectdistinctC#fromSCwhereS#='01')andS#'01'55.groupbyS#56.havingCOUNT(C#)=3)57.--9.查询和01号的同学学习的课程完全相同的其他同学的信息58.59.selectSnamefromStudent60.whereS#notin(selectS#fromSC61.whereC#in(selectC#

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

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

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

×
保存成功