3

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

我的问题是:如果同名列有两个不同的值怎么办?它们将被删除,但是如果我需要从删除的元组中获取一些信息怎么办?

有人可以用例子向我解释一下吗?

4

1 回答 1

2

这些值不需要是唯一的,并且您不应该“丢弃”元组。

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

  • 懒惰:不打扰输入连接条件
  • 信任:希望当将同名列添加到两个表时,它们的查询不会突然中断
  • 坏:好的编程的本质是清晰。使用自然连接会掩盖连接是如何进行的,因此查询的读者必须检查表定义以了解发生了什么

恕我直言,使用自然连接是一个糟糕的主意,永远不应该使用它们。您几乎一无所获(您节省了输入可能十几个字符)并且损失了很多

编辑:

自然联接在内部/外部方面与任何其他联接一样:默认为内部联接,但您也可以指定左联接或右联接,例如在 mysql 中:

select ...
from t1
natural left join t2
于 2013-01-27T10:54:38.187 回答