SQL面试题【转】

写在前面的话

本文参考原博《走向面试之数据库基础:一、你必知必会的SQL语句练习-Part 1》和《走向面试之数据库基础:一、你必知必会的SQL语句练习-Part 2》进行练习,部分题目在不变化其练习目的的情况下进行了题意改动,并删除部分重复和无表的题目。

 

在此之前已练习完两遍并分别放在WizNote和Github,其中第二遍在Github上针对个人的sql弱项题目进行了更详细的说明(Github:MyTraining/sql),随着越来越熟练,本文作为第三次练习,部分重点题目的详细解析和想法在这里就没有具体描述,或许以后会补上,但是谁知道呢(摊手)。

涉及的表结构和测试数据

使用数据库软件直接导出的SQL(偷懒直接把Part1和Part2的导在一起的,因为表名各不相同所以这里并不影响练习使用),数据库是MySQL。

 

Student(name,age,sex,studentNo)    学生表 
Course(courseNo,name,teacherNo)         课程表 
SCORE(studentNo,courseNo,score)           成绩表 
Teacher(teacherNo,name)           教师表

 

--> 下载地址戳这里 <--

Part 1 练习题和参考解

(1)查询“001”课程比“002”课程成绩低的所有学生的学号、001学科成绩、002学科成绩

(2)查询平均成绩大于60分的同学的学号和平均成绩

(3)查询所有同学的学号、姓名、选课数、总成绩

(4)查询姓“李”的老师的个数

(5)查询没学过“叶平”老师课的同学的学号、姓名

(6)查询学过“001”并且也学过编号“002”课程的同学的学号、姓名

(7)查询学过“叶平”老师所教的所有课的同学的学号、姓名

(8)查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名

(9)查询有课程成绩小于60分的同学的学号、姓名

(10)查询没有学全所有课的同学的学号、姓名

(11)查询至少有一门课与学号为“001”的同学所学相同的同学的学号和姓名

(12)查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名(和11题撞脸,排除1号同学就可以了)

(13)把“score”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩

(14)查询和“002”号的同学学习的课程完全相同的其他同学学号和姓名

(15)删除学习“叶平”老师课的SC表记录

(16)向SC表中插入一些记录,这些记录要求符合以下条件:1、没有上过编号“002”课程的同学学号;2、插入“002”号课程的平均成绩

(17)按学号由低到高显示所有学生的“语文”、“数学”、“英语”三门的课程成绩,按如下形式显示: 学生ID,语文,数学,英语,有效课程数,有效平均分

(18)查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分;

(19)按各科平均成绩从低到高和及格率的百分数从高到低顺序;

(20)查询不同老师所教不同课程平均分从高到低显示

(21)统计列印各科成绩,各分数段人数:课程ID,课程名称,(100-85),(85-70,(70-60),( 低于60)

(22)查询各科成绩前三名的记录(不考虑成绩并列情况)

(23)查询每门课程被选修的学生数

(24)查询出只选修了一门课程的全部学生的学号和姓名

(25)查询男生、女生的人数

(26)查询同名同姓学生名单,并统计同名人数

(27)查询1991年出生的学生名单

(28)查询每门课程的平均成绩,结果按平均成绩升序排列

(29)查询平均成绩大于85的所有学生的学号、姓名和平均成绩

(30)查询课程名称为“数学”,且分数低于60的学生姓名和分数

(31)查询所有学生的选课情况

(32)查询任何一门课程成绩在70分以上的姓名、课程名称和分数

(33)查询不及格的课程,并按课程号从大到小排列

(34)查询课程编号为003且课程成绩在80分以上的学生的学号和姓名

(35)求选了课程的学生人数

(36)查询选修“杨艳”老师所授课程的学生中,成绩最高的学生姓名及其成绩

(37)查询各个课程及相应的选修人数

(38)查询不同课程但成绩相同的学生的学号、课程号、学生成绩

(39)查询每门课程成绩最好的前两名

 

参考答案

https://www.cnblogs.com/deng-cc/p/6515166.html

 

 

 

 

你可能感兴趣的:(MySQL)