这里是数据库加油站
如果对你有帮助,给博主一个免费的点赞以示鼓励
欢迎各位点赞评论收藏⭐️
数据库版本:mysql8。0.27
如果以下代码执行有问题欢迎留言,一起探讨
什么是自然连接?
什么是等值连接?
查询表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