理解自然连接的困难

时间:2013-01-27 10:51:21

标签: sql database natural-join

我在理解数据库系统中自然连接的要点时遇到了问题。根据定义,自然连接选择具有相同名称相等列的相同值的2个表的组合。

我的问题是:如果同一命名列有两个不同的值,该怎么办?它们将被丢弃,但如果我需要来自丢弃的元组的一些信息呢?

有人可以通过示例向我解释一下吗?

1 个答案:

答案 0 :(得分:2)

这些值不需要是唯一的,你不应该有“掉落”的声音。

自然联接适用于懒惰,信任和糟糕的程序员:

  • 懒惰:不能打扰加入条件
  • 信任:希望当同名的列添加到两个表中时,他们的查询不会突然中断
  • 坏:良好编程的本质是清晰度。使用自然连接模糊了联接的方式,因此查询的读者必须检查表定义以确定发生了什么
使用自然连接的恕我直言是一个可怕的想法,他们永远不应该被使用。你几乎没有获得任何东西(你可以节省十几个字符)并输掉很多

编辑:

自然连接就像内部/外部的任何其他连接一样:默认是内连接,但你也可以使左连接或右连接,例如在mysql中:

select ...
from t1
natural left join t2