问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

用INNER JOIN找出学霸选修的高难度课程

创作时间:
作者:
@小白创作中心

用INNER JOIN找出学霸选修的高难度课程

引用
CSDN
8
来源
1.
https://blog.csdn.net/ahngzw77/article/details/52913231
2.
https://blog.csdn.net/m0_54144956/article/details/131235643
3.
https://blog.csdn.net/xby7437/article/details/108854133
4.
https://www.cnblogs.com/hellofangfang/p/18698573
5.
https://www.cnblogs.com/geaozhang/p/6753190.html
6.
https://www.freecodecamp.org/chinese/news/sql-inner-join-how-to-join-3-tables-in-sql-and-mysql/
7.
https://www.cnblogs.com/liuguangzhi/articles/18325113
8.
https://www.oryoy.com/news/qing-song-zhang-wo-mysql-gao-xiao-xue-sheng-xin-xi-cha-xun-join-cao-zuo-shi-zhan-jie-xi.html

在数据库操作中,INNER JOIN 是一种强大的工具,可以帮助我们轻松查询和分析跨表数据。比如,在一个学生选课系统中,我们可以通过INNER JOIN来找出哪些学生选修了哪些课程,甚至可以进一步筛选出"学霸"们选修的所有高难度课程。

01

INNER JOIN 的工作原理

INNER JOIN 的核心功能是在两个或多个表之间建立关联,只返回满足连接条件的行。它通过匹配表之间的共同字段(通常是外键与主键),生成一个新的结果集。在底层实现中,数据库会先对表做笛卡尔积(所有可能的行组合),然后根据关联条件过滤出符合的行。

02

构建示例数据

为了更好地理解,我们先创建三个表:学生表(students)、课程表(courses)和选课表(enrollments)。

学生表(students)

student_id
name
1
Alice
2
Bob
3
Charlie
4
David

课程表(courses)

course_id
course_name
difficulty
101
高等数学
102
大学英语
103
数据结构
104
计算机网络

选课表(enrollments)

enrollment_id
student_id
course_id
1
1
101
2
1
102
3
2
102
4
3
101
5
3
103
6
4
104
03

查询每个学生选修的课程

我们可以通过INNER JOIN来查询每个学生选修的课程:

SELECT students.name, courses.course_name
FROM students
INNER JOIN enrollments ON students.student_id = enrollments.student_id
INNER JOIN courses ON enrollments.course_id = courses.course_id;

这条SQL语句的执行过程如下:

  1. 首先通过学生ID将学生表和选课表连接起来
  2. 然后通过课程ID将选课表和课程表连接起来
  3. 最后返回学生姓名和课程名称

结果如下:

name
course_name
Alice
高等数学
Alice
大学英语
Bob
大学英语
Charlie
高等数学
Charlie
数据结构
David
计算机网络
04

查询学霸选修的高难度课程

接下来,我们聚焦于查询选修了高难度课程的学生:

SELECT students.name, courses.course_name
FROM students
INNER JOIN enrollments ON students.student_id = enrollments.student_id
INNER JOIN courses ON enrollments.course_id = courses.course_id
WHERE courses.difficulty = '高';

这条SQL语句在之前的基础上增加了一个筛选条件:只返回难度为"高"的课程。结果如下:

name
course_name
Alice
高等数学
Charlie
高等数学
Charlie
数据结构

从结果可以看出,Alice和Charlie是选修了高难度课程的"学霸"。

05

总结

通过这个例子,我们可以看到INNER JOIN在处理多表关联查询时的强大功能。它不仅能够帮助我们轻松地整合不同表中的数据,还能通过设置连接条件来精确筛选所需信息。在实际应用中,合理使用INNER JOIN可以大大提高数据查询和分析的效率。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号