首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内连接,自然连接和赤道连接

内连接,自然连接和赤道连接
EN

Stack Overflow用户
提问于 2018-06-21 05:08:12
回答 1查看 558关注 0票数 0

我是新加入,无法理解的区别和数学工作背后的内部连接,自然连接和马联接。它总是一个笛卡儿乘积,使用谓词将其制成一个较小的结果吗?

有谁能用例子详细说明这三个联接的基本工作吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-21 05:24:43

A和B的内部联接基于联接谓词组合A行和B行的列。例如,一个"sempai“连接:SELECT ... FROM people A INNER JOIN people B ON A.age > B.age将对每个人与每个人是他们的下级;最年轻的人将不会从A中选择,而最年长的人将不会从B中选择,因为没有匹配的行。

Equi是一个特殊的连接,其中连接关系是相等的。最后一段中的"sempai“联接不是equi连接,而是”同龄“连接。虽然它通常用于外部关系(主键上的equi连接),例如SELECT ... FROM person A INNER JOIN bicycle B ON A.bicycle_id = B.id。(不要注意这不是一个合适的模式,人们有时有多辆自行车.一个愚蠢的例子,我相信我会找到一个更好的例子。)

自然联接是一种特殊的equi连接,它假定所有共享列相等(没有显式声明谓词)。例如,假设SELECT ... FROM people A INNER JOIN bicycles B ON A.bicycle_id = B.bicycle_id是两个表中唯一的列,则bicycle_id等同于SELECT ... FROM people A NATURAL JOIN bicycles B。由于几个原因,我认识的大多数人都不会使用它--让主键不重复表名(即bicycles.id而不是bicycles.bicycles_id)是一种更常见的做法;外键可能不反映表名(例如,person.overseer_id而不是person.person_id,因为明显的原因),以及(忘记了我的我,但幸运的是Sudipta Mondal记住了),可能有一些不相关的列被命名相同,但是加入起来没有任何意义,比如creation_time。由于这些原因,我一生中从未使用过NATURAL JOIN

赤道/自然连接不一定是内在的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50960752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档