前面我们学习了UNION 和INTERSECT 等集合运算,这些集合运算的特征就是以行方向为单位进行操作。通俗地说,就是进行这些集合运算时,会导致记录行数的增减。使用UNION 会增加记录行数,而使用INTERSECT 或者EXCEPT 会减少记录行数。

但是这些运算不会导致列数的改变。作为集合运算对象的表的前提就是列数要一致。因此,运算结果不会导致列的增减。

而JOIN——联结 运算是将其他表中的列添加过来,进行“添加列”的运算。

 

A:两张表中都包含的列  B:只存在于一张表内的列

所谓联结运算,一言以蔽之,就是“以A中的列作为桥梁,将 B中满足同样条件的列汇集到同一结果之中

 

●内联结要点① ——FROM子句

使用关键字 INNER JOIN 就可以将两张表联结在一起了。

小结:进行联结时需要在FROM子句中使用多张表。

●内联结要点② —— ON子句

第二点要注意的是 ON 后面的联结条件,我们可以在 ON 之后指定两张表联结所使用的列(联结键)。

ON 是专门用来指定联结条件的,它能起到与 WHERE 相同的作用。需要指定多个键时,同样可以使用 AND、OR。在进行内联结时 ON 子句是必不可少的(如果没有 ON会发生错误),并且 ON 必须书写在 FROM 和 WHERE 之间

小结:进行内联结时必须使用ON子句,并且要书写在FROM和WHERE之间。

●内联结要点③ ——SELECT子句

和使用一张表时不同,由于多表联结时,某个列到底属于哪张表比较容易混乱,因此采用“< 表的别名 >.< 列名 >”的形式来指定列

小结:使用联结时SELECT子句中的列需要按照“<表的别名>.<列名>”的格式进行书写。

 

内联结和WHERE子句结合使用

像这样使用联结运算将满足相同规则的表联结起来时,WHERE、GROUP BY、HAVING、ORDER BY 等工具都可以正常使用。