MySQL连接查询是什么(mysql,开发技术)

时间:2024-04-28 17:56:26 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

内连接

  • 内连接INNERJOIN是最常用的连接操作。从数学的角度讲就是求两个表的交集,从笛卡尔积的角度讲就是从笛卡尔积中挑出ON子句条件成立的记录。

  • 在我看来内连接和等值连接差不多,自然连接是内连接中的一个特殊连接

自然连接和等值连接的区别

什么是自然连接?

  • 自然连接(Naturaljoin)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。

什么是等值连接?

  • 等值连接是关系运算-连接运算的一种常用的连接方式。是条件连接(或称θ连接)在连接运算符为“=”号时,即θ=0时的一个特例

举例分析:

表aaa

MySQL连接查询是什么

表bbb:

MySQL连接查询是什么

查询表aaa和表bbb中属性C B D相等的数据

等值连接查询:

SElect*fromaaa,bbbWHEREaaa.C=bbb.Candaaa.D=bbb.Dandaaa.E=bbb.E

结果:

MySQL连接查询是什么

自然连接查询:

--自然连接用关键字naturaljoinSELECT*fromaaanaturaljoinbbb;

结果:

MySQL连接查询是什么

由上面两个结果可以看出,等值连接就是从两个表数据的交集中取指定值相等的数据。而自然连接就是取两个表中相同属性,并且值相等的数据,而且消除了相同属性列。

内连接的实现方式

第一种:where

SElect*fromaaa,bbbWHEREaaa.C=bbb.Candaaa.D=bbb.Dandaaa.E=bbb.E

第二种:inner join

select*fromaaainnerjoinbbbonaaa.C=bbb.Candaaa.D=bbb.Dandaaa.E=bbb.E;

第三种:join

select*fromaaajoinbbbonaaa.C=bbb.Candaaa.D=bbb.Dandaaa.E=bbb.E;

第四种:STRAIGHT_JOIN

select*fromaaaSTRAIGHT_JOINbbbonaaa.C=bbb.Candaaa.D=bbb.Dandaaa.E=bbb.E;

后面三种效果一样,第三种可以理解为第二种的缩写。第四种和第二种主要区别是插入方式不同,第四种性能略低

外连接

  • 外连接分为三种:左外连接,右外连接,全外连接。对应SQL:LEFT/RIGHT/FULL OUTER JOIN。

左连接

什么是左连接?

左连接LEFT JOIN的含义就是求两个表A表和B表的交集外加左表剩下的数据。依旧从笛卡尔积的角度讲,就是先从笛卡尔积中挑出ON子句条件成立的记录,然后加上左表A表中剩余的记录

MySQL连接查询是什么

代码实现:

select*fromaaaleftjoinbbbonaaa.C=bbb.Candaaa.D=bbb.Dandaaa.E=bbb.E;

结果:

MySQL连接查询是什么

右连接

什么是左连接?

  • 同理右连接RIGHT JOIN就是求两个表A和B表的交集外加右表B剩下的数据。再次从笛卡尔积的角度描述,右连接就是从笛卡尔积中挑出ON子句条件成立的记录,然后加上右表中剩余的记录

MySQL连接查询是什么

代码实现:

select*fromaaarightjoinbbbonaaa.C=bbb.Candaaa.D=bbb.Dandaaa.E=bbb.E;

结果:

MySQL连接查询是什么

全连接

全外连接就是求两个表A和B集合的并集。从笛卡尔积的角度讲就是从笛卡尔积中挑出ON子句条件成立的记录,然后加上左表中剩余的记录,最后加上右表中剩余的记录。另外MySQL不支持OUTER JOIN,但是我们可以对左连接和右连接的结果做 UNION 操作来实现。

MySQL连接查询是什么

代码实现:

select*fromaaaleftjoinbbbonaaa.C=bbb.Candaaa.D=bbb.Dandaaa.E=bbb.Eunionselect*fromaaarightjoinbbbonaaa.C=bbb.Candaaa.D=bbb.Dandaaa.E=bbb.E

结果:

MySQL连接查询是什么

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:MySQL连接查询是什么的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Redis中RedisTemplate怎么配置序列和反序列化下一篇:

14 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18