版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SQL数据库笔试真题(含详细答案解析)适用场景:软件开发、测试、数据分析岗位笔试难度等级:基础+中等(企业高频考点)前置数据表说明本次试题基于三张常用业务表,所有题目均围绕下表操作,表结构真实贴合企业业务场景:1.用户表user字段名字段类型字段说明user_idint用户ID(主键)user_namevarchar(20)用户名ageint年龄gendervarchar(5)性别create_timedatetime注册时间2.订单表order字段名字段类型字段说明order_idint订单ID(主键)user_idint用户ID(外键)order_moneydecimal(10,2)订单金额order_statustinyint订单状态(0未支付,1已支付,2已取消)order_timedatetime下单时间3.商品表goods字段名字段类型字段说明goods_idint商品ID(主键)goods_namevarchar(50)商品名称pricedecimal(10,2)商品单价stockint商品库存一、基础查询题(共5题)题目1查询用户表中所有性别为男、年龄大于20岁的用户,展示用户名、年龄、注册时间。答案解析:PlainText
SELECTuser_name,age,create_time
FROMuser
WHEREgender='男'ANDage>20;解题思路:基础条件筛选查询,通过WHERE关键字拼接且条件,精准匹配性别和年龄要求,按需查询指定字段,避免使用*全字段查询,提升查询效率。题目2查询商品表中库存为空(库存为0)的所有商品信息。答案解析:PlainText
SELECT*FROMgoodsWHEREstock=0;解题思路:业务中库存为0即无库存,直接等值筛选stock字段即可,场景适配商品缺货查询需求。题目3查询2025年下单的所有已支付订单,展示订单ID、用户ID、订单金额、下单时间。答案解析:PlainText
SELECTorder_id,user_id,order_money,order_time
FROM`order`
WHEREorder_status=1
ANDYEAR(order_time)=2025;解题思路:1、order是SQL关键字,作为表名需用反引号包裹,避免语法报错;2、通过YEAR()函数截取下单时间年份,匹配指定年份;3、限定订单状态为已支付(1)。题目4查询用户名包含“张”的所有用户,按注册时间倒序排列。答案解析:PlainText
SELECT*FROMuser
WHEREuser_nameLIKE'%张%'
ORDERBYcreate_timeDESC;解题思路:模糊查询使用LIKE关键字,%为通配符,代表任意字符;ORDERBY字段DESC实现倒序排序,ASC为正序(默认可省略)。题目5查询用户表中年龄不重复的用户年龄数据。答案解析:PlainText
SELECTDISTINCTageFROMuser;解题思路:DISTINCT关键字用于去除查询结果中的重复数据,仅保留唯一值,适用于去重统计场景。二、分组聚合题(共3题)题目6统计每个用户的下单总金额、下单总次数,展示用户ID、下单次数、总消费金额,只展示有下单记录的用户。答案解析:PlainText
SELECTuser_id,COUNT(order_id)ASorder_count,SUM(order_money)AStotal_money
FROM`order`
GROUPBYuser_id;解题思路:1、GROUPBY按用户ID分组,将同一用户的订单数据聚合;2、COUNT()统计订单数量,SUM()累加订单金额;3、AS用于字段别名,优化结果展示可读性。题目7统计各订单状态的订单数量,只展示订单数量大于5的状态数据。答案解析:PlainText
SELECTorder_status,COUNT(order_id)ASorder_num
FROM`order`
GROUPBYorder_status
HAVINGorder_num>5;解题思路:1、分组后筛选条件必须使用HAVING,WHERE无法筛选聚合后的数据;2、先分组聚合统计数量,再过滤出符合条件的分组结果。题目8查询用户表中男性、女性用户的平均年龄、最大年龄、最小年龄。答案解析:PlainText
SELECTgender,AVG(age)ASavg_age,MAX(age)ASmax_age,MIN(age)ASmin_age
FROMuser
GROUPBYgender;解题思路:利用聚合函数AVG、MAX、MIN分别计算平均值、最大值、最小值,按性别分组实现分类统计。三、联表查询题(共3题)题目9查询所有已支付订单的用户名、订单金额、下单时间。答案解析:PlainText
SELECTu.user_name,o.order_money,o.order_time
FROMuseru
INNERJOIN`order`o
ONu.user_id=o.user_id
WHEREo.order_status=1;解题思路:1、内连接(INNERJOIN)查询两张表关联数据,仅展示匹配成功的数据;2、为表设置别名简化语句;3、通过user_id关联用户表和订单表,筛选已支付订单。题目10查询所有用户的基本信息及对应的下单记录,无下单记录的用户也需展示,订单相关字段显示为空。答案解析:PlainText
SELECTu.*,o.order_id,o.order_money,o.order_status
FROMuseru
LEFTJOIN`order`o
ONu.user_id=o.user_id;解题思路:左连接(LEFTJOIN)以左表(user用户表)为基准,展示左表所有数据,右表无匹配数据时字段为空,适配“全部用户+关联订单”的业务场景。题目11统计每个用户名的总消费金额,展示用户名、总消费金额,无消费记录的用户总金额显示为0。答案解析:PlainText
SELECTu.user_name,IFNULL(SUM(o.order_money),0)AStotal_money
FROMuseru
LEFTJOIN`order`o
ONu.user_id=o.user_id
GROUPBYu.user_id,u.user_name;解题思路:1、LEFTJOIN保留所有用户;2、IFNULL()函数处理聚合后的NULL值,将无消费用户的总金额替换为0;3、分组时需包含非聚合字段user_name,适配主流数据库语法规范。四、子查询与进阶题型(共4题)题目12查询下单金额最高的一条已支付订单的详细信息。答案解析:PlainText
SELECT*FROM`order`
WHEREorder_status=1
ANDorder_money=(SELECTMAX(order_money)FROM`order`WHEREorder_status=1);解题思路:子查询先查出已支付订单的最大金额,外层查询根据最大金额匹配对应订单数据,实现极值数据查询。题目13查询没有下过任何订单的用户信息。答案解析:PlainText
SELECT*FROMuser
WHEREuser_idNOTIN(SELECTDISTINCTuser_idFROM`order`);解题思路:子查询先查出所有有下单记录的用户ID,外层通过NOTIN匹配不在该集合中的用户,即无订单用户。题目14查询平均订单金额大于100元的用户ID、用户名、平均订单金额。答案解析:PlainText
SELECTu.user_id,u.user_name,AVG(o.order_money)ASavg_money
FROMuseru
JOIN`order`oONu.user_id=o.user_id
GROUPBYu.user_id,u.user_name
HAVINGavg_money>100;解题思路:联表后按用户分组,通过HAVING筛选聚合后的平均金额,满足大于100元的条件。题目15更新商品表中所有库存大于100的商品,单价下调5元。答案解析:PlainText
UPDATEgoodsSETprice=price-5WHEREstock>100;解题思路:UPDATE语句用于更新表数据,WHERE限定更新条件,仅修改符合库存要求的商品价格,执行前建议校验条件避免误更新。五、数据库基础简答题(3题)题目16:简述WHERE和HAVING的区别?参考答案:1、筛选时机不同:WHERE是分组之前筛选原始数据,HAVING是分组之后筛选聚合结果;2、使用范围不同:WHERE不能使用聚合函数(SUM、COUNT、AVG等),HAVING专门用于过滤聚合后的数据;3、执行顺序不同:WHERE>GROUPBY>HAVING。题目17:简述左连接、右连接、内连接的区别?参考答案:1、内连接(INNERJOIN):只返回两张表中匹配关联条件的数据,无匹配数据不展示;2、左连接(LEFTJOIN):以左表为基准,返回左表所有数据,右表无匹配数据则显示为空;3、右连接(RIGHTJOIN):以右表为基准,返回右表所有数据,左表无匹配数据则显示为空。题目18:什么是数据库主键、外键,各自的作用是什么?参考答案:主键(PRIMARYKEY):表中唯一标识一条数据的字段,非空且唯一,一张表只能有一个主键;作用是保证数据唯一性,快速定位单条数据,提升查询效率。外键(FOREIGNKEY):当前表中关联另一张表主键的字段;作用是维护表与表之间的关联关系,保证数据参照完整性,防止出现无效关联数据。六、综合应用题(1题)题目19根据上述三张表,查询2025年已支付订单中,消费金额排名前3的用户,展示用户名、总消费金额、下单次数,金额相同则按下单次数倒序排列。答案解析:PlainText
SELECTu.user_name,SUM(o.order_money)AStotal_money,COUNT(o.order_id)ASorder_count
FROMuseru
JOIN`order`oONu.user_id=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年高考一卷物理题目及答案
- 机房信号中断应急预案(3篇)
- 核电技术交底施工方案(3篇)
- 模型施工队混凝土施工方案(3篇)
- 安全演讲用的
- 初中三年级生物《生物进化的原因》教案
- 安全应急处理方案
- 安全隐患火灾
- 安全用电宣传
- 吉林省吉林市毓文中学2025-2026学年高一下学期期中考试数学试题
- Effective C++ 第三版完整版中文版(Effective C++ 第 3 版)(全文完整译本 + 课后习题解析)
- 2026-2027学年济南天桥区泺口实验学校九年级9月份语文月考考试试题以及答案
- 2026年宁波银行秋招试题及答案
- IEC 60601-1-2-2024 中文版(医用电气设备 第 1-2 部分:基本安全和基本性能的要求 并列标准:电磁兼容 要求和试验)
- 2026年永州职业技术学院高职单招职业技能考试题库完美版附答案详解
- 工业企业温室气体排放核算表
- 2025-2026学年甘肃省兰州市五校联考八年级上册期中考试物理试卷 含答案
- (正式版)DB43∕T 2546-2023 《早期人防工程分类鉴定规范》
- 兽医公共卫生学-全套教学课件
- 雨课堂学堂在线学堂云《临床心理学(山东第二医科)》单元测试考核答案
- 变电站预试检修安全培训
评论
0/150
提交评论