sql join的使用

mysql的join使用的一直比较少,毕竟在如今的互联网架构中,mysql越来越不推荐使用连表查询,毕竟查询的效率是一个现在分布式大数据等应用场景中是一个极重要因子,但在比较小的互联网项目中依然会是一个很方便的数据的聚合方法。

JOIN:如果表中有至少一个匹配,则返回行。
LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行。
RIGHT JOIN:即使左表中没有匹配,也从右表中返回所有的行。
FULL JOIN:只要其中一个表中存在匹配,就返回行。

现在我们建两张表,分别是用户表(user)和订单表(order),来实践一下4种join的表现及用法:
这里写图片描述
这里写图片描述
可以看出,user表里有一个用户是没有买商品的,order表里也有一个订单对应的用户是不存在的,下面我们看看这两条特殊数据在各种join查询里会有什么表现。
以前一直不怎么使用join,基本都是使用引用两张表的方式,如下:
这里写图片描述
查询出了两张表有关联关系的数据,没有关联到的记录都没有展示。其实这种方式与JOIN或INNER JOIN(内连接)表现是一致的。
这里写图片描述
还有LEFT JOIN(左连接),会展示出所有用户,包括没有订单的用户,如下:
这里写图片描述
某些数据库会把LEFT JOIN也称为LEFT OUTER JOIN,两者并没有区别。
右连接RIGHT(OUTER)JOIN也一样,会展示所有订单表的数据,包括没有关联的用户
这里写图片描述
对于FULL JOIN(全连接),将会查询出所有user记录与所有order记录,包括没有关联的部分,不过mysql不支持full join,我用了union连接左连接查询与右连接查询实现这样的效果
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值