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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 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

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
23天前
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:详细步骤与最佳实践指南ali01n.xinmi1009fan.com
随着Web开发技术的不断进步,ASP.NET已成为一种非常流行的Web应用程序开发框架。在ASP.NET项目中,我们经常需要与数据库进行交互,特别是SQL数据库。本文将详细介绍如何在ASP.NET项目中连接SQL数据库,并提供最佳实践指南以确保开发过程的稳定性和效率。一、准备工作在开始之前,请确保您
110 3
|
5天前
|
SQL 数据采集 监控
局域网监控电脑屏幕软件:PL/SQL 实现的数据库关联监控
在当今网络环境中,基于PL/SQL的局域网监控系统对于企业和机构的信息安全至关重要。该系统包括屏幕数据采集、数据处理与分析、数据库关联与存储三个核心模块,能够提供全面而准确的监控信息,帮助管理者有效监督局域网内的电脑使用情况。
12 2
|
10天前
|
SQL JSON Java
没有数据库也能用 SQL
SPL(Structured Process Language)是一款开源软件,允许用户直接对CSV、XLS等文件进行SQL查询,无需将数据导入数据库。它提供了标准的JDBC驱动,支持复杂的SQL操作,如JOIN、子查询和WITH语句,还能处理非标准格式的文件和JSON数据。SPL不仅简化了数据查询,还提供了强大的计算能力和友好的IDE,适用于多种数据源的混合计算。
|
24天前
|
SQL 监控 数据库
慢SQL对数据库写入性能的影响及优化技巧
在数据库管理系统中,慢SQL(即执行缓慢的SQL语句)不仅会影响查询性能,还可能对数据库的写入性能产生显著的不利影响
|
24天前
|
SQL 数据库 数据库管理
数据库SQL函数应用技巧与方法
在数据库管理中,SQL函数是处理和分析数据的强大工具
|
24天前
|
SQL 存储 关系型数据库
添加数据到数据库的SQL语句详解与实践技巧
在数据库管理中,添加数据是一个基本操作,它涉及到向表中插入新的记录
|
12天前
|
SQL 数据库
SQL数据库基础语法入门
[link](http://www.vvo.net.cn/post/082935.html)
|
19天前
|
SQL 存储 关系型数据库
mysql 数据库空间统计sql
mysql 数据库空间统计sql
37 0
|
23天前
|
SQL 存储 监控
串口调试助手连接SQL数据库的技巧与方法
串口调试助手是电子工程师和软件开发人员常用的工具,它能够帮助用户进行串口通信的调试和数据分析
|
23天前
|
SQL 存储 数据采集
如何把问卷录入SQL数据库
将问卷数据录入SQL数据库是一个涉及数据收集、处理和存储的过程