常见的SQL面试题:经典50例

如题所述

SQL基础知识整理


组函数: 去重 distinct() 统计总数sum() 计算个数count() 平均数avg() 最大值max() 最小数min()


多表连接: 内连接(省略默认inner) join ...on..左连接left join tableName as b on a.key ==b.key右连接right join 连接union(无重复(过滤去重))和union all(有重复[不过滤去重])


oracle(SQL server)数据库



    数据库对象:表(table) 视图(view) 序列(sequence) 索引(index) 同义词(synonym)
    视图: 存储起来的 select 语句

    可以对简单视图进行 DML 操作


    复杂视图

    复杂视图不能进行 DML 操作




    序列:用于生成一组有规律的数值。(通常用于为主键设置值)
    索引:提高查询效率

何时创建索引:



    问题:查询工资大于149号员工工资的员工的信息
    问题:查询与141号或174号员工的manager_id和department_id相同的其他员工的employee_id, manager_id, department_id

case...when ... then... when ... then ... else ... end


SQL 优化:能使用 EXISTS 就不要使用 IN


常见的SQL面试题:经典50题


已知有如下4张表:



    创建数据库和表

为了演示题目的运行过程,我们先按下面语句在客户端navicat中创建数据库和表。


如何你还不懂什么是数据库,什么是客户端navicat,可以先学习这个:



    创建学生表(student)
    创建成绩表(score)
    创建课程表(course)
    创建教师表(teacher)

如何向表中添加数据,以及添加结果。


三、50道面试题

查询姓“猴”的学生名单


查询姓“孟”老师的个数


查询汇总统计分组分析

面试题:查询课程编号为“0002”的总成绩


查询选了课程的学生人数


查询各科成绩最高和最低的分,以如下的形式显示:课程号,最高分,最低分


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


查询男生、女生人数


查询平均成绩大于60分学生的学号和平均成绩


查询至少选修两门课程的学生学号


查询同名同性学生名单并统计同名人数


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


查询每门课程的平均成绩,结果按平均成绩升序排序,平均成绩相同时,按课程号降序排列


检索课程编号为“0004”且分数小于60的学生学号,结果按按分数降序排列


统计每门课程的学生选修人数(超过2人的课程才统计)


要求输出课程号和选修人数,查询结果按人数降序排序,若人数相同,按课程号升序排序


查询两门以上不及格课程的同学的学号及其平均成绩


复杂查询

查询所有课程成绩小于60分学生的学号、姓名


查询没有学全所有课的学生的学号、姓名


查询出只选修了两门课程的全部学生的学号和姓名


1990年出生的学生名单


查询各科成绩前两名的记录


多表查询

查询所有学生的学号、姓名、选课数、总成绩


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


查询学生的选课情况:学号,姓名,课程号,课程名称


查询出每门课程的及格人数和不及格人数


使用分段[100-85],[85-70],[70-60],[<60]来统计各科成绩,分别统计:各分数段人数,课程号和课程名称


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


使用sql实现将该表行转列为下面的表结构

温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜