- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
MySQL笔试题及参考答案
一、基础语法题(每题10分,共30分)
1.表结构设计与数据操作
现有需求:设计一张「用户订单表(order_info)」,需包含以下字段:订单ID、用户ID、订单金额、下单时间、订单状态(待支付/已支付/已取消)、支付方式(微信/支付宝/银行卡),要求:
订单ID为主键,自增
订单状态和支付方式需限制可选值
下单时间默认取当前时间
订单金额非负
(1)写出建表SQL语句;
(2)插入一条「用户ID=1001,金额99.9元,已支付,微信支付」的订单数据;
(3)查询2023年1月1日后下单的所有已支付订单,按金额降序排列。
2.关联查询
现有两张表:
商品表(product):id(主键)、name(商品名)、price(单价)、stock(库存)
订单明细表(order_item):id(主键)、order_id(订单ID)、product_id(商品ID)、quantity(购买数量)
查询所有订单中,购买了「iPhone14」且数量≥2的订单ID、商品名、购买数量及订单总金额(单价×数量)。
3.聚合与分组
基于上述order_info表,统计每个用户的以下信息:用户ID、订单总数、已支付订单数、总消费金额,仅显示总消费金额≥1000元的用户。
二、索引与性能优化题(每题15分,共30分)
1.索引设计
针对order_info表的以下查询场景,设计合理的索引(说明索引类型和字段),并解释原因:
(1)高频查询:根据用户ID查询该用户的所有订单;
(2)统计查询:按订单状态分组统计订单数;
(3)范围查询:查询某个时间段内的已支付订单。
2.SQL优化
以下SQL语句存在性能问题,请指出问题并优化:
SELECTo.id,o.user_id,p.name
FROMorder_infoo
LEFTJOINproductpONo.product_id=p.id
WHEREo.create_time2023-01-01
ANDo.status=已支付
ORDERBYo.amountDESC;
(注:order_info表数据量100万+,product表数据量1万+)
三、事务与锁机制题(每题15分,共30分)
1.事务隔离级别
(1)MySQL默认的事务隔离级别是什么?该级别会解决哪些并发问题,存在什么问题?
(2)如果需要避免「不可重复读」,应选择哪个隔离级别?该级别如何实现?
2.锁问题分析
现有两个事务同时执行:
--事务A
BEGIN;
UPDATEorder_infoSETstatus=已取消WHEREid=100;
--未提交
--事务B
BEGIN;
UPDATEorder_infoSETstatus=已支付WHEREid=100;
(1)事务B会处于什么状态?为什么?
(2)如果事务A执行后立即提交,事务B的执行结果是什么?
(3)如果将WHERE条件改为「user_id=100」(假设该用户有10条订单),事务B是否会阻塞?为什么?
四、综合应用题(10分)
现有一个电商场景:用户下单后,需要执行以下操作:
插入订单记录到order_info表;
插入订单明细到order_item表;
扣减对应商品的库存(product表stock字段)。
请写出完整的SQL逻辑(包含事务处理),要求:
库存不足时无法下单;
三个操作要么同时成功,要么同时失败;
避免超卖问题。
参考答案
一、基础语法题
1.表结构设计与数据操作
(1)建表SQL:
CREATETABLEorder_info(
idINTPRIMARYKEYAUTO_INCREMENTCOMMENT订单ID,
user_idINTNOTNULLCOMMENT用户ID,
amountDECIMAL(10,2)NOTNULLCHECK(amount=0)COMMENT订单金额,
create_timeDATETIMEDEFAULTCURRENT_TIMESTAMPCOMMENT下单时间,
statusENUM(待支付,已支付,已取消)NOTNULLCOMMENT订单状态,
pay_typeENUM(微信,支付宝,银行卡)COMMENT支付方式
)ENGINE=InnoDBDEFAULTCHARSET=utf8mb4C
您可能关注的文档
最近下载
- 关于调整农村养老保险个人帐户计息标准的通知.pdf VIP
- GB45673-2025《危险化学品企业安全生产标准化通用规范》解读.pptx
- 2025年产前筛查诊断人员资质考试历年参考题库及答案.docx VIP
- 2025年银行审计岗考试题及答案.doc VIP
- 低压挤包绝缘电力电缆产品检验规范.docx VIP
- 药品经营管理—药品标签与说明书管理(药事管理与法规课件).pptx
- 第3课 中华文明的起源【学案】.pdf VIP
- 中国国家标准 GB/T 17219-2025生活饮用水输配水设备、防护材料及水处理材料卫生安全评价.pdf
- 生物医用材料生物相容性及其评价方法.pptx VIP
- 数学建模:第二章 古典模型.ppt
原创力文档


文档评论(0)