大家好,又见面了,我是你们的朋友全栈君。
数据库版本:mysql8。0.27 如果以下代码执行有问题欢迎留言,一起探讨
什么是自然连接?
什么是等值连接?
举例分析: 表aaa
表bbb:
查询表aaa和表bbb中属性C B D相等的数据 等值连接查询:
SElect*from aaa,bbb WHERE aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E
结果:
自然连接查询:
-- 自然连接用关键字 natural join
SELECT*from aaa natural join bbb;
结果:
由上面两个结果可以看出,等值连接就是从两个表数据的交集中取指定值相等的数据。而自然连接就是取两个表中相同属性,并且值相等的数据,而且消除了相同属性列。
第一种:where
SElect*from aaa,bbb WHERE aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E
第二种:inner join
select*from aaa inner join bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E;
第三种:join
select*from aaa join bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E;
第四种:STRAIGHT_JOIN
select*from aaa STRAIGHT_JOIN bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E;
后面三种效果一样,第三种可以理解为第二种的缩写。第四种和第二种主要区别是插入方式不同,第四种性能略低
什么是左连接?
代码实现:
select*from aaa left join bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E;
结果:
什么是左连接?
代码实现:
select*from aaa right join bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E;
结果:
代码实现:
select*from aaa left join bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E
union
select*from aaa right join bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E
结果:
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/133623.html原文链接:https://javaforall.cn