内连接:指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。
外连接:连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接。
左外连接:左边表数据行全部保留,右边表保留符合连接条件的行。
右外连接:右边表数据行全部保留,左边表保留符合连接条件的行。
全外连接:左外连接 +右外连接。
我们把tableA看作左表,把tableB看成右表,下面来用图表示一下
INNER JOIN LEFT OUTER JOIN
RIGHT OUTER JOIN FULL OUTER JOIN
SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score
FROM students s
INNER JOIN classes c
ON s.class_id = c.id;
内连接
SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score
FROM students s
OUTER JOIN classes c
ON s.class_id=c.id
外连接
和INNER JOIN(内连接)相比,RIGHT OUTER JOIN(外连接)多了一行,多出来的一行是“四班”,但是,学生相关的列如name
、gender
、score
都为NULL
。因为根据ON
条件s.class_id = c.id
,classes
表的id=4的行正是“四班”,但是,students
表中并不存在class_id=4的行。