废话不多说,用个实例来说明
如图是一张学生表(student)
如图是一张成绩表(score)
通过上面两张表,我们可以看到一共有8个学生,学号01-08。但是在成绩表中只有7位学生有成绩,其中学号为08的王菊是没有成绩的
如果现在我们要 查询所有同学的学号、姓名、选课数、总成绩
内连接方式:
SELECT s.`sid` AS '学号',s.`sname` AS '姓名',COUNT(sc.`cid`) AS '选课数',SUM(sc.`score`) AS '总成绩' FROM student s,sc WHERE s.`sid` = sc.`sid` GROUP BY s.`sid`
结果:
左外连接方式:
SELECT s.`sid` AS '学号',s.`sname` AS '姓名',COUNT(sc.`cid`) AS '选课数',SUM(sc.`score`) AS '总成绩' FROM student s LEFT JOIN sc ON s.`sid` = sc.`sid` GROUP BY s.`sid`
结果:
从上面两种查询方式的结果来看,使用左外连接是以左表为基础,查询出左表的全部和所关联的右表,如果左表的某些数据,在其右表中没有关联会自动初始化值0或null。
而内连接是将两个表中所关联的共有的数据展示出来