前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL知识大全(四):SQL中的数据表关联

SQL知识大全(四):SQL中的数据表关联

作者头像
数据万花筒
发布2020-12-30 15:36:02
1.9K0
发布2020-12-30 15:36:02
举报
文章被收录于专栏:数据万花筒

UION关联数据结构相同的表

UION包括UION 和UION ALL,二者都是用来关联数据结构相同的数据表,二者的区别在于UION关联之后会去除重复的行,而 UION ALL会保留所有的行。

代码语言:javascript
复制
# UNION 示例
SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_state IN ('IL','IN','MI')
UNION
SELECT cust_name, cust_contact, cust_email
FROM Customers
代码语言:javascript
复制
# UION ALL示例
SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_state IN ('IL','IN','MI')
UNION ALL
SELECT cust_name, cust_contact, cust_email
FROM Customers

JION关联数据结构不同的表

JION类型比较多,包括自连接,自然连接,内链接,交叉连接和外链接,其主要类型汇总如下图。

自连接

两张相同的表,自己和自己连接

代码语言:javascript
复制
SELECT c1.cust_id, c1.cust_name, c1.cust_contact 
FROM Customers AS c1, Customers AS c2
WHERE c1.cust_name = c2.cust_name 
AND c2.cust_contact = 'Jim Jones'; 

自然连接

代码语言:javascript
复制
SELECT C.*, O.order_num, O.order_date, OI.prod_id, OI.quantity, OI.item_price 
FROM Customers AS C, Orders AS O, OrderItems AS OI WHERE C.cust_id = O.cust_id 
AND OI.order_num = O.order_num AND prod_id = 'RGAN01';

内链接

代码语言:javascript
复制
SELECT vend_name, prod_name, prod_price 
FROM Vendors INNER JOIN Products 
ON Vendors.vend_id = Products.vend_id;

交叉连接

没有联结条件的联结是交叉连接,也称为笛卡尔积

代码语言:javascript
复制
SELECT vend_name, prod_name, prod_price
FROM Vendors, Products;

外连接

1.左外连接

代码语言:javascript
复制
SELECT p.name, pt.name
FROM products p, product_types pt
WHERE p.product_type_id = pt.product_type_id(+)
ORDER BY p.name;

2.全连接

代码语言:javascript
复制
SELECT p.name, pt.name
FROM products p FULL JOIN product_types pt ON p.product_type_id = pt.product_type_id
ORDER BY p.name

3.右连接

代码语言:javascript
复制
SELECT p.name, pt.name
FROM products p, product_types pt
WHERE p.product_type_id(+) = pt.product_type_id
ORDER BY p.name;

总结

看了那么多的join,可能你已经看晕了,下面这张图,一图说尽SQL中join的本质。

转载自码志的《图解 SQL 里的各种 JOIN》https://mazhuang.org/2017/09/11/joins-in-sql/

还不过瘾,来个进阶版,给出伪代码,复用很方便哦。

转载自码志的《图解 SQL 里的各种 JOIN》https://mazhuang.org/2017/09/11/joins-in-sql/

参考书籍:《SQL必知必会》

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据万花筒 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档