版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SQL基础面试题及详细答案(初级)说明:本套题目为职场初级SQL高频面试题,适配数据运营、开发实习生、初级开发、数据分析岗面试,题型由浅入深,答案贴合实际工作写法,简洁实用。默认测试数据表(所有题目均基于以下两张表,统一场景):1.用户表user字段:user_id(用户ID,主键)、user_name(用户名)、age(年龄)、gender(性别)、create_time(注册时间)2.订单表order字段:order_id(订单ID,主键)、user_id(关联用户ID)、order_money(订单金额)、order_status(订单状态)、order_time(下单时间)一、基础查询类(入门必考)1、SQL中select、where、groupby、having、orderby、limit的执行顺序是什么?答案:执行顺序和书写顺序不一致,真实执行顺序:from表→where筛选→groupby分组→聚合函数计算→having分组筛选→select查字段→orderby排序→limit限制条数补充说明:where是分组前筛选,不能用聚合函数;having是分组后筛选,可以使用聚合函数,这是两者最核心的区别。2、查询用户表中所有性别为男、年龄大于20岁的用户,只展示用户ID、用户名、年龄答案:sql
SELECTuser_id,user_name,age
FROMuser
WHEREgender='男'ANDage>20;3、去重关键字是什么?查询用户表中所有不重复的性别答案:去重关键字为DISTINCTsql
SELECTDISTINCTgenderFROMuser;4、模糊查询关键字是什么?查询用户名包含“张”的所有用户答案:模糊查询使用LIKE,搭配通配符%(匹配任意字符)、_(匹配单个字符)sql
SELECT*FROMuserWHEREuser_nameLIKE'%张%';补充:%张代表以张结尾,张%代表以张开头5、查询年龄为空的用户数据,为什么不能用age=null?答案:null在SQL中代表未知值,不能用=判断,必须使用ISNULL/ISNOTNULL正确写法:sql
SELECT*FROMuserWHEREageISNULL;二、聚合函数与分组查询(高频)1、常用的SQL聚合函数有哪些?答案:count():统计条数;sum():求和;avg():平均值;max():最大值;min():最小值注意:count(*)统计所有数据,包含null;count(字段)不统计字段为null的数据2、统计订单表的总订单数、总交易金额、平均订单金额答案:sql
SELECT
COUNT(order_id)AS总订单数,
SUM(order_money)AS总交易金额,
AVG(order_money)AS平均订单金额
FROMorder;3、按用户分组,统计每个用户的下单数量,只展示下单数量≥2的用户答案:sql
SELECTuser_id,COUNT(order_id)AS下单数
FROMorder
GROUPBYuser_id
HAVINGCOUNT(order_id)>=2;考点解析:分组后的条件筛选必须用having,不能用where4、查询订单金额最高的一条订单数据答案:sql
SELECT*FROMorderORDERBYorder_moneyDESCLIMIT1;三、联表查询(核心必考)1、SQL常用的联表查询有几种?区别是什么?答案:共4种核心联表方式:1、innerjoin(内连接):只查询两张表中匹配成功的数据,交集数据2、leftjoin(左连接):以左表为准,左表所有数据全部展示,右表匹配不到则显示null3、rightjoin(右连接):以右表为准,右表所有数据全部展示,左表匹配不到则显示null4、fulljoin(全连接):展示两张表所有数据,无匹配则显示null(部分数据库如MySQL不支持)2、查询所有用户的用户名、下单金额,包含从未下单的用户(展示金额为null)答案:需求需要保留所有用户,使用左连接,用户表为左表sql
SELECTu.user_name,o.order_money
FROMuseru
LEFTJOINorderoONu.user_id=o.user_id;3、查询有过下单记录的用户姓名、订单金额答案:只需匹配有订单的用户,使用内连接sql
SELECTu.user_name,o.order_money
FROMuseru
INNERJOINorderoONu.user_id=o.user_id;四、子查询与进阶基础1、查询下单金额大于平均订单金额的所有订单答案:sql
SELECT*FROMorder
WHEREorder_money>(SELECTAVG(order_money)FROMorder);2、in和exists的区别?答案:1、in:先查询子查询结果集,再匹配主表数据,子查询数据量小的时候效率高2、exists:遍历主表数据,逐条判断子查询是否存在匹配数据,主表数据量小、子查询数据量大时效率更高简单总结:小表驱动大表用in,大表驱动小表用exists3、查询没有下过单的用户信息答案:两种常用写法写法1(子查询notin):sql
SELECT*FROMuser
WHEREuser_idNOTIN(SELECTDISTINCTuser_idFROMorder);写法2(左连接判空,工作更常用,效率更高):sql
SELECTu.*FROMuseru
LEFTJOINorderoONu.user_id=o.user_id
WHEREo.order_idISNULL;五、基础概念面试问答(口头面试必考)1、union和unionall的区别?答案:1、union:合并查询结果,自动去重,效率低2、unionall:直接合并所有结果,不去重,效率更高工作中若无去重需求,优先使用unionall2、where和having的区别?答案:1、执行时机:where在分组前筛选,having在分组后筛选2、函数支持:where不能使用聚合函数,having可以使用聚合函数3、适用场景:普通字段筛选用where,分组后的统计结果筛选用having3、索引的作用是什么?答案:索引是数据库优化手段,核心作用是提升查询效率,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电力设施检修维护服务合同协议三篇
- 落实合作细节的商洽函8篇范文
- 化工企业仓储管理系统配置实施手册
- 软件行业软件研发及运维流程优化方案
- 企业文化建设与员工激励系统设计指南
- 数据中心电力系统故障处理方案手册
- 餐饮连锁店店长餐厅运营与服务品质KPI考核表
- 酒店管理与客户体验升级策略手册
- (正式版)DB14∕T 703-2012 《气象灾害等级划分》
- 电力电子变换器热管理方案指引
- 2026-2027学年八年级上学期统编版历史期中测试卷(含答案)
- 分公司章程范本
- 2026年中级注册安全工程师《金属非金属矿山安全实务》考试真题及答案
- 2025年生物物理所博士英语笔试及答案
- 乡镇卫生院生物安全制度
- 内蒙古呼和浩特市新城区2025-2026学年八年级上学期期中考试物理试卷(含答案)
- 2025年军队基层常用文书写作与范例
- GB/T 20118-2025钢丝绳通用技术条件
- 渐冻症课件教学课件
- 医院重点专科建设申报汇报
- 人教版 浙教版 培智 生活语文五年级上册 部分教案
评论
0/150
提交评论