SQL三种连接:内连接、外连接、交叉连接
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三种连接:内连接、外连接、交叉连接相关推荐
- Mysql连接查询主要分为三种:内连接、外连接、交叉连接
Mysql 连接查询主要分为三种:内连接.外连接.交叉连接 内连接 使用比较运算符(包括=.>.<.<>.>=.<=.!>和!<)进行表间的比较操作,查 ...
- SQL连接的理解和使用(内连接:自然连接等值连接,外连接:左连接右连接全外连接)
目录 一.连接的介绍 连接是什么? 连接分几种? 条件连接 等值连接 自然连接 二.连接的使用 内连接 INNER JOIN 内连接与等值连接区别 内连接与自然连接区别 外连接 OUTER JOIN ...
- 数据库之SQL(基本连接,内连接,左外连接,右外连接,全外连接,交叉连接,自连接)
之前的博客内容我们分享了数据表的查询与管理,但那只是针对数据库中的一个表格进行的查询管理,现在如果我们想要同时看到两个数据表中的数据的话,那要怎么办呢?采用多连接查询的方式. SQL中有哪几种多连接的 ...
- 你不知道的 ,MySQL中的七种SQL JOINS的实现,满外连接
七种SQL JOINS的实现,满外连接 每博一文案 英国作家摩姆说过,我们每个人在世界上都是孤独的,因此 我们只能孤独地行走,尽管身体相互依傍,却并不在一起. 既不了解别的人,也不能为别人所了解. 当 ...
- 第四章 SQL查询 之连接{自然连接,内连接,外连接(左外连接,右外连接,完全连接)}
4.4 连接 自然连接 自然连接实际指定了搜寻条件.这里包括两部分的内容:首先,自然连接列必须同名,另外,所有同名列都将作为搜索条件. 自然连接所使用的关键字为natural join .其连接原则为 ...
- sql语句的内连接、左外连接、右外连接的理解
sql语句 内连接.左外连接.右外连接的理解 大家在初学数据库时,对DQL中的连接查询是否有些疑惑,不知道什么时候什么场景下该用那种连接查询? 不要着急,接下来由我来给大家介绍一下,本人对内连接.左外 ...
- SQL中的各种连接的区别总结(内连接,左连接,左外连接,右连接,右外连接,全连接,全外连接)
在数据库中建立两张表方便大家理解,teacher和student表(student表中的teacherid字段是对应teacher表中的ID,举个例子张三的老师就是李四,没有teacherid就是这个 ...
- Oracle 内、外连接
一.Oracle连接类型 ☆说明:按照自己的理解划分的类型,并不是官方定义. 1.内连接 ①等值连接 ②非等值连接 ③自然连接 2.外连接 ①左外连接 ②右外连接 ③全外连接 二.表数据准备 ...
- oracle 连接查询(内、外连接、自连接、子查询)
内连接: 一般使用inner join来实现.其中inner关键字可以省略 同时必须在from子句之后定义一个on子句,用来指定连接条件 外连接 1 左外连接:关键字为left outer join或 ...
最新文章
- ORACLE等待事件:direct path write
- 2008-07-30 郁闷的旅行之一
- 无法绑定到“ ngModel”,因为它不是“ input”的已知属性
- python编程菱形_Python打印“菱形”星号代码方法
- vue根据url获取内容axios_vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据...
- yii2 调用未定义函数_Python 函数(三) 使用规则
- 信息学奥赛一本通(1131:基因相关性)
- flutter 序列化_如何在Flutter中序列化对象
- 7-135 二叉搜索树的2层结点统计
- Fibbonacci Number(杭电2070)
- C中的extern-static-const关键词
- 递归求解汉诺塔问题(C++)
- 谈目标绩效的一种想象
- nodejs mysql 执行多条sql语句
- 微信小程序点击事件绑定及传参详解
- 远程桌面控制软件Teamviewer免费版安装
- 电脑重启桌面 计算机图标消失,电脑重启后计算机图标不见了怎么办
- 个人银行账户管理程序【简化】
- 【新番尝鲜】秀逗魔导士E-revolution——罪名:莉娜*因巴斯
- 计算机使用鼠标的课件,鼠标的基本操作ppt课件.ppt