超详细mysql left join,right join,inner join用法分析

下面是例子分析

表A记录如下:

aID aNum

1 a20050111

2 a20050112

3 a20050113

4 a20050114

5 a20050115

表B记录如下:

bID bName

1 2006032401

2 2006032402

3 2006032403

4 2006032404

8 2006032408

创建这两个表SQL语句如下:

CREATE TABLE a

aID int( 1 ) AUTO_INCREMENT PRIMARY KEY ,

aNum char( 20 )

)

CREATE TABLE b(

bID int( 1 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,

bName char( 20 )

)

INSERT INTO a

VALUES ( 1, ‘a20050111’ ) , ( 2, ‘a20050112’ ) , ( 3, ‘a20050113’ ) , ( 4, ‘a20050114’ ) , ( 5, ‘a20050115’ ) ;

INSERT INTO b

VALUES ( 1, ‘ 2006032401’ ) , ( 2, ‘2006032402’ ) , ( 3, ‘2006032403’ ) , ( 4, ‘2006032404’ ) , ( 8, ‘2006032408’ ) ;

实验如下:

1.left join(左联接)

sql语句如下:

SELECT * FROM a

LEFT JOIN b

ON a.aID =b.bID

结果如下:

aID aNum bID bName

1 a20050111 1 2006032401

2 a20050112 2 2006032402

3 a20050113 3 2006032403

4 a20050114 4 2006032404

5 a20050115 NULL NULL

(所影响的行数为 5 行)

结果说明:

left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.

换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).

B表记录不足的地方均为NULL.

2.right join(右联接)

sql语句如下:

SELECT * FROM a

RIGHT JOING b

ON a.aID = b.bID

结果如下:

aID aNum bID bName

1 a20050111 1 2006032401

2 a20050112 2 2006032402

3 a20050113 3 2006032403

4 a20050114 4 2006032404

NULL NULL 8 2006032408

(所影响的行数为 5 行)

结果说明:

仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.

3.inner join(相等联接或内联接)

sql语句如下:

SELECT * FROM a

INNER JOIN b

ON a.aID =b.bID

等同于以下SQL句:

SELECT *

FROM a,b

WHERE a.aID = b.bID

结果如下:

aID aNum bID bName

1 a20050111 1 2006032401

2 a20050112 2 2006032402

3 a20050113 3 2006032403

4 a20050114 4 2006032404

结果说明:

很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.

LEFT JOIN操作用于在任何的 FROM 子句中,

组合来源表的记录。使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即

使在第二个(右边)表中并没有相符值的记录。

语法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2

说明:table1, table2参数用于指定要将记录组合的表的名称。

field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的

名称。

compopr 参数指定关系比较运算符:”=”, “”, “<=”, “>=” 或 “<>”。

如果在 INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误。

延伸阅读coded by nessus

mysql 联表比对,MySQL联表查询详解/超详细mysql left join,right join,inner join用法分析比较...相关推荐

  1. mysql和mybatis面试题_BATJ面试题汇总详解:MyBatis+MySQL+Spring+Redis+多线程

    Spring Spring 概述 什么是spring? 使用Spring框架的好处是什么? Spring由哪些模块组成? 解释AOP模块 Spring配置文件 什么是Spring IOC 容器? 依赖 ...

  2. MySQL存储引擎InnoDB、MyISAM和MEMORY介绍详解和区别

    文章目录 MySQL存储引擎InnoDB.MyISAM和MEMORY介绍详解和区别 InnoDB存储引擎 特点 操作示例 创建InnoDB表 修改表引擎为InnoDB MyISAM存储引擎 特点 操作 ...

  3. mysql简易购物车系统_基于PHP+Mysql简单实现了图书购物车系统的实例详解

    基于PHP+Mysql简单实现了图书购物车系统的实例详解,购物车,这是,页面,简单,图书 基于PHP+Mysql简单实现了图书购物车系统的实例详解 易采站长站,站长之家为您整理了基于PHP+Mysql ...

  4. 03 mysql数据查询_MySql学习day03:数据表之间的连接、查询详解

    主键: 关键字:primary key 特点:不能为null,并且唯一. 主键分类: 逻辑主键:例如ID,不代表实际的业务意义,只是用来唯一标识一条记录(推荐) 业务主键:例如username,参与实 ...

  5. mysql多表查询详解_MySQL多表查询详解上

    时光在不经意间,总是过得出奇的快.小暑已过,进入中暑,太阳更加热烈的绽放着ta的光芒,...在外面被太阳照顾的人们啊,你们都是勤劳与可爱的人啊.在房子里已各种姿势看我这篇这章的你,既然点了进来,那就由 ...

  6. MySQL建表(那些字段必须)命令详解

    MySQL建表(那些字段必须)命令详解1. create table命令 强调:使用建表命令之前必须使用use命令选择表所在的数据库.create table命令的格式如下: create table ...

  7. Mysql 多表查询详解

    Mysql 多表查询详解 一.前言  二.示例 三.注意事项 一.前言  上篇讲到Mysql中关键字执行的顺序,只涉及了一张表:实际应用大部分情况下,查询语句都会涉及到多张表格 : 1.1 多表连接有 ...

  8. MySQL运维(二)MySQL分库分表概念及实战、读取分离详解

    MySQL运维(二)MySQL分库分表详解.读取分离详解 1.MySQL分库分表相关概念 1.1 分库分表概念 1.1.1 分库的原因 分库:就是一个数据库分成多个数据库,部署到不同机器. 如果业务量 ...

  9. mysql单表查询实例_MySQL简单查询详解-单表查询

    MySQL简单查询详解-单表查询 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查询的执行路径 一条SQL查询语句的执行过程大致如下图所示: 1>.客户端和服务端通过my ...

最新文章

  1. 微软推出智能语音评测服务,注重解决四大技术障碍
  2. R语言自定义多分类混淆矩阵可视化函数(mutlti class confusion matrix)、R语言多分类混淆矩阵可视化
  3. 查看 Eigen库 linux系统的版本
  4. uvm 形式验证_一种基于UVM的总线验证方法与流程
  5. 安卓5.0以上设备最简单激活XPOSED框架的步骤
  6. 【翻译】What is State Machine Diagram(什么是状态机图)?
  7. Origin null is not allowed by Access-Control-Allow-Origin 解决方法
  8. 【ArcGIS风暴】ArcGIS解决数字化之前创建图层时未定义坐标系而导致数据跑偏的问题
  9. mysql用命令修改主键名_MySQL的常用命令:添加外键,修改字段名称,增加字段 设置主键自增长等...
  10. 用鸿蒙取名好吗,“鸿蒙”两个字,还是古人写得好看…
  11. tomcat中间件的默认端口号_Tomcat下载安装及配置
  12. 线段树 B数据结构 牛客练习赛28
  13. 纪念宾得4000万象素的120数码相机645D推出两周年
  14. jenkins使用_Spring Boot 系列:使用 Jenkins 部署 Spring Boot
  15. MySql视图、存储过程、函数、索引
  16. oracle12c安装教程
  17. 小编为你简单介绍基本ERP管理系统模块
  18. AI落地的新范式,就“藏”在下一场软件基础设施的重大升级里
  19. Consumer is not subscribed to any topics or assigned any partitions
  20. mark:x264编译选项

热门文章

  1. Spring+MyBatis企业应用实战 - 笔记- Java EE应用
  2. 时代变了,199 美元的 iPhone 都可以想了?
  3. 推荐Python十大经典练手项目,让你的Python技能点全亮!
  4. 基于“中国架构”,为政企数字化转型而生,中国电子云自带“三大光环”
  5. 腾讯看点多维实时分析系统架构大曝光!
  6. 用 Java 拿下 HTML,分分钟写个小爬虫!
  7. 厉害了!他是 Facebook 开国元老,30 分钟解决 Instagram 服务器挂机难题
  8. 腾讯回应微信读书侵害用户信息;苹果称今年新iPhone将推迟数周发布;Julia 1.6.0 发布| 极客头条...
  9. 你被限流了吗?| 图解+代码
  10. 小白也能看懂的 Java 异常处理