SQL中的各种join操作

1. 数据库表连接的几种方式:
用户表:
在这里插入图片描述
在这里插入图片描述

(1)left join左连接
返回左边表中的所有行,即使右边表中没有行与之匹配,左边的行依然显示,右边没有匹配尚的显示为null
在这里插入图片描述
如果查询左表独有,使用以下sql
在这里插入图片描述

# 左表独有
SELECT *  FROM 
 user_info AS ur 
 LEFT JOIN 
 city_info AS ci 
 ON ur.city_id = ci.id 
 WHERE ci.id IS NULL;

(2)right join右连接
和左连接正好相反,返回右边表的所有行,即使左边没有行与之匹配,未匹配上的显示null
在这里插入图片描述
查询右边表独有的数据
在这里插入图片描述

# 右表独有
SELECT *  FROM 
 user_info AS ur 
 RIGHT JOIN 
 city_info AS ci 
 ON ur.city_id = ci.id 
 WHERE ur.id IS NULL;

(3)inner join内连接
内连接查询两张表直接的交集部分,只保留两张表都有的字段。
在这里插入图片描述

(4)full join全连接(mysql没有,oracle有)
通俗理解,就是取两张表的并集;mysql中不支持该语法,但是可以采用UNION方式完成。

# FULL JOIN
SELECT *  FROM user_info AS ur LEFT JOIN city_info AS ci ON ur.city_id = ci.id
UNION
SELECT *  FROM user_info AS ur RIGHT JOIN city_info AS ci ON ur.city_id = ci.id;

在这里插入图片描述

(5)其他衍生join
在这里插入图片描述

自然连接
MySQL自行根据相同的字段名判断并完成连接,不需要指定条件;

  • 自然内连接
    取两张表的交集
 SELECT *  FROM t1 NATURAL JOIN t2;
  • 自然左连接
    包含左边表的所有字段
SELECT *  FROM t1 NATURAL LEFT JOIN t2;
  • 自然右连接
SELECT *  FROM t1 NATURAL RIGHT JOIN t2;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值