- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
SQL基础面试题及答案
1.请写出创建“用户表(user)”的SQL语句,要求包含用户ID、用户名、手机号、注册时间字段,且满足:用户ID为主键、用户名非空、手机号唯一
CREATETABLE`user`(
`user_id`INTPRIMARYKEYAUTO_INCREMENTCOMMENT用户ID(自增主键),
`username`VARCHAR(50)NOTNULLCOMMENT用户名,
`phone`CHAR(11)UNIQUECOMMENT手机号(唯一约束),
`register_time`DATETIMEDEFAULTCURRENT_TIMESTAMPCOMMENT注册时间(默认取当前时间)
)ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COMMENT=用户表;
2.现有“订单表(order)”,字段包括order_id(订单ID)、user_id(用户ID)、order_amount(订单金额)、order_time(下单时间),请写出SQL查询“2024年3月1日至2024年3月31日期间,下单金额大于500元的订单,要求显示订单ID、用户名、订单金额、下单时间”(需关联用户表)
SELECT
o.order_id,
u.username,
o.order_amount,
o.order_time
FROM
`order`o
INNERJOIN
`user`uONo.user_id=u.user_id--关联用户表获取用户名
WHERE
o.order_timeBETWEEN2024-03-0100:00:00AND2024-03-3123:59:59--时间范围
ANDo.order_amount500;--金额条件
说明:用INNERJOIN确保只查有对应用户的订单;BETWEEN包含边界时间,需补全时分秒避免漏查当天数据。
3.还是基于“用户表”和“订单表”,请查询“每个用户的总下单金额”,要求显示用户名和总金额,若用户没有下单则总金额显示0
SELECT
u.username,
IFNULL(SUM(o.order_amount),0)AStotal_amount--无订单时显示0
FROM
`user`u
LEFTJOIN
`order`oONu.user_id=o.user_id--左连接保留所有用户
GROUPBY
u.user_id,u.username--按用户分组(主键user_id唯一,可确保分组唯一)
ORDERBY
total_amountDESC;--按总金额倒序(可选,提升可读性)
关键:用LEFTJOIN保留未下单用户,IFNULL处理SUM空值,GROUPBY需包含非聚合字段(username)。
4.请解释WHERE和HAVING的区别,并用例子说明
区别:
执行时机:WHERE在分组(GROUPBY)前过滤数据,HAVING在分组后过滤分组结果;
作用对象:WHERE过滤行数据,HAVING过滤分组数据;
支持字段:WHERE不能使用聚合函数,HAVING可以使用聚合函数。
例子:查询“2024年下单次数大于3次,且总金额超过2000元的用户”
SELECT
u.user_id,
u.username,
COUNT(o.order_id)ASorder_count,--下单次数
SUM(o.order_amount)AStotal_amount--总金额
FROM
`user`u
LEFTJOIN
`order`oONu.user_id=o.user_id
WHERE
o.order_time=2024-01-0100:00:00--先过滤2024年的订单(WHERE分组前用)
GROUPBY
u.user_id,u.username
HAVING
COUNT(o.order_id)3--分组后过滤下单次数(HAVING用聚合函数)
ANDSUM(o.order_amount)2000;--分组后过滤总金额
5.请写出两种查询“有下单记录的用户ID”的SQL方法(要求去重)
方法1:用DISTINCT+关联查询
SELECT
您可能关注的文档
- 《3-6岁儿童学习与发展指南》考试题库及答案.docx
- 《三毛流浪记》试题及答案.docx
- 《三毛流浪记》阅读测试题及答案.docx
- 《三字经》测试题及答案.docx
- 《万物简史》测试题及答案.docx
- 《一千零一夜》阅读测试题及答案.docx
- 《中华人民共和国安全生产法》考核试题及答案.docx
- 《中华人民共和国保守国家秘密法》试题题库及答案.docx
- 《中华人民共和国动物防疫法》试题及答案.docx
- 《中华人民共和国消防法》考试题及答案.docx
- 主题课程整理大班上.doc
- 2026人教版小学语文三年级上册期末综合试卷3套(打印版含答案解析).docx
- 2026人教版小学语文四年级下册期末综合试卷3套(打印版含答案解析).docx
- 2026人教版小学二年级上册数学期末综合试卷精选3套(含答案解析).docx
- 2026人教版小学语文四年级上册期末综合试卷3套(含答案解析).docx
- 2026人教版小学二年级下册数学期末综合试卷3套(打印版含答案解析).docx
- 2026年地理信息行业年终总结汇报PPT.pptx
- 板块四第二十一单元封建时代的欧洲和亚洲 中考历史一轮复习.pptx
- 中考历史一轮复习:板块四第二十单元古代亚、非、欧文明+课件.pptx
- 第二次工业革命和近代科学文化中考历史一轮复习.pptx
原创力文档


文档评论(0)