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语句大全
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)