一、MySQL JOIN 分类

JOIN 按照功能大致分为如下三类:

INNER JOIN(内连接):取得两个表中存在连接匹配关系的记录。

LEFT JOIN(左连接):取得左表(table1)完全记录,即是右表(table2)并无对应匹配记录。

RIGHT JOIN(右连接):与 LEFT JOIN 相反,取得右表(table2)完全记录,即是左表(table1)并无匹配对应记录。

二、图解关系

INNER JOIN:用于取得两个表中存在连接匹配关系的记录。

mysql> select * from a inner join score on a.sn=score.sn;

+----+---------+-------+----+-------+-------+

| id | name    | sn    | id | sn    | score |

+----+---------+-------+----+-------+-------+

|  1 | mashen  | 10086 |  1 | 10086 |    90 |

|  2 | haishen | 10087 |  2 | 10087 |    59 |

|  3 | haoge   | 10088 |  3 | 10088 |    77 |

+----+---------+-------+----+-------+-------+

3 rows in set (0.24 sec)

mysql> select * from a  join score on a.sn=score.sn;

+----+---------+-------+----+-------+-------+

| id | name    | sn    | id | sn    | score |

+----+---------+-------+----+-------+-------+

|  1 | mashen  | 10086 |  1 | 10086 |    90 |

|  2 | haishen | 10087 |  2 | 10087 |    59 |

|  3 | haoge   | 10088 |  3 | 10088 |    77 |

+----+---------+-------+----+-------+-------+

3 rows in set (0.00 sec)

Inner join

产生的结果集中,是A和B的交集。

当2个关联表字段相同时候 也可以用using(sn),这样using 里的字段显示一次.....

mysql> select * from a  join score using(sn);

+-------+----+---------+----+-------+

| sn    | id | name    | id | score |

+-------+----+---------+----+-------+

| 10086 |  1 | mashen  |  1 |    90 |

| 10087 |  2 | haishen |  2 |    59 |

| 10088 |  3 | haoge   |  3 |    77 |

+-------+----+---------+----+-------+

LEFT JOIN:产生表A的完全集,而B表中匹配的则有值,没有匹配的则以null值取代

mysql> select * from a left join score on a.sn=score.sn;

+----+-----------+-------+------+-------+-------+

| id | name      | sn    | id   | sn    | score |

+----+-----------+-------+------+-------+-------+

|  1 | mashen    | 10086 |    1 | 10086 |    90 |

|  2 | haishen   | 10087 |    2 | 10087 |    59 |

|  3 | haoge     | 10088 |    3 | 10088 |    77 |

|  8 | left join | 11122 | NULL |  NULL |  NULL |

+----+-----------+-------+------+-------+-------+

4 rows in set (0.00 sec)

##产生在A表中有而在B表中没有的集合,在业务求新增的时候经常使用到的语法:

mysql> select * from a left join score on a.sn=score.sn where score.id is null;

+----+-----------+-------+------+------+-------+

| id | name      | sn    | id   | sn   | score |

+----+-----------+-------+------+------+-------+

|  8 | left join | 11122 | NULL | NULL |  NULL |

+----+-----------+-------+------+------+-------+

1 row in set (0.01 sec)

##产生在b表中有而在a表中没有的集合,就是INNER JOIN

mysql> select * from a left join score on a.sn=score.sn where score.id is not null

+----+---------+-------+------+-------+-------+

| id | name    | sn    | id   | sn    | score |

+----+---------+-------+------+-------+-------+

|  1 | mashen  | 10086 |    1 | 10086 |    90 |

|  2 | haishen | 10087 |    2 | 10087 |    59 |

|  3 | haoge   | 10088 |    3 | 10088 |    77 |

+----+---------+-------+------+-------+-------+

RIGHT JOIN:产生表B的完全集,而A表中匹配的则有值,没有匹配的则以null值取代,与left join 相反.

mysql> select * from a right join score on a.sn=score.sn

-> ;

+------+---------+-------+----+-------+-------+

| id   | name    | sn    | id | sn    | score |

+------+---------+-------+----+-------+-------+

|    1 | mashen  | 10086 |  1 | 10086 |    90 |

|    2 | haishen | 10087 |  2 | 10087 |    59 |

|    3 | haoge   | 10088 |  3 | 10088 |    77 |

| NULL | NULL    |  NULL |  4 | 10089 |    77 |

| NULL | NULL    |  NULL |  5 | 10090 |    70 |

+------+---------+-------+----+-------+-------+

5 rows in set (0.00 sec)

##产生在b表中有而在a表中没有的集合,没有匹配显示null

mysql> select * from a right join score on a.sn=score.sn where a.id is null;

+------+------+------+----+-------+-------+

| id   | name | sn   | id | sn    | score |

+------+------+------+----+-------+-------+

| NULL | NULL | NULL |  4 | 10089 |    77 |

| NULL | NULL | NULL |  5 | 10090 |    70 |

+------+------+------+----+-------+-------+

mysql语法中的join_MySQL JOIN 语法说明与 图解相关推荐

  1. mysql inner join_MySQL JOIN 语法说明与 INNER JOIN 语法用法实例

    MySQL JOIN 语法概述 SQL(MySQL) JOIN 用于根据两个或多个表中的字段之间的关系,从这些表中得到数据. JOIN 通常与 ON 关键字搭配使用,基本语法如下: ... FROM ...

  2. markdown语法中的空格_Markdown语法简明教程

    Copub 系统采用 Markdown 语法,本文可供快速入门.本文包含以下内容: 分段与分行 标题 文字样式 段落对齐 程序代码 分隔线 项目列表 表格 图像与链接 引用与说明 注释 编注 图题与表 ...

  3. mysql select语法_MySQL SELECT语法(一)SELECT语法详解

    SELECT的语法如下: SELECT[ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT ...

  4. 如何查询MySQL表中的数据,这些操作你得明白!

    前言 本节比较重要,对数据表数据进行查询操作,其中可能大家不熟悉的就对于INNER JOIN(内连接).LEFT JOIN(左连接).RIGHT JOIN(右连接)等一些复杂查询. 通过本节的学习,可 ...

  5. mysql left join_MySQL LEFT JOIN 语法用法与实例

    MySQL LEFT JOIN 语法 SQL(MySQL) LEFT JOIN 会取得左表(table1)全部记录,即使右表(table2)并无对应匹配记录.LEFT JOIN 基本语法如下: ... ...

  6. 浅析Mysql Join语法以及性能优化

    在讲MySQL的Join语法前还是先回顾一下联结的语法,呵呵,其实连我自己都忘得差不多了,那就大家一起温习吧,这里我有个比较简便的记忆方法,内外联结的区别是内联结将去除所有不符合条件的记录,而外联结则 ...

  7. mysql join null_Mysql Join语法以及性能优化

    一.Join语法概述 join 用于多表中字段之间的联系,语法如下: 代码如下: FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona tabl ...

  8. [转]Mysql Join语法解析与性能分析

    转自:http://www.cnblogs.com/BeginMan/p/3754322.html 一.Join语法概述 join 用于多表中字段之间的联系,语法如下: ... FROM table1 ...

  9. mysql join性能_Mysql Join语法解析与性能分析

    一.Join语法概述 join 用于多表中字段之间的联系,语法如下: ... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona table1 ...

最新文章

  1. 阿里、腾讯美国员工基本年薪曝光,资深算法工程师24万美元,高级研究员26万美元
  2. Linux深入学习专业书
  3. java socket 缓冲_关于socket的发送缓冲区网上有诸多的讨论,这里个人小结一下,希望对以后有些帮助。首先,看下面一段代码,...
  4. 图片上传,CheckBox等用户控件的应用代码
  5. SSAS知识回放之订单数据分析
  6. JavaScript基础教程之flag的用法
  7. 有关“凸”方面的概念:凸(集/函数/优化/二次规划)
  8. 人人都能写游戏系列(三)Unity 3D平衡球游戏
  9. 图文详解双向链表原理
  10. http服务器究竟做了什么(一)
  11. NET 3行代码实现文字转语音功能
  12. python pydicom读取dicom文件信息的几种方式
  13. 福州大学计算机科学非全,福大数计/软件学院2020年招收非全日制专业硕士研究生调剂方案...
  14. maven项目中,添加依赖后,出现Dependency 'xxxx‘ not found解决过程
  15. SR研究(1)RCAN论文阅读上
  16. java 搜索 下拉列表框_用java编写随用户输入自动弹出下拉列表匹配项目,类似百度搜索...
  17. springboot中使用freemarker根据flt模板导出word、pdf文档
  18. Linux学习笔记之软件安装
  19. js 的对象--如何定义一个对象
  20. Nodejs koa2读取服务器图片返回给前端直接展示

热门文章

  1. 都说变量有七八种,到底谁是 Java 的亲儿子
  2. FinTech专题:支付平台建设资金底线防火墙的杀手级设计方案
  3. 前端构建工具 Gulp.js 上手实例
  4. 【专题二】应用号(小程序)开发教程首发第二弹!(0923)
  5. MethodInvokingJobDetailFactoryBean的并发问题
  6. Java中super与this
  7. 图片添加图片水印和文字水印
  8. 可输入可下拉的输入选择框
  9. Jackson 学习
  10. Linux关于Sendmail配置错误的问题