mysql 自连接-内外连接-全连接

1:mysql 自连接

SELECT  emp.uid,emp.username,mar.uid,mar.username
FORM employees emp,employees mar, WHERE emp.super_id = mar.uid 

mysql 自连接就是form 同一张表两次,然后起别名。进行判断

2:mysql 内连接 和 外连接

(1):mysql内连接

mysql 内连接就是把两个表中相等的数据查询出来

SELECT  e.last_name,d.city
form employees e,departments d
WHERE e.department_id = d.deparment_id

或者:

SELECT  e.last_name,d.city
form employees e JOIN departments  d 
ON e.department_id = d.deparment_id

(2):外连接(左外连接 和 右外连接)

mysql 左外连接就是吧 两个表相同的数据 加上 左表所有的数据 全部查询出来 右连接同理

SELECT  e.last_name,d.city
form employees e LEFT JOIN departments  d 
ON e.department_id = d.deparment_id
SELECT  e.last_name,d.city
form employees e RIGHT JOIN departments  d 
ON e.department_id = d.deparment_id

(3):显示左表所有 并且 不重复的

 实现的原理就是利用左连接 查询出所有的数据来,然后加右表的条件 IS NULL 因为mysql 查询不到的会默认给 null

SELECT  e.last_name,d.city
form employees e LEFT JOIN departments  d 
ON e.department_id = d.deparment_id
where d.deparment_id  IS NULL

 实现原理用上

SELECT e.last_name,d.city 
FORM employees e RIGHT JOIN departments d 
ON e.department_id = d.deparment_id
 WHERE e.department_id IS NULL

(4):全连接 (满外连接)

有两种实现方式 UNION 和 UNION ALL

UNION 和 union all 的区别是 union 会返回两个查询结果的并集 但是会去除重复数据 效率比较底 不建议用union 推荐使用 union all 已提高mysql查询的效率

因此 要查询全连接 所有数据 可以使用下方的组合方式

m employees e LEFT JOIN departments  d 
ON e.department_id = d.deparment_id

UNION ALL

SELECT  e.last_name,d.city
form employees e RIGHT JOIN departments  d 
ON e.department_id = d.deparment_id
WHERE e.department_id IS  NULL

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值