当前位置: 首页 > news >正文

SQL中体会多对多

在这里插入图片描述
我们可以根据学生与课程多对多关系的数据库模型,给出实际的表数据以及对应的查询结果示例,会用到JOIN``LEFT JOIN两种连接

1. 学生表(students

student_idstudent_name
1张三
2李四
3王五

2. 课程表(courses

course_idcourse_name
1数学
2英语
3物理

3. 选课表(student_courses

idstudent_idcourse_id
111
212
322
423
531
633

4. 查询每个学生选修的课程

查询语句

SELECT 
    s.student_name,
    c.course_name
FROM 
    students s
JOIN 
    student_courses sc ON s.student_id = sc.student_id
JOIN 
    courses c ON sc.course_id = c.course_id
ORDER BY 
    s.student_name;

对于这个查询,会先将 students 表和 student_courses 表进行连接,连接条件是 s.student_id = sc.student_id。这一步会生成一个临时结果集,其中包含了 students 表和 student_courses 表中 student_id 匹配的所有行。

接着,将这个临时结果集再和 courses 表进行连接,连接条件是 sc.course_id = c.course_id。这样就得到了一个包含 studentsstudent_coursescourses 表中相关信息的新临时结果集。

最后,SELECT语句对新临时结果集进行选择

查询结果:

student_namecourse_name
张三数学
张三英语
李四英语
李四物理
王五数学
王五物理

5. 查询选修了某门课程的所有学生

查询语句:

SELECT 
    s.student_name
FROM 
    students s
JOIN 
    student_courses sc ON s.student_id = sc.student_id
JOIN 
    courses c ON sc.course_id = c.course_id
WHERE 
    c.course_name = '数学';

查询结果:

student_name
张三
王五

6. 查询每个课程的选课人数

查询语句:

SELECT 
    c.course_name,
    COUNT(sc.student_id) AS enrollment_count
FROM 
    courses c
LEFT JOIN 
    student_courses sc ON c.course_id = sc.course_id
GROUP BY 
    c.course_name;

查询结果:

course_nameenrollment_count
数学2
英语2
物理2

相关文章:

  • C++11中智能指针的使用(shared_ptr、unique_ptr、weak_ptr)
  • FPGA_YOLO(三)
  • Python使用SVC算法解决乳腺癌数据集分类问题——寻找最佳核函数
  • 【UEFI】关于Secure Boot
  • 2.3.5 覆盖率数据的合并
  • 【前端】使用 HTML、CSS 和 JavaScript 创建一个数字时钟和搜索功能的网页
  • 计算机二级:基础操作题
  • 大模型在支气管哮喘手术全流程风险预测与治疗方案制定中的应用研究
  • 【HTML 基础教程】HTML 编辑器
  • 【Java 优选算法】链表
  • C++:异常的深度解析
  • STM32学习笔记之常见外设汇总
  • 【QA】外观模式在Qt中有哪些应用?
  • 【C++】Chapter02 内存管理
  • 群体智能优化算法-多版本优化器(Multi-Verse Optimizer, MVO,含Matlab源代码)
  • (Arxiv-2025)MagicDistillation:用于大规模人像少步合成的弱到强视频蒸馏
  • notify_one() 会阻塞吗?
  • 5分钟快速上手Docker容器化部署:从零到实践
  • 紧凑交叉引用表
  • 使用XiaoESP32S3在Arduino环境中实现颜色识别
  • A股2024年年报披露收官,四分之三公司盈利
  • 遍体鳞伤就是击不倒,这是国米老男孩最后的倔强
  • 欢迎回家!神十九返回舱成功着陆
  • 打造沪派水乡的“湿意”,上海正在保护营造一批湿地空间
  • 深圳一季度GDP为8950.49亿元,同比增长5.2%
  • 人民日报社论:做新时代挺膺担当的奋斗者