联结(以列为单位对表进行联结)
联结(JOIN):将其他表的列添加过来,进行“添加列”的集合运算,用于无法从一张表中获取期望数据(列)的情况
对于联结的过时语法和特定语法,虽然不建议使用,但还是希望大家能够读懂。
UNION是以行(纵向)为单位进行操作,而联结则是以列(横向)为单位进行的
内联结——INNER JOIN:将联结之后的结果想象为新创建出来的一张表,只能选取出同时存在于两张表中的数据
要点:
1、FROM子句:进行联结时需要在FROM子句中使用多张表
2、ON子句:指定联结条件(联结键),需要指定多个键时,同样可以使用 AND、OR
3、(希望)使用联结时SELECT子句中的列需要按照“<表的别名>.<列名>”的格式进行书写。
- 只有那些同时存在于两张表中的列(这里是 product_id)必须使用这样的书写方式
外联结——OUTER JOIN:结果中包含原表中不存在(在原表之外)的信息
要点:
1、选取出单张表中全部的信息
2、主表:指定主表的关键字是 LEFT 和 RIGHT,通常使用 LEFT 的情况会多一些
交叉联结——CROSS JOIN:集合运算中的乘法,在实际业务中并不会使用(1、结果没有实用价值 ,2、结果行数太多,需要花费大量的运算时间和高性能设备的支持。
- 无法使用内联结和外联结中所使用的 ON 子句,因为交叉联结是对两张表中的全部记录进行交叉组合,因此结果中的记录数通常是两张表中行数的乘积。
- 内联结是交叉联结的一部分,“内”也可以理解为“包含在交叉联结结果中的部分”。相反,外联结的“外”可以理解为“交叉联结结果之外的部分”。