Mysql 联结(以列为单位对表进行联结)

联结(以列为单位对表进行联结)

学习重点

  • 联结(JOIN)就是将其他表中的列添加过来,进行添加列的集合运算

  • UNION 是增减行数,JOIN 是增减列数

  • 联结大体上分为内联结和外联结两种

什么是联结

简单来说就就是将其他表中的列添加过来,所以使用联结就可以从多张表(3 张以上的表也没关系)选取数据

内联结

  • INNER JOIN

简单来说就是 两张表只有 product_id 是相同的,其他的都不相同.这时候需要把两个表联结起来,获取到两个表中的所有列


SELECT SP.shop_id, SP.shop_name, SP.product_id, P.product_name,P.sale_price
FROM ShopProduct AS SP INNER JOIN Product AS P ON SP.product_id = P.product_id;

内联结的要点 1:FROM 子句


FROM ShopProduct AS SP INNER JOIN Product AS P

使用关键字 INNER JOIN 就可以将两张表联结在在一起了,SP 和 P 分别是这两张表的别名,但是别名并不是必须的,它只是为了好读

内联结的要点 2:ON 子句

  • 第二点 ON 后面的联结条件

ON SP.product_id = P.product_id

我们可以在 ON 之后指定两张表联结所使用的列(联结键) ON 是专门指定联结条件的在进行内联结的时候 ON 必不可少 并且要书写在 FROM 和 WHERE 之间

内联结的要点 3:SELECT 子句

  • 在 SELECT 子句中指定的列

SELECT SP.shop_id, SP.shop_name, SP.product_id, P.product_name,P.sale_price

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

内联结和 WHERE 子句结合使用

  • 比如

SELECT SP.shop_id, SP.shop_name, SP.product_id, P.product_name, 
P.sale_price
FROM ShopProduct AS SP INNER JOIN Product AS P ①
ON SP.product_id = P.product_id
WHERE SP.shop_id = '000A';

可以理解为将联结之后的结果想象为新创建出来的一张表,对这张表使用 WHERE 子句.当然这样表只是在 SELECT 执行时候存在 要是以后想用的话还是将他创建成视图。

外联结 – OUTER JOIN

  • 内联结只能选取出同时存在两张表中的数据,如果第一张表内的数据 null 它则不会出现

  • 外联结就是获取全部的数据 两张表的并集(外链接用的多)


SELECT SP.shop_id, SP.shop_name, SP.product_id, P.product_name, 
P.sale_price
FROM ShopProduct AS SP RIGHT OUTER JOIN Product AS P ①
ON SP.product_id = P.product_id;

外联结要点

  • 主表就是你需要数据多的表

  • 哪张表是主表,最终的结果中包含主表所有的数据指定主表的关键字是 LEFT 和 RIGHT

顾名思义使用 LEFT 时 FROM 子句中写在左侧的就是主表,使用 Right 时候右侧就是主表

  • 下面这个就是右边表是主表

SELECT SP.shop_id, SP.shop_name, SP.product_id, P.product_name, 
P.sale_price
FROM ShopProduct AS SP RIGHT OUTER JOIN Product AS P ①
ON SP.product_id = P.product_id;

文章作者: 雾烟云
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 雾烟云 !
  目录