今天我们来一起探索下 JOIN,JOIN 作为数据库操作的核心概念,用于合并两个或多个表中的数据。

一、JOIN (INNER JOIN)

1、基本功能:返回两个表中匹配成功的行。

2、特点:

  • 只保留两表中都满足连接条件的记录;
  • 如果某行在一个表中存在但在另一个表中没有匹配项,则该行不会出现在结果中;
  • 结果集的行数两个原表的行数。

3、语法

SELECT columns
FROM table1
[INNER] JOIN table2 ON table1.column = table2.column;

4、示例

SELECT orders.order_id, customers.customer_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;

二、LEFT JOIN (LEFT OUTER JOIN)

1、基本功能:返回左表的所有行,即使右表中没有匹配。

2、特点

  • 保留左表的全部记录;
  • 当右表无匹配时,右表字段显示为 NULL
  • 结果集的行数 = 左表的行数。

3、语法

SELECT columns
FROM table1
LEFT [OUTER] JOIN table2 ON table1.column = table2.column;

4、示例

SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.dept_id = departments.dept_id;

三、RIGHT JOIN (RIGHT OUTER JOIN)

1、基本功能:返回右表的所有行,即使左表中没有匹配。

2、特点

  • 保留右表的全部记录;
  • 当左表无匹配时,左表字段显示为 NULL
  • 结果集的行数 = 右表的行数;
  • 实际使用较少,通常可以用 LEFT JOIN 替代。

3、语法

SELECT columns
FROM table1
RIGHT [OUTER] JOIN table2 ON table1.column = table2.column;

4、示例

SELECT employees.name, departments.department_name
FROM employees
RIGHT JOIN departments ON employees.dept_id = departments.dept_id;

实际使用建议

  • INNER JOIN 是最常用的,适用于需要两个表都有数据的场景;
  • LEFT JOIN 常用于需要主表完整数据,关联表可有可无的情况;
  • RIGHT JOIN 使用较少,通常可以通过调换表顺序用 LEFT JOIN 实现;
  • 注意 NULL 值的处理,特别是在 WHERE 条件中。

在强者的世界中,即便是戴着镣铐跳舞,舞也会跳得铿锵有力。-- 烟沙九洲

INNER JOIN, LEFT JOIN, RIGHT JOIN 的区别的更多相关文章

  1. left join 和 left outer join 的区别

    left join 和 left outer join 的区别 通俗的讲:    A   left   join   B   的连接的记录数与A表的记录数同    A   right   join   ...

  2. SQL的JOIN语法解析(inner join, left join, right join, full outer join的区别)

    原文链接:http://www.powerxing.com/sql-join/ 总的来说,四种JOIN的使用/区别可以描述为: left join 会从左表(shop)那里返回所有的记录,即使在右表( ...

  3. left join on +多条件与where区别

    left join on +多条件与where区别 重点 先匹配,再筛选where条件. 本文将通过几个例子说明两者的差别. 1. 单个条件 select * from product a left ...

  4. SQL JOIN语法,以及JOIN where 和and区别,还有where和join效率问题。

    语法 join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据. Join 和 Key 有时为了得到完整的结果,我们需要从两个或更多的表中获取结果.我们就需要执行 join. 数据库中的表可 ...

  5. 【数据库】left join(左关联)、right join(右关联)、inner join(自关联)的区别

    left join(左关联).right join(右关联).inner join(自关联)的区别 用一张图说明三者的区别: 总结: left join(左联接) 返回包括左表中的所有记录和右表中关联 ...

  6. hive中left join、left outer join和left semi join的区别

    先说结论,再举例子.   hive中,left join与left outer join等价.   left semi join与left outer join的区别:left semi join相当 ...

  7. 转载:left join和left semi join的联系和区别

    1.联系 他们都是 hive join 方式的一种,join on 属于 common join(shuffle join/reduce join),而 left semi join 则属于 map ...

  8. 关于SqlServer的内连接,外链接以及left join,right join之间的一些问题与区别。

    就我个人理解通俗点来说内连接和外连接区别: 内连接 inner join或者 join (被默认为内连接) : 内连接的原理是:先进行语句判断和运行得出结果,然后在将结果连接起来,一般是横着连接. 外 ...

  9. 图解SQL的inner join(join)、left join、right join、full outer join、union、union all的区别

    对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚.Codin ...

  10. left join 和 left outer join 有什么区别?

    left join 是left outer join的简写,left join默认是outer属性的.outer join则会返回每个满足第一个(顶端)输入与第二个(底端)输入的联接的行.它还返回任何 ...

随机推荐

  1. 又一款眼前一亮的Linux终端工具!

    大家好,我是良许. 最近二舅视频刷爆了全网,大家有没去看呢?强烈推荐大家观看一波,也就 11 分钟,保证会触动你的泪点. 不过今天不讲二舅哈,还是来聊聊技术. 今天给大家介绍一款最近发现的功能十分强大 ...

  2. 重磅!微信官方恢复了个人红包封面的制作入口,限时开放!!.md

    前两天微信开放了个人红包封面,引起了大家欢呼雀跃~ 可惜--没几个小时,因为一个不可描述的原因,官方小程序下架了-- 但是, 现在好消息来啦, 官方又恢复个人红包封面制作啦~ 本文教你如何制作红包封面 ...

  3. DIY记录之 USBasp

    序 笔者在上网浏览时发现了这个项目[0].刚好另一个DIY会需要对Attiny85进行烧写,并且感觉自己做一个USBasp来干这个事比较有趣,于是就买材料打板子准备DIY一个USBasp.这篇随笔是用 ...

  4. 经典常用SQL查询语句和常见问题

    一.基础 1.常用sql: ------------------------ // mysql改root密码 mysqladmin -u用户名 -p旧密码 password 新密码 # ---more ...

  5. CS及免杀

    Strategic Cyber 责任有限公司发行了适用于 Windows.Linux 和 MacOS X 的 Cobalt Strike 软件包. 要安装 Cobalt Strike,只需将其存档解压 ...

  6. 成语答题小程序v3.0

    自从开源成语答题小程序以来不断完善功能,并且不断修复bug,成语答题小程序v3版本完善了很多功能 1.增加了原生模板广告,设置原生模板广告后可以设置首页或答题页是否显示原生模板广告 2.增加了背景设置 ...

  7. 遇到的问题之“input的值感觉没有设置上去,却有值”

    案例一.批量设置参数 1.被设置的框 改为下拉框的问题可参考:https://www.cnblogs.com/saoge/p/16985318.html <td> <app:inpu ...

  8. Spring Boot 使用Apollo动态调整日志级别

    摘要:在Spring Boot 项目中,借助Apollo动态修改配置的能力,结合Logback修改日志级别打印执行的SQL脚本. 综述   在生产环境偶现测试环境未发现的SQL查询BUG,但由于线上关 ...

  9. MySQL修改表和字段的字符集和排序规则

    摘要:通过设置表的字符集和排序规则,解决MySQL查询时不区分字母大小写.插入时不支持特殊字符的问题.   关于MySQL查询时不区分字母大小写.插入时不支持特殊字符的问题,只有修改表的字符集和排序规 ...

  10. [读书笔记]《大数据之路》——阿里数据整合及管理体系——OneData模型

    阿里数据整合及管理体系--OneData模型 摘要 阿里的<大数据之路>第9章介绍了其内部进行数据整合及管理的方法体系和工具OneData.他们在这一体系下,构建统 .规范.可共的全域数据 ...