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

简介: 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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
11月前
|
SQL 机器学习/深度学习 人工智能
从“写SQL”到“聊数据”:NL2SQL如何用自然语言解锁数据库?
本文系统性地阐述了自然语言转SQL(NL2SQL) 技术如何让非技术背景的业务分析师实现数据自助查询,从而提升数据驱动决策的效率与准确性。
从“写SQL”到“聊数据”:NL2SQL如何用自然语言解锁数据库?
|
10月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1557 152
|
10月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
1095 156
|
SQL 关系型数据库 MySQL
Go语言数据库编程:使用 `database/sql` 与 MySQL/PostgreSQL
Go语言通过`database/sql`标准库提供统一数据库操作接口,支持MySQL、PostgreSQL等多种数据库。本文介绍了驱动安装、连接数据库、基本增删改查操作、预处理语句、事务处理及错误管理等内容,涵盖实际开发中常用的技巧与注意事项,适合快速掌握Go语言数据库编程基础。
1539 213
|
10月前
|
SQL 人工智能 Linux
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
746 5
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
|
9月前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
431 6
|
10月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
10月前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
655 8
|
11月前
|
SQL 人工智能 Java
用 LangChain4j+Ollama 打造 Text-to-SQL AI Agent,数据库想问就问
本文介绍了如何利用AI技术简化SQL查询操作,让不懂技术的用户也能轻松从数据库中获取信息。通过本地部署PostgreSQL数据库和Ollama模型,结合Java代码,实现将自然语言问题自动转换为SQL查询,并将结果以易懂的方式呈现。整个流程简单直观,适合初学者动手实践,同时也展示了AI在数据查询中的潜力与局限。
1371 8
|
11月前
|
SQL 人工智能 Linux
SQL Server 2025 RC0 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC0 发布 - 从本地到云端的 AI 就绪企业数据库
444 5