mysql,如何理解自然连接 nature join 语句?
发布于 作者:苏南大叔 来源:程序如此灵动~
本文继续描述个更为罕见的mysql
语法,叫做自然连接。是不是一脸懵逼了?说起来,就要先说前文中的using
是on
的简化版语句。而本文中将要描述的自然连接则是using
的简化版。
大家好,这里是苏南大叔的“程序如此灵动”博客,这里记录苏南大叔和计算机代码的故事。本文测试环境:win10
,mysql@5.7.26
,MySQLFront@5.3
。
前文回顾
因为自然连接是using
的再次简化版本,所以这里沿用上一个using
文章中的测试样本。参考文章:
可以正确执行的语句是:
select * from posts inner join users2 using(user_id)
它能够正确执行的前提是,posts
和users
里面都有个字段叫做user_id
,并且这两个字段表示的意思相同。
自然连接natural
自然连接是using
的简化版,就是连这个相同字段都用不指明了,程序自己去寻找判断表之间的关联关系。说实话,这个就有点不靠谱了,是不是极有可能判断错误?
自动匹配错误的范例:
SELECT * FROM users natural join posts
自动匹配正确的范例:
SELECT * FROM users2 natural join posts
笛卡尔乘积natura
和nature
这个笛卡尔积的关键词有两种写法,分别是:natura
和nature
。他们和自然连接关键词natural
拼写非常相似,但是功能上就差很多了。
笛卡尔积的数据,仅仅是左边*右边的自然排列组合。
下面有两条语句可选(执行效果完全一致):
SELECT * FROM users2 natura join posts
SELECT * FROM users2 nature join posts
相关文章
- https://newsn.net/say/mysql-left-join.html
- https://newsn.net/say/mysql-inner-join.html
- https://newsn.net/say/mysql-using.html
总结
更多mysql
相关经验文章,请参考苏南大叔的博客文章:


