SQL三种连接:内连接、外连接、交叉连接

  • 一、交叉连接(CROSS JOIN)
  • 二、内连接(INNER JOIN)
  • 三、外连接(LEFT JOIN、RIGHT JOIN、FULL JOIN)
    • 1.左外连接
    • 2.右外连接
    • 3.完整外连接

准备两张表并以PersonId相关联。

一、交叉连接(CROSS JOIN)

交叉连接返回被连接的两个表所有数据行的笛卡尔积。

// 这两句sql完全等价
select * from person CROSS JOIN address
select * from person, address

查询结果:

二、内连接(INNER JOIN)

内连接可以获取两表的公共部分的记录,即利用条件表达式来消除交叉连接的某些数据行。

// 这两句sql完全等价
select * from person INNER JOIN address ON person.PersonId = address.PersonId
select * from person, address WHERE person.PersonId = address.PersonId

查询结果:注意此处PersonId = 4的小孙并未输出
所以内连接只查询两表中都包合的数据

三、外连接(LEFT JOIN、RIGHT JOIN、FULL JOIN)

注意:外连接时,应注意where与on的区别

  • on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
  • where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉

1.左外连接

左向外联接的结果集包括指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值(null)

select * from person LEFT JOIN address ON person.PersonId = address.PersonId

查询结果:注意此处PersonId = 4的‘小孙’也输出并且由于‘小孙’不存在对应的address,所以address的数据置为null

2.右外连接

右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值(null)

select * from person RIGHT JOIN address ON person.PersonId = address.PersonId

查询结果:注意此处AddressId = 6的‘广东’也输出并且由于‘广东’不存在对应的person,所以preson的数据置为null

3.完整外连接

完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值(null)
Mysql中不支持FULL JOIN,所以这里用UNION联合查询代替

select * from person LEFT JOIN address ON person.PersonId = address.PersonId
UNION
select * from person RIGHT JOIN address ON person.PersonId = address.PersonId

查询结果:同时输出了'小孙'以及'广东'

SQL三种连接:内连接、外连接、交叉连接相关推荐

  1. Mysql连接查询主要分为三种:内连接、外连接、交叉连接

    Mysql 连接查询主要分为三种:内连接.外连接.交叉连接 内连接 使用比较运算符(包括=.>.<.<>.>=.<=.!>和!<)进行表间的比较操作,查 ...

  2. SQL连接的理解和使用(内连接:自然连接等值连接,外连接:左连接右连接全外连接)

    目录 一.连接的介绍 连接是什么? 连接分几种? 条件连接 等值连接 自然连接 二.连接的使用 内连接 INNER JOIN 内连接与等值连接区别 内连接与自然连接区别 外连接 OUTER JOIN ...

  3. 数据库之SQL(基本连接,内连接,左外连接,右外连接,全外连接,交叉连接,自连接)

    之前的博客内容我们分享了数据表的查询与管理,但那只是针对数据库中的一个表格进行的查询管理,现在如果我们想要同时看到两个数据表中的数据的话,那要怎么办呢?采用多连接查询的方式. SQL中有哪几种多连接的 ...

  4. 你不知道的 ,MySQL中的七种SQL JOINS的实现,满外连接

    七种SQL JOINS的实现,满外连接 每博一文案 英国作家摩姆说过,我们每个人在世界上都是孤独的,因此 我们只能孤独地行走,尽管身体相互依傍,却并不在一起. 既不了解别的人,也不能为别人所了解. 当 ...

  5. 第四章 SQL查询 之连接{自然连接,内连接,外连接(左外连接,右外连接,完全连接)}

    4.4 连接 自然连接 自然连接实际指定了搜寻条件.这里包括两部分的内容:首先,自然连接列必须同名,另外,所有同名列都将作为搜索条件. 自然连接所使用的关键字为natural join .其连接原则为 ...

  6. sql语句的内连接、左外连接、右外连接的理解

    sql语句 内连接.左外连接.右外连接的理解 大家在初学数据库时,对DQL中的连接查询是否有些疑惑,不知道什么时候什么场景下该用那种连接查询? 不要着急,接下来由我来给大家介绍一下,本人对内连接.左外 ...

  7. SQL中的各种连接的区别总结(内连接,左连接,左外连接,右连接,右外连接,全连接,全外连接)

    在数据库中建立两张表方便大家理解,teacher和student表(student表中的teacherid字段是对应teacher表中的ID,举个例子张三的老师就是李四,没有teacherid就是这个 ...

  8. Oracle 内、外连接

    一.Oracle连接类型     ☆说明:按照自己的理解划分的类型,并不是官方定义. 1.内连接 ①等值连接 ②非等值连接 ③自然连接 2.外连接 ①左外连接 ②右外连接 ③全外连接 二.表数据准备 ...

  9. oracle 连接查询(内、外连接、自连接、子查询)

    内连接: 一般使用inner join来实现.其中inner关键字可以省略 同时必须在from子句之后定义一个on子句,用来指定连接条件 外连接 1 左外连接:关键字为left outer join或 ...

最新文章

  1. ORACLE等待事件:direct path write
  2. 2008-07-30 郁闷的旅行之一
  3. 无法绑定到“ ngModel”,因为它不是“ input”的已知属性
  4. python编程菱形_Python打印“菱形”星号代码方法
  5. vue根据url获取内容axios_vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据...
  6. yii2 调用未定义函数_Python 函数(三) 使用规则
  7. 信息学奥赛一本通(1131:基因相关性)
  8. flutter 序列化_如何在Flutter中序列化对象
  9. 7-135 二叉搜索树的2层结点统计
  10. Fibbonacci Number(杭电2070)
  11. C中的extern-static-const关键词
  12. 递归求解汉诺塔问题(C++)
  13. 谈目标绩效的一种想象
  14. nodejs mysql 执行多条sql语句
  15. 微信小程序点击事件绑定及传参详解
  16. 远程桌面控制软件Teamviewer免费版安装
  17. 电脑重启桌面 计算机图标消失,电脑重启后计算机图标不见了怎么办
  18. 个人银行账户管理程序【简化】
  19. 【新番尝鲜】秀逗魔导士E-revolution——罪名:莉娜*因巴斯
  20. 计算机使用鼠标的课件,鼠标的基本操作ppt课件.ppt

热门文章

  1. 【转】为NI-CAN硬件配置合适的终端电阻
  2. 数据库中数据长度(理解)和几种int数据类型的区别
  3. [Z] 10 种必知必会的软件开发工具
  4. 7300 LE显卡只能使用VGA模式
  5. 模型的评估方法及错误率与精度
  6. 3dmax 单位匹配和基本单位设置
  7. 使用nfs为k8s提供pv动态供给存储
  8. apple pay集成_如何将Google Pay集成到您现有的Android应用中
  9. RD算法及其距离徙动校正(原理及matlab仿真)
  10. 电气设备自动化控制中PLC技术的应用