0

我知道内连接、完全外连接、左(外)连接、右(外)连接和交叉连接的定义。但是我们什么时候应该使用这些呢?任何人都可以举一些例子吗?

不要告诉我他们在课堂上已经习惯了..;)

谢谢!

4

1 回答 1

4

见: http: //www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html

大多数连接只是管理各种数据集。

  • 内连接是当我想要在两组中匹配的数据时
  • 完全外连接是当我想要来自两组的所有数据时,无论它们是否匹配
  • 左连接是一个集合中的所有数据,并且只匹配另一个集合中的数据
  • 右连接(与左连接相同,但表示包括右连接右侧表中的所有日期,仅包含左侧匹配的数据。
  • 交叉连接是与两个集合中的所有数据相关的所有数据,生成完整的笛卡尔积

因此,何时使用它们取决于您想要返回的数据。

你什么时候想使用交叉连接?假设我有一张颜色表、尺码表,并且我想为“衬衫”出售所有尺码的所有颜色,颜色和尺码之间的交叉连接将为我提供所有衬衫所有颜色的所有尺码。然后我可以用它来列出所有的组合。

一个内部连接是我想展示所有蓝色的衬衫,所以我会加入衬衫来着色颜色是蓝色的。这将消除所有其他衬衫。

左连接可能是我已经销售了各种颜色和尺寸的衬衫。但我可能还没有卖出 XXL 红色衬衫。但我仍然想在我的结果中看到它所以我离开了加入我的销售表的尺寸颜色交叉加入,以确保我得到红色 XXL 衬衫; 否则,作为内部连接,我们将失去该组合,因为我们没有任何销售。

右连接与左连接相同,它只管理连接表的 ORDER。

A full outer could be I want to see All customers and all states where we shipped product for shirts. But maybe a customer has only bought pants from us and we've not sold any shirts in Alaska yet. So using a full outer join we can see All customers even if they haven't bought a shirt, and all states even if no shirts were sold there. an Inner would eliminate records as would a left or right join. and a cross join would give us incorrect results as not all states have had sales.

于 2013-06-27T21:14:15.967 回答