SQL面试宝典:展示你的数据库能力的挑战 --内附.sql

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: SQL面试宝典:展示你的数据库能力的挑战 --内附.sql

表结构

37b68ccd2dc740c3892f7f901b2de87b.png


题1:查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数


分析

  • 需要查询的表有两个 ,成绩表,学生表
  • 成绩表分开查,分别查出01,02的课程成绩
  • 将两个课程成绩进行对比
  • 需要查询出来的字段:学生的所有信息,以及两科的课程分数


实现:

SELECT
  s.*,
  c1.score 01课程,
  c2.score 02课程 
FROM
  ( SELECT * FROM t_mysql_score WHERE cid = '01' ) c1,
  ( SELECT * FROM t_mysql_score WHERE cid = '02' ) c2,
  t_mysql_student s 
WHERE
  c1.score > c2.score  --  c1 表中的成绩(score)大于 c2 表中的成绩。
  AND c1.sid = c2.sid  --  c1 表中的学生ID(sid)等于 c2 表中的学生ID
  AND c2.sid = s.sid   --  c2 表中的学生ID(sid)等于 s 表中的学生ID。


运行结果:

5d29997e178240d09a6b0e81c745fde9.png


题2:查询同时存在" 01 "课程和" 02 "课程的情况


分析:

  • 同题1一样,但是少了一个条件,不需要将课程分数进行对比


实现:

SELECT
  s.*,
  c1.score 01课程,
  c2.score 02课程 
FROM
  ( SELECT * FROM t_mysql_score WHERE cid = '01' ) c1,
  ( SELECT * FROM t_mysql_score WHERE cid = '02' ) c2,
  t_mysql_student s 
WHERE
 c1.sid = c2.sid 
  AND c1.sid = s.sid


运行结果

bc416e6182e8459cbc46c60957bc5d08.png


题3:查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显示为 null )


分析:

  • 左连接返回左表中的所有行以及右表中与左表满足连接条件的匹配行。如果右表中没有匹配的行,将返回 NULL 值
  • 根据左外链接的概念,我们将可能为null的02课程表放在右边,如果出现没有的情况下也会查出来,只不过为null值


实现:

select s1.*,s2.score from 
(select * from t_mysql_score where cid='01') s1
left join
(SELECT * from t_mysql_score where cid='02') s2 on s1.sid=s2.sid


运行结果:

976af0c6cb4d4d729db9285d3255a57d.png


题四: 查询不存在" 01 "课程但只存在" 02 "课程的情况


分析:

  • 先查询所有的课程
  • 查询出01的课程的学生
  • 条件:拿到01课程的学生直接排除掉然后加条件剩下的学生是学了02课程的


实现:

SELECT
  * 
FROM
  t_mysql_score sc 
WHERE
  sc.sid NOT IN ( SELECT sc.sid FROM t_mysql_score sc WHERE sc.cid = '01' ) 
  AND sc.cid = '02'


运行结果:

e4a7f95f682a4724b0fe0b619e956ef6.png


题5:查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩


分析:

  • 需要查询出来的字段:学生编号和学生姓名和平均成绩
  • 需要用到的表:学成表,成绩表
  • 条件,平均成绩大于60


实现:

SELECT
 st.sid,st.sname,ROUND(AVG(sc.score),2) 
FROM
  t_mysql_score sc,
  t_mysql_student st
WHERE
sc.sid=st.sid
 GROUP BY
 st.sid,st.sname
 HAVING
 AVG(sc.score)>60


运行结果:

9552dc05f9c4413f9e86a2e95c270338.png


题6:查询在t_mysql_score表存在成绩的学生信息


分析:

  • 查所有的学生的sid
  • 只要sid在成绩表中,就是有成绩


实现:

SELECT * FROM 
t_mysql_student st
where st.sid
in
(SELECT sc.sid FROM t_mysql_score sc)


运行结果:

19d07816da1a484dbe6f84a22647a6a4.png


题7:查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为 null )、每课的成绩

分析:

  • 需要用到行转列的语法,需要查询出来的字段为学生编号,学生姓名、选课总数、所有课程的总成绩、每课的成绩
  • 需要用到的表,成绩表,课程表,学生表


实现:

SELECT
  st.sid,
  st.sname,
  COUNT( sc.cid ) 选课数,
  SUM( sc.score ) 总成绩,
  sum( CASE WHEN sc.cid = '01' THEN sc.score END ) 数学,
  sum( CASE WHEN sc.cid = '02' THEN sc.score END ) 语文,
  sum( CASE WHEN sc.cid = '03' THEN sc.score END ) 物理 
FROM
  t_mysql_score sc,
  t_mysql_course c,
  t_mysql_student st 
WHERE
  sc.sid = st.sid 
  AND sc.cid = c.cid 
GROUP BY
  st.sid,
  st.sname


运行结果:

8e320185030844668b0b4a05686d1150.png

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
21天前
|
存储 Java easyexcel
招行面试:100万级别数据的Excel,如何秒级导入到数据库?
本文由40岁老架构师尼恩撰写,分享了应对招商银行Java后端面试绝命12题的经验。文章详细介绍了如何通过系统化准备,在面试中展示强大的技术实力。针对百万级数据的Excel导入难题,尼恩推荐使用阿里巴巴开源的EasyExcel框架,并结合高性能分片读取、Disruptor队列缓冲和高并发批量写入的架构方案,实现高效的数据处理。此外,文章还提供了完整的代码示例和配置说明,帮助读者快速掌握相关技能。建议读者参考《尼恩Java面试宝典PDF》进行系统化刷题,提升面试竞争力。关注公众号【技术自由圈】可获取更多技术资源和指导。
|
29天前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
68 11
|
2月前
|
架构师 数据库
大厂面试高频:数据库乐观锁的实现原理、以及应用场景
数据库乐观锁是必知必会的技术栈,也是大厂面试高频,十分重要,本文解析数据库乐观锁。关注【mikechen的互联网架构】,10年+BAT架构经验分享。
大厂面试高频:数据库乐观锁的实现原理、以及应用场景
|
2月前
|
SQL 缓存 监控
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
本文详细解析了数据库、缓存、异步处理和Web性能优化四大策略,系统性能优化必知必备,大厂面试高频。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
|
1月前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
1月前
|
SQL 监控 安全
SQL Servers审核提高数据库安全性
SQL Server审核是一种追踪和审查SQL Server上所有活动的机制,旨在检测潜在威胁和漏洞,监控服务器设置的更改。审核日志记录安全问题和数据泄露的详细信息,帮助管理员追踪数据库中的特定活动,确保数据安全和合规性。SQL Server审核分为服务器级和数据库级,涵盖登录、配置变更和数据操作等事件。审核工具如EventLog Analyzer提供实时监控和即时告警,帮助快速响应安全事件。
|
2月前
|
SQL 关系型数据库 MySQL
体验使用DAS实现数据库SQL优化,完成任务可得羊羔绒加厚坐垫!
本实验介绍如何通过数据库自治服务DAS对RDS MySQL高可用实例进行SQL优化,包含购买RDS实例并创建数据库、数据导入、生成并优化慢SQL、执行优化后的SQL语句等实验步骤。完成任务,即可领取羊羔绒加厚坐垫,限量500个,先到先得。
211 13
|
2月前
|
SQL 存储 BI
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
|
2月前
|
SQL 数据库
gbase 8a 数据库 SQL优化案例-关联顺序优化
gbase 8a 数据库 SQL优化案例-关联顺序优化
|
2月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第16天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括配置系统源、安装 SQL Server 2019 软件包以及数据库初始化,确保 SQL Server 正常运行。
110 4