所谓联结,就是将其他表中的列添加过来。
01内联结–inner join
内联结就是以a表列作为桥梁,将b表满足同样条件的列汇集到同一结果之中(只能选择两张表中同时存在的数据)
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 表1 inner join 表2。inner join 可以将两张表联结起来
2.on子句(联结键)on用来指定联结对象
同时使用=构建联结条件,若有多个条件可以使用and,or。如果有where,on必须写在from和where之间。因为where是限定条件,此时限定的条件应该是两个表共有的。
3.select 按照 表的别名.列名指定列可以避免混乱
02外联结–outer join
同内连接一样,外联结也是选择将满足同样条件的列汇总到一个表中。(只要一个表中拥有的数据,就可以进行外联结换句话说外联结针对的是一张表中所有数据)
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–左侧主表,right–右侧主表。选择哪个作为主表,这个表所有内容就会出现在结果表中。换句话说,就是以这个表作为基础
03 3张表以上的表联结
三张表以上表的连接,就是向其中添加连接条件
SELECT SP.shop_id,SP.shop_name,SP.product_id,P.product_name,
P.sale_price,P1.product_id,P1.product_name,P1.sale_price
FROM ShopProduct AS SP INNER JOIN PRODUCT AS P
ON SP.product_id=P.product_id
INNER JOIN product3 AS p1
ON SP.product_id=p1.product_id
04交叉联结–cross
交叉联结是对两张表中的全部记录进行组合,也就是说得到的行数会是两张表列数之积
这也就使在交叉联结不用使用联结键on指定连接内容
SELECT SP.shop_id,SP.shop_name,SP.product_id,P.product_name
FROM ShopProduct AS SP CROSS JOIN PRODUCT AS P