小小的连接查询,其实里面有很多学问,今天我就来简单剖析一下。

左连接,右连接,内连接的本质:将两个表的数据依据一定条件横向连接起来。

给出建表语句:

--------------------------------------------------

create table test1(

id int,

name varchar(10)

)

create table test2(

id int,

name varchar(10)

)

INSERT INTO `test1` VALUES (1,'2');

INSERT INTO `test1` VALUES (1,'2');

INSERT INTO `test1` VALUES (2,'1');

INSERT INTO `test1` VALUES (2,'2');

INSERT INTO `test1` VALUES (3,'1');

INSERT INTO `test2` VALUES (1,'2');

INSERT INTO `test2` VALUES (2,'1');

INSERT INTO `test2` VALUES (2,'2');

--------------------------------------------------

左连接sql:select * from  test1 a left join test2 b on a.id=b.id

如下为左连接示例图:

1,理解左连接查询方式(以两表id相等作为on的条件):

先将左表数据查出,然后根据on后面的条件,将右表中凡是id与左表id相等的记录都查出来,与匹配的左表记录依次排成一行或多行,若无匹配的记录,则显示null。

举例:select * from  test1 a left join test2 b on a.id=b.id

说明:先将左表数据查出,然后根据on后面的条件,将右表中凡是id与左表id相等的记录都查出来,与匹配的左表记录依次排成一行或多行,若无匹配的记录,则显示null。

在本例中,我画了6根线,每条线都表示了一条查询结果记录。

当ID为1时:左表有2条ID为1的记录,右表有1条。先查左表的第一条,然后再查询右表中所有ID与左表第一条记录的ID相等(即ID为1)的记录,因右表只有1条记录的ID为1,因此得出查询结果的第一条记录:1,2,1,1。

第二条记录查询方式也同上。

当ID为2时:左右表各有2条ID为2的记录。也是同上,当查左表第一条ID为2的记录时,因右表中有2条ID为2的记录,因此查询结果会有两条,即左表的1条记录会和右表的2条记录一一配对。

第二条记录查询方式也同上。

对于id为3的记录,因右表没有ID为3的记录,因此右边显示为null。

--------------------------------------------------

2,理解了左连接之后,右连接也就不难了。

右连接语句:select * from  test1 a right join test2 b on a.id=b.id

右连接查询结果:

--------------------------------------------------

3,而内连接,则是把ID只存在于某一个表中的记录给过滤了。

以下3条sql语句等价:

select * from  test1 a  join test2 b on a.id=b.id

select * from  test1 a inner join test2 b on a.id=b.id

select * from  test1 a , test2 b where a.id=b.id

内连接查询结果:

mysql左连接查询举例_mysql左右连接查询(有示例图)相关推荐

  1. 小白 MySQL数据库链接查询语句_MySQL数据库——连接查询

    今天将用 "手" 来教大家关于MySQL连接查询的知识! ============================================================= ...

  2. mysql 连接查询索引_Mysql (四)连接查询和索引

    一.什么是连接查询:就是将二个或二个以上的表,"连接起来"当做一个数据源,并从中去取得所须要的数据.连接查询包括交叉连接查询.内连接查询.外连接查询 (一)交叉连接:交叉连接不带W ...

  3. mysql中字符串拼接函数_MySQL 字符串连接CONCAT()函数

    MySQL字符串连接函数 使用方法: CONCAT(str1,str2,-) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意: 如果所有参数均为非二进制字符 ...

  4. mysql内连接的自连接_mysql 内连接、外连接、自连接

    一)内连接(等值连接):查询客户姓名,订单编号,订单价格 --------------------------------------------------- select c.name,o.isb ...

  5. mysql 短时大连接的问题_mysql长连接和短连接的问题

    什么是长连接? 其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态. 通常的短连接操作步骤是: 连接->数据传输->关闭连接: 而长连接通常就是: 连接-> ...

  6. mysql多表查询书籍_MySQL多表查询及子查询

    1. MySQL数据库执行查询操作时的查询流程: 请求-->查询缓存 请求-->查询缓存-->解析器-->预处理器-->优化器-->查询执行引擎-->存储引擎 ...

  7. mysql的基本的查询语句_Mysql的基本查询语句

    聚集函数 mysql有5个聚集函数,分别是AVG,MAX,MIN,SUM,COUNT. 分组 分组的使用group by作为关键字,having作为条件关键字. having和where的区别:1.w ...

  8. mysql多表联合查询事例_MySQL——多表查询详细介绍以及实例

    1.表与表之间的关系 一对一:用户表和身份信息表,用户表是主表 例如:男人表 .女人表create table man( mid int primary key auto_increment, mna ...

  9. mysql多表查询总结_MySQL多表查询总结

    MySQL术语: Redundacncy(冗余):存储两次或多次数据,以便实现快速查询. Primary Key(主键):主键是唯一的.表中每条记录的唯一标识. Foreign Key(外键):用于连 ...

  10. mysql 表 视图 索引吗_Mysql多表查询, 视图,事务,索引,函数,go连接数据库

    1.1 今日目标 理解多表查询 理解子查询 能够创建视图 能够删除视图 能够查看创建视图的SQL语句 能够理解事务的作用 能够操作事务 理解索引的作用 能够创建索引 能够删除索引 知道常用的函数 了解 ...

最新文章

  1. android 自定义图片容器,Android应用开发中自定义ViewGroup视图容器的教程
  2. 分布式服务(RPC)+分布式消息队列(MQ)面试题精选
  3. github 笔记
  4. 深入理解javascript原型和闭包(2)——函数和对象的关系
  5. 录制wav格式的音频
  6. 大白话5分钟带你走进人工智能-第31节集成学习之最通俗理解GBDT原理和过程
  7. 二次规划问题matlab,matlab5二次规划问题.doc
  8. 一枚比特币30多万,家用电脑24小时挖矿,多久才能挖到一枚?
  9. JavaWeb:JavaScripts高级
  10. SocketTool.exe 端口占用
  11. 爬取飞猪IP免费代理练习
  12. 物联网技术体系主要分为哪些关键技术,具体包含哪些技术?
  13. Flink操作——状态与容错
  14. axure 侧滑抽屉式菜单_Axure教程之抽屉菜单
  15. 天下第一铭:汤晓鸥教授自叙的故事
  16. .NET并发编程-数据结构不可变性
  17. Ant Design - Authorized
  18. js代码格式化(js代码格式化html标签)
  19. ServU 11 以上版本的数据库用户关联 密码加密原理
  20. Android Studio 全局搜索中文字符

热门文章

  1. 20210725:FLAC刻录音乐CD教程03-Flac转wav格式
  2. 解密搭建平台赚钱的方法一:详解搭建网站收入的几个来源
  3. 学习装黑苹果的正确姿势(小白适用)
  4. 用 Python 编辑 PDF 文件
  5. css 压缩后出现了问题,觉得js或css压缩后不好调试?你应该认识一下source map了...
  6. 服务器u单核性能排行,CPU单核性能排行(2017年10月更新).doc
  7. No instances available for CLOUD-PAYMENT-SERVICEpayment问题
  8. 服务器ie浏览器总是未响应怎么办,IE8浏览器总是无响应或卡死崩溃怎么办
  9. 5 行 Python 代码就能让你的电脑永不息屏!
  10. 【高数】高数第五章节——定积分积分上限函数牛顿——莱布尼兹公式反常积分与广义积分