常见的SQL面试题:经典50例【值得收藏】

以下列出了一些典型的SQL面试题目及其简要解析,内容涉及基础概念、多表操作以及Oracle数据库中的关键元素:
1 . SQL基础概念
去除重复记录:通过DISTINCT关键字实现,例如:SELECT DISTINCT column FROM table。

数据总计:利用SUM函数进行计算,如:SELECT SUM() FROM table。

计数统计:采用COUNT函数,示例如:SELECT COUNT() FROM table。

计算平均值:使用AVG函数,例如:SELECT AVG() FROM table。

寻找最大值:通过MAX函数获取,如:SELECT MAX() FROM table。

查找最小值:运用MIN函数,例如:SELECT MIN() FROM table。

2 . 多表操作
内连接:通过JOIN...ON...语法实现,如:SELECT FROM table1 JOIN table2 ON table1 .key = table2 .key。

左连接:使用LEFT JOIN,例如:SELECT FROM table1 LEFT JOIN table2 ON table1 .key = table2 .key。

右连接:RIGHT JOIN语法与左连接相似,但结果以右表为主。

结果集合并:UNION用于合并并去重,如:SELECT column FROM table1 UNION SELECT column FROM table2
结果集合并(不重复):UNION ALL用于合并但不去重,如:SELECT column FROM table1 UNION ALL SELECT column FROM table2
3 . Oracle数据库元素
表:数据组织的结构化单元。

视图:存储查询结果的虚拟表,用于简化查询或增强安全性。

序列:生成有序数值的对象,常用于主键生成。

索引:提升查询性能的工具,可自动或手动创建。

同义词:数据库对象的替代名,用于简化访问或增强安全性。

4 . 面试题示例
数据库及表创建:按照步骤创建学生、成绩、课程和教师表,并填充数据,一般涉及DDL语句如CREATE TABLE。

姓氏查询:检索特定姓氏的学生名单或统计特定姓氏教师的人数,需使用LIKE操作符进行模糊搜索。

数据汇总:如计算特定课程的总成绩、统计选课学生人数、获取最高和最低分,分别使用SUM、COUNT、MAX和MIN函数。

分组统计:例如统计每门课程的选课人数、男生和女生数量、平均成绩超过6 0分的学生信息,以及至少选修两门课程的学生名单,涉及GROUP BY、HAVING子句和条件筛选。

复杂查询:包括同名同性学生名单及同名人数统计、不及格课程查询、平均成绩计算、特定条件下的学生查询等,可能使用子查询、窗口函数、ORDER BY、条件筛选和GROUP BY。

多表查询:处理涉及多表连接的操作,如查询学生详细信息、平均成绩超过特定分数的学生信息、课程选课情况等,通常使用JOIN操作、子查询或窗口函数以及GROUP BY和条件筛选。
上述题目全面覆盖了SQL的基础知识、多表连接、Oracle数据库对象及复杂查询等多个面试热点。

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

常见的SQL面试题涵盖了以下经典案例:涉及多表操作与连接的题目,例如:如何执行内连接以获取匹配记录,左连接以显示左表全部记录及其匹配的右表记录,以及右连接的用法。
此外,还有UNION与UNION ALL的区别,即如何合并查询结果,并掌握UNION去除重复记录而UNION ALL保留所有记录的规则。

在数据库对象管理方面,问题可能包括如何创建和使用视图,理解视图作为SELECT语句封装的作用,以及如何对视图执行DML操作。
序列的用途,例如生成主键值,也是常见的考察点。
索引的创建及其对查询效率的提升作用也是必考内容,了解索引在唯一约束列的自动创建以及手动创建方法同样重要。
同义词的用法简化对象引用,也是面试中的一个知识点。

表管理相关的问题包括如何通过DDL(数据定义语言)进行表的创建、修改和删除操作。

关于SQL优化技巧,了解何时使用EXISTS代替IN以提升查询效率是关键。

具体查询示例可能涉及:查询特定姓氏的学生或教师名单及其数量,例如查询姓“猴”的学生名单或姓“孟”的教师数量。
课程相关查询可能包括查找特定课程编号的成绩总和或选课学生人数。
成绩统计问题可能要求展示各科成绩的最高分和最低分,或者计算每门课程的选课人数。
学生人数统计可能涉及性别分布或平均成绩超过6 0分的学生信息。
课程选修情况可能要求查询选修至少两门课程的学生名单或成绩不及格的课程列表。

复杂查询示例可能包括:按特定顺序排序每门课程的平均成绩,检索特定课程且分数低于特定值的学生名单及其排序,统计每门课程的选课人数,以及查询选修两门以上不及格课程的学生名单及其平均成绩等。

这些示例全面覆盖了SQL面试中的常见问题,通过实际操作这些示例,可以加深对SQL语句编写和优化的理解,为面试做好充分准备。

SQL数据分析面试题

1 . 我们手头有张交易数据表叫user_goods_table,老板想知道各个用户在购买外卖时偏爱哪些品类,还要找出每个用户最常买的外卖是哪一类。
2 . 另外有张交易数据表user_sales_table,老板想知道支付金额排在前2 0%的那些用户。
3 . 还有一张用户登录表user_login_table,老板想知道那些连续七天都登录过平台的重要用户。
4 . 给定一张用户签到表user_attendence,这张表有三个字段:用户ID【user_id】,日期【date】,是否签到【is_sign_in】,其中is_sign_in是0代表没签到,1 代表签到。
4 -1 . 想计算到2 02 0年4 月2 7 日为止,每个用户已经连续签到的天数。
需要输出的字段是用户ID【user_id】和连续签到天数【recent_continuous_days】。
4 -2 . 还想计算一下有史以来,用户最大连续签到的天数。
需要输出的字段同样是用户ID【user_id】和最大连续签到天数。

常见的SQL面试题:经典50例【值得收藏】

SQL入门核心知识点回顾:
集合函数运用:利用distinct进行数据去重,sum进行求和,count统计数量,avg计算平均值,max找出最大值,min确定最小值。

连接查询技巧:掌握内连接(join...on...)实现数据整合,左连接(left join)保留左侧表全部数据,右连接补充右侧表数据,通过union去除结果重复项,unionall则保留所有记录。

Oracle数据库架构:
数据基础单元:表(table)、视图(view)、序列(sequence)、索引(index)、同义词(synonym)
视图功能:将select查询结果持久化存储
序列用途:生成连续数值序列,常用于主键赋值
索引优势:提升查询性能,自动为唯一约束字段创建,也可手动建立
数据操作分类:DDL定义表结构,DML数据修改,DCL权限控制
高级查询应用:
复杂条件处理:运用case when实现条件分支
性能优化建议:尽量避免使用IN操作符
面试真题演练: 1 . 基础建表:分步建立学生、成绩、课程、教师数据库表并填充数据 2 . 单表查询:
姓氏检索:列出姓"猴"的学生名单,统计姓"孟"教师人数 3 . 数据汇总:
成绩统计:计算课程0002 的总分,统计选课学生数量,确定各科最高分与最低分 4 . 分组分析:
选课分析:统计每门课程选课人数,男女学生分布,平均分超过6 0的学生名单,至少选修两门课的学生 5 . 特殊查询:
同名统计:找出同名同性学生并计数
不及格查询:按课程号降序排列不及格记录
统计分析:计算每门课程平均分,筛选课程0004 不及格学生 6 . 多表联合:
学生综合查询:获取所有学生的学号、姓名、选课数、总成绩
高分筛选:检索平均分8 5 分以上的学生信息
选课状态:分析学生选课情况
课程通过率:统计每门课程的及格人数与不及格人数
分数段分布:划分不同分数区间的学生数量
特定条件:筛选课程0003 成绩8 0分以上的学生