ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL实现学生表,成绩表,课程表,老师表复杂查询,用到了join等高级特性

2020-03-03 19:00:35  阅读:350  来源: 互联网

标签:成绩表 join 课程 cid 查询 sc score sid 课程表


学生表:学号,姓名,出生日期,性别

成绩表:学号,课程号,分数

课程表:课程号,课程名字

老师表:老师号,姓名


# 查询没选课程的学生人数
select count(1) from student s left join score sc on s.sid = sc.sid where sc.cid is null;


#查询选了课程的学生人数
select count(1) from (select s.sid from student s inner join score sc on s.sid = sc.sid group by sc.sid) t;


#查询出每门课程的及格人数和不及格人数
select sc.cid,c.`name`,sum(score >= 60) as 及格人数,sum(score < 60) as 不及格人数 from score sc,course c where sc.cid=c.cid group by sc.cid;

 

这里,顺便附上一张交集,并集图。这个图完全可以概括所有情况。

 

更多查询可以参考mysql经典问题四表查询(教师,学生,成绩,课程表),不过其中有些需要优化。

本文完整代码在。

 

标签:成绩表,join,课程,cid,查询,sc,score,sid,课程表
来源: https://www.cnblogs.com/ivy-xu/p/12403983.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有