我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文继续描述个更为罕见的mysql语法,叫做自然连接。是不是一脸懵逼了?说起来,就要先说前文中的usingon的简化版语句。而本文中将要描述的自然连接则是using的简化版。

苏南大叔:mysql,如何理解自然连接 nature join 语句? - mysql-自然连接
mysql,如何理解自然连接 nature join 语句?(图6-1)

大家好,这里是苏南大叔的“程序如此灵动”博客,这里记录苏南大叔和计算机代码的故事。本文测试环境:win10mysql@5.7.26MySQLFront@5.3

前文回顾

因为自然连接是using的再次简化版本,所以这里沿用上一个using文章中的测试样本。参考文章:

可以正确执行的语句是:

select * from posts inner join users2 using(user_id)

它能够正确执行的前提是,postsusers里面都有个字段叫做user_id,并且这两个字段表示的意思相同。

苏南大叔:mysql,如何理解自然连接 nature join 语句? - using
mysql,如何理解自然连接 nature join 语句?(图6-2)

自然连接natural

自然连接是using的简化版,就是连这个相同字段都用不指明了,程序自己去寻找判断表之间的关联关系。说实话,这个就有点不靠谱了,是不是极有可能判断错误?

自动匹配错误的范例:

SELECT * FROM users natural join posts

苏南大叔:mysql,如何理解自然连接 nature join 语句? - 自然匹配数据错误
mysql,如何理解自然连接 nature join 语句?(图6-3)

自动匹配正确的范例:

SELECT * FROM users2 natural join posts

苏南大叔:mysql,如何理解自然连接 nature join 语句? - 自然匹配数据正确
mysql,如何理解自然连接 nature join 语句?(图6-4)

笛卡尔乘积naturanature

这个笛卡尔积的关键词有两种写法,分别是:naturanature。他们和自然连接关键词natural拼写非常相似,但是功能上就差很多了。

笛卡尔积的数据,仅仅是左边*右边的自然排列组合。
下面有两条语句可选(执行效果完全一致):

SELECT * FROM users2 natura join posts
SELECT * FROM users2 nature join posts

苏南大叔:mysql,如何理解自然连接 nature join 语句? - 排列组合一
mysql,如何理解自然连接 nature join 语句?(图6-5)

苏南大叔:mysql,如何理解自然连接 nature join 语句? - 排列组合二
mysql,如何理解自然连接 nature join 语句?(图6-6)

相关文章

总结

更多mysql相关经验文章,请参考苏南大叔的博客文章:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   mysql