本文主要是介绍SQL-一文get到底什么是联结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
🎈写在前文
- 💖 作者简介:大家好,我是小王🙋♂️
- 📝 个人主页:你隔壁的小王🔥
- 🎉 欢迎点赞👍+收藏⭐️+留言📝
- 📣专栏:SQL🙋♂️
🙋♂️ 小伙伴们如果在学习过程中有不明白的地方,欢迎评论区留言提问!希望能和大家一起进步,共同成长!
目录
🎈写在前文
联结(以列为单位对表进行联结)
什么是联结
内联结—— INNER JOIN
外联结—— OUTER JOIN
3张以上的表的联结
交叉联结—— CROSS JOIN
联结(以列为单位对表进行联结)
● 联结( JOIN )就是将其他表中的列添加过来,进行“添加列”的集合运算。UNION 是以行(纵向)为单位进行操作,而联结则是以列(横向)为单位进行的。
● 联结大体上分为内联结和外联结两种。首先请大家牢牢掌握这两种联结的使用方法。
什么是联结
- 联结( JOIN )简单来说,就是将其他表中的列添加过来,进行“添加列”的运算,通过使用联结可以从多张表中选取数据
内联结—— INNER JOIN
表1
表2
如上表所示,两张表中的列可以分为如下两类
所谓联结运算,一言以蔽之,就是“以 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;
可以发现两个表组合起来了 (ps:进行内联结时必须使用 ON 子句,并且要书写在 FROM 和 WHERE 之间,使用联结时 SELECT 子句中的列需要按照“ < 表的别名 > . < 列名 > ”的格式进行书写。)
外联结—— OUTER JOIN
外联结也是通过 ON 子句的联结键将两张表进行联结,并从两张表中同时选取相应的列的。基本的使用方法并没有什么不同,只是结果却有所不同。
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时右侧的表是主表
3张以上的表的联结
表3
SELECT SP.shop_id, SP.shop_name, SP.product_id, P.product_name, P.sale_price, IP.inventory_quantityFROM ShopProduct AS SP INNER JOIN Product AS PON SP.product_id = P.product_idINNER JOIN InventoryProduct AS IPON SP.product_id = IP.product_id WHERE IP.inventory_id = 'S001';
交叉联结—— CROSS JOIN
交叉联结是所有联结运算的基础。
SELECT SP.shop_id, SP.shop_name, SP.product_id, P.product_name FROM ShopProduct AS SP CROSS JOIN Product AS P;
对满足相同规则的表进行交叉联结的集合运算符是 CROSS JOIN (笛卡儿积)。进行交叉联结时无法使用内联结和外联结中所使用的 ON 子句,这是因为交叉联结是对两张表中的全部记录进行交叉组合,因此结果中的记录数通常是两张表中行数的乘积。
内联结是交叉联结的一部分,“内”也可以理解为“包含在交叉联结结果中的部分”。相反,外联结的“外”可以理解为“交叉联结结果之外的部分”。
这篇关于SQL-一文get到底什么是联结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!