MySQL面试题
第一题
1.取出上表中30行到40行的记录
Select * from S_Table limit 30,10;
2.查询出成绩高于班级1平均分的所有学生的班级及人员数目
<1>.先求班级1的平均分
Select avg(score) from s_table where class=1;
<2>查询出分数高于班级1平均分的所有学生的 班级 以级人员数目
Select class,count(*) from s_table where score >
(Select avg(score) from s_table where class=1) group by class;
第二题
3个表
S(S#学号,SN姓名,SD所属单位,SA年龄)
C(C#课程编号,CN课程名称)
SC(S#学号,C#课程号,G学习成绩)
1.使用标准嵌套sQL语句查询选修课程名称为“税收基础“的学员学号和姓名
<1>.根据课程名字查询课程号
Select c# from c where cn=’税收基础’;
<2>.根据课程号在sc表中查询学号
Select s# from sc where c# in(Select c# from c where cn=’税收基础’);
<3>.根据学号到S表中查询信息
Select s#,sn from s where s# in (Select s# from sc where c# in(Select c# from c where cn=’税收基础’));
2.查询选修课程为“C2”的所有学员的学号、姓名、所属单位、成绩,并按照所属单位升序、成降序排列
Select s.s#,s.sn,s.sd,sc.g from S
inner join sc on s.s#=sc.s#
Inner join c on sc.c#=c.c#
where[经测试这边where -> and似乎也可以] c.cn=’c2’ order by s.sd asc,sc.g desc;
3.查询所有学员选修课程的数量,列出学号、姓名、所选课程数,并按照课程数降序
Select s.s#,s.sn,count(*) from s
inner join sc on sc.s# =s.s#
Group by sc.s#;
4.查询选修课程数超过5次学员的学号、姓名、所属里位、所选课程数,并按照学号升序
Select s.s#,s.sn,count(*),s.sd from s
inner join sc on sc.s# =s.s#
Group by sc.s#;
Having count(*)>5
Order by s.s# asc;
第三题
1.输出每个学生的各科成绩
Select s.class, s.studname,sc.score
From student as s
Inner join score as sc
On s.studid=sc.studid;
2.分别输出每个班级男生各科成绩和及女生各科成绩之和(结果在一张表中反映)
Select sc.class,s.sex,sum(sc.score)
From student as s
Inner join score as sc
On s.studid=sc.studid
Group by sc.class,s.sex;
第四题
score(成绩表):
sc_number( 学号),sc_name(姓名),sc_sex(性别),sc_courseId(课程编号),
sc_score(分数),sc_ismarkup 当前考试是否为补考(0:补考,1:非补考)
course课程表:co_id (课程号),co_name(课程名称)co_desc(课程介绍)
1.如果学号的前两位表示年级,要查找98级女生的姓名,请写出相应的sql语句
Select sc_name from score where sc_number like ‘98%’ and sc_sex=’女’;
2.要查找所有需要补考(小于60分)的学生姓名和这门课程的名称和成绩,请相应的SQL语句
Select sc.sc_name,sc.sc_score,c.co_name
From score as sc
Inner join course as c on sc. sc_courseId=c.co_id
Where sc.sc_score<60;
如何实现将成绩转换成补考或者不补考的状态?
Select sc_number from score where sc_score<60;
Update score set sc_ismarkup=0 where sc_number in(Select sc_number from score where sc_score<60);
3.查询每个学生平均分,并以平均分排序
Select sc_number,avg(sc_score) from score
group by sc_number order by avg(sc_score) desc;