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

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
22天前
|
SQL 算法 数据库
【数据库SQL server】关系数据库标准语言SQL之数据查询
【数据库SQL server】关系数据库标准语言SQL之数据查询
44 0
|
22天前
|
SQL 算法 数据库
【数据库SQL server】关系数据库标准语言SQL之视图
【数据库SQL server】关系数据库标准语言SQL之视图
36 0
|
6天前
|
SQL 存储 关系型数据库
sql数据库的相关概念与底层介绍
sql数据库的相关概念与底层介绍
29 0
|
21天前
|
SQL 人工智能 运维
数据库基础入门 — SQL排序与分页
数据库基础入门 — SQL排序与分页
16 0
|
21天前
|
SQL 人工智能 运维
数据库基础入门 — SQL运算符
数据库基础入门 — SQL运算符
15 0
|
21天前
|
SQL 人工智能 运维
数据库基础入门 — SQL
数据库基础入门 — SQL
26 0
|
22天前
|
SQL 关系型数据库 MySQL
慢SQL(面试题)
慢SQL(面试题)
12 1
|
22天前
|
SQL 存储 数据库
【数据库SQL server】自学终极笔记
【数据库SQL server】自学终极笔记
73 0
|
22天前
|
SQL 算法 数据库
【数据库SQL server】关系数据库标准语言SQL之数据更新
【数据库SQL server】关系数据库标准语言SQL之数据更新
21 0
|
22天前
|
SQL 数据库 数据库管理
【数据库SQL server】关系数据库标准语言SQL的基本知识
【数据库SQL server】关系数据库标准语言SQL的基本知识
34 0