【问题标题】:Joining tables using FROM clause instead of JOIN clause the same thing?使用 FROM 子句而不是 JOIN 子句连接表是一样的吗?
【发布时间】:2020-10-31 13:55:29
【问题描述】:

我正在学习SQL,本章讲到这样的连接表

SELECT 
    P_DESCRIPT, P_PRICE, V_NAME, V_CONTACT, V_AREACODE, V_PHONE`
FROM 
    PRODUCT, VENDOR
WHERE 
    PRODUCT.V_CODE = VENDOR.V_CODE;

但是,当我在网络上查找有关联接的其他信息时,我看到带有内部和外部联接的 JOIN 子句等等,这很好,但随后使用的 FROM 子句被视为联接或不是?或者这只是一种过时的连接方式?

【问题讨论】:

  • 它被认为是连接的古老语法。我建议你找到更现代的材料。 JOIN 自 1990 年代以来一直存在。
  • 使用 JOIN 是首选和推荐的方式。阅读更多内容。
  • 这能回答你的问题吗? In MySQL queries, why use join instead of where?
  • 这些被称为“SQL-89 连接”,也就是“旧的连接语法”。 SQL-92(28 年前)使它们过时了。它们的功能有限,难以阅读和调试。我建议买一本更好的教科书。出于好奇,书名是什么?
  • 我怀疑是这样,我再也找不到确切的教科书参考了,但它来自 uCertify 材料,课程名为 Database Management Foundations

标签: sql


【解决方案1】:

在您提供的查询中,我们可以认为两个表首先交叉连接,然后我们在 WHERE 子句中提供一个条件来过滤交叉连接结果的输出。

【讨论】:

    【解决方案2】:

    这是首选格式(注意 - 为清楚起见,将表格别名加长):

    SELECT 
        prod.P_DESCRIPT, prod.P_PRICE, vend.V_NAME, vend.V_CONTACT, vend.V_AREACODE, vend.V_PHONE`
    FROM 
        PRODUCT prod 
    JOIN VENDOR vend on vend.VENDOR.V_CODE = prod.PRODUCT.V_CODE
    WHERE 
    < other conditions etc...>
    ;
    

    如果您想比较您的“from”版本与“join”版本,您可以使用您选择的 SQL 工作台工具探查器来运行执行计划,看看哪个更有效。

    【讨论】:

      【解决方案3】:

      回答你的问题,不,它们不是一回事。

      与 SQL-92 连接(JOIN 子句)相比,您提到的“SQL-89 连接”功能有限,因为它们不包括外部连接。此外,它们难以阅读和调试。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-09
        • 2011-10-22
        • 1970-01-01
        相关资源
        最近更新 更多