学生表:学号,姓名,出生日期,性别
成绩表:学号,课程号,分数
课程表:课程号,课程名字
老师表:老师号,姓名
# 查询没选课程的学生人数
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;
这里,顺便附上一张交集,并集图。这个图完全可以概括所有情况。