SQL面试题目汇总.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

SQL面试题目汇总

一、基础语法类(入门级,适用于实习生/初级数据岗)

题目1:请简述SQL的四大核心操作(CRUD)及其对应的关键字,并分别写出示例语句。

核心考点:SQL基础概念、数据操作语句的掌握程度。

答题思路:明确CRUD分别对应创建(Create)、读取(Read)、更新(Update)、删除(Delete),结合常见表结构(如用户表user)给出简洁示例,注意语法规范性。

参考回答:“SQL的CRUD是数据操作的核心,分别对应以下操作及关键字:

1.创建(Create):通过INSERT关键字实现,用于向表中插入数据。示例:

INSERTINTOuser(id,name,age,register_time)VALUES(1,张三,25,2025-01-0110:00:00);

2.读取(Read):通过SELECT关键字实现,用于查询表中数据。示例:

SELECTid,name,ageFROMuserWHEREage20;

3.更新(Update):通过UPDATE关键字实现,用于修改表中已有数据,需配合WHERE条件避免全表更新。示例:

UPDATEuserSETage=26WHEREid=1;

4.删除(Delete):通过DELETE关键字实现,用于删除表中数据,同样需加WHERE条件。示例:

DELETEFROMuserWHEREid=1;

注意:Update和Delete语句若省略WHERE条件,会对表中所有数据生效,实际工作中需格外谨慎。”

题目2:请解释SQL中WHERE子句与HAVING子句的区别,并说明各自的使用场景。

核心考点:条件筛选逻辑的理解,聚合函数相关筛选的应用。

答题思路:从作用对象、使用时机、是否支持聚合函数三个维度区分,结合GROUPBY子句的使用场景举例说明,突出HAVING针对聚合结果筛选的核心特性。

参考回答:“WHERE与HAVING均用于数据筛选,但核心区别体现在三个方面:

1.作用对象不同:WHERE作用于单条数据记录,筛选的是原始数据行;HAVING作用于聚合后的分组结果,筛选的是分组数据。

2.使用时机不同:WHERE在数据分组(GROUPBY)和聚合函数计算之前执行,先过滤数据再聚合;HAVING在分组和聚合之后执行,基于聚合结果过滤。

3.支持的表达式不同:WHERE不支持使用聚合函数(如SUM、COUNT)作为筛选条件;HAVING专门用于聚合函数的结果筛选。

使用场景示例:若需查询‘订单金额大于1000的用户及其总消费额’,需先用WHERE筛选单条订单记录,再用GROUPBY分组并聚合,最后用HAVING过滤总消费额:

SELECTuser_id,SUM(order_amount)AStotal_amount

FROMorders

WHEREorder_amount1000--先筛选单条大额订单

GROUPBYuser_id

HAVINGtotal_amount5000;--再筛选总消费超5000的用户”

题目3:请写出SQL语句,实现从“学生表(student)”中查询“班级(class_id)为101,且语文成绩(chinese_score)排名前10的学生姓名、语文成绩”,要求成绩相同者并列排名,且按成绩降序排列。

核心考点:排序、排名函数的使用,条件筛选的组合应用。

答题思路:明确“并列排名”需使用RANK()窗口函数,而非ROW_NUMBER(),先通过WHERE筛选班级条件,再用窗口函数按成绩排序,最后取排名前10的结果。

参考回答:“需使用RANK()窗口函数实现并列排名,步骤为筛选班级、计算排名、过滤结果,SQL语句如下:

WITHstudent_rankAS(

SELECT

name,

chinese_score,

RANK()OVER(ORDERBYchinese_scoreDESC)ASrank_num--按语文成绩降序排名,成绩相同排名一致

FROMstudent

WHEREclass_id=101--筛选101班学生

)

SELECTname,chinese_score

FROMstudent_rank

WHERErank_num=10

ORDERBYrank_num;

若使用DENSE_RANK()函数,会使排名连续(如1、1、2而非1、1、3),需根据面试要求调整;若用ROW_NUMBER(),则成绩相同会生成不同排名,不符合‘并列’需求。”

二、查询逻辑类(进阶

文档评论(0)

千语资料 + 关注
实名认证
文档贡献者

最新资料更新。

1亿VIP精品文档

相关文档