Sql 自然连接的顺序重要吗

Sql 自然连接的顺序重要吗,sql,Sql,如果我说: A NATURALJOIN B 这与: B NATURALJOIN A 同样,如果我说: A NATURALJOIN B NATURALJOIN C 这应该如何评估?以下是我的评论: 自然连接是两个词:NATURALJOIN 表的顺序没有区别。例外情况:当您选择*时,所选列的列表是第一个表的所有列,然后是第二个表的所有列 不要使用NATURAL JOINs。它通过表的公共列连接表。如果表恰好共享一个列名,如“text”、“description”或“name”,则将使用该列名。

如果我说:

A NATURALJOIN B
这与:

B NATURALJOIN A
同样,如果我说:

A NATURALJOIN B NATURALJOIN C
这应该如何评估?

以下是我的评论:

  • 自然连接是两个词:
    NATURALJOIN
  • 表的顺序没有区别。例外情况:当您
    选择*
    时,所选列的列表是第一个表的所有列,然后是第二个表的所有列
  • 不要使用
    NATURAL JOIN
    s。它通过表的公共列连接表。如果表恰好共享一个列名,如“text”、“description”或“name”,则将使用该列名。假设您编写了一个带有
    SELECT
    语句的程序,其中两个表person和job由person\u id连接起来。突然,你的程序将完全无法获得任何匹配的记录,因为“person\u id”可能匹配,但“description”不匹配

  • 秩序不重要。请参阅wikipedia条目:顺序会影响返回列的顺序(如果您选择*而不是指定它们)。@Thilo很抱歉,我不懂,我是SQL的完全初学者。你能给我举个有表格的例子吗?谢谢你的回答。不幸的是,我必须学习自然连接,因为这是我正在学习的课程的一部分。我理解问题的第一部分,但第二部分呢?我将如何评估3个自然连接。我假设你自然地把a连接到b,然后结果连接到c?是的,正如你提到的:选择。。。从一个自然连接B自然连接C。首先连接A和B。然后使用该结果集连接C。但顺序并不重要,因为最终将考虑两个或更多表共有的所有列名。假设有A(A,x,y)和B(B,y,z)和C(C,x,z),最后你只会得到Ax=Cx,Ay=By,Bz=Cz的结果行,不管你使用什么顺序。示例:订单A、B、C->1。通过Ay=by连接A和B,得到AB.2。通过Cx=ABx和Cz=ABz将C与AB连接起来。嗯,我希望我的解释方式不会太混乱。是的,我理解,谢谢,但出于好奇,如果A和B没有任何共同的属性,那么你会很自然地将一个空集与C连接起来吗?这只会给你C?你会交叉连接这些表,也就是说,得到一个笛卡尔积,因为每个记录都“匹配”,因为没有反对它的标准。A中有五张唱片,B中有三张唱片,你会得到15张唱片,然后你会加入C。