mysql的inner join,left jion,right join,cross join以及on和where的区别

mysql的inner join,left jion,right join,cross join以及on和where的区别,第1张

A表和B表求乘积(即笛卡尔积)

查询的是笛卡尔乘积student(5)Xcourse(4)=20条

查询结果是:

所有限制条件where是通用的

而on只能运用于配合各种join查询

在没有限制条件的情况下相同

都是取得20条记录

限制条件下与cross基本相同。

以左表为主,右表不符合条件的补null

结果

以右表为主,左表不符合条件的补null

结果:

左连接可以转成右连接

on只能和各种连接联合使用select中

where可以用在各种语句上select 、insert、update、delete .....

注意

加上where条件后则不是以左表为主了!

区别:

(1)cross join生成的是先生成笛卡尔集,然后on连接条件被视为了filter用于数据过滤

(2)inner join是直接基于join condition做连接,生成的join集合就是最终的输出结果,产生的中间数据更小。实际上MySQL优化器会将这两条查询都优化成同一种join方式。

inner join:多表联接建立记录集是十分有用的,因为某些情况下,我们需要把数字数据类型显示为相应的文本名称,这就碰到了多表联接建立记录集的问题。

cross join:连接用于生成两张表的笛卡尔集。

一、指代不同

1、JOIN:用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

2、INNER JOIN :组合两个表中的记录,只要在公共字段之中有相符的值。

二、特点不同

1、JOIN:每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。

2、INNER JOIN :只要在这两个表的公共字段之中有相符值,内部联接将组合两个表中的记录。

三、规定不同

1、JOIN:如果表中有至少一个匹配,则返回行。

2、INNER JOIN :被联接的字段的名称。若不是由数字构成的,则这些字段必须为相同的数据类型并包含同类数据,但无须具有相同的名称。

参考资料来源:百度百科-INNER JOIN

参考资料来源:百度百科-SQL语句大全


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6107255.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-15
下一篇 2023-03-15

发表评论

登录后才能评论

评论列表(0条)

保存