使用SQL别名与内部联接有什么区别?

使用SQL别名与内部联接有什么区别?,sql,Sql,在中,它提到使用alias执行以下查询 SELECT Orders.OrderID, Orders.OrderDate, Customers.CustomerName FROM Customers, Orders WHERE Customers.CustomerName = "Around the Horn" AND Customers.CustomerID = Orders.CustomerID; 这使我对JOIN的用法感到困惑。这种查询不是连接两个表

在中,它提到使用alias执行以下查询

SELECT 
    Orders.OrderID, Orders.OrderDate, Customers.CustomerName
FROM 
    Customers, Orders
WHERE 
    Customers.CustomerName = "Around the Horn" 
    AND Customers.CustomerID = Orders.CustomerID;
这使我对JOIN的用法感到困惑。这种查询不是连接两个表中的列吗?这种查询和连接有什么区别

两者都一样,没有区别

只有在可读性方面存在差异。
在我看来,PLSQL(ORACLE)开发人员在编写查询时选择别名,然后TSQL(SQL Server)开发人员通过
Join选择。您的问题的答案是,您的查询与内部联接之间没有区别,但很多时候,在未明确定义关系或表可能不需要关系的表之间编写查询。在这些情况下,您将使用左连接从第一个表返回数据,并从右侧的表返回零到多个项。使用您的格式,会使书写和阅读变得更加困难。至于表别名,例如,在编写自连接时,需要使用它们,因此理解它们是必不可少的

JOIN和alias是两个不同的概念。。别名用于创建替代名称(通常较短),以便于对象引用和阅读。。因此,您可以使用列名别名或表名别名,例如:

select a.col1 
from my_table as a 
a是表my_表的别名

其中c1是col1的别名

JOIN用于构建表之间的关系 连接可以是隐式的,也可以是显式的

在代码中,您使用的是隐式连接,保持关系的表之间的条件基于where子句

但是你可以用一种更积极的方式使用explict join

SELECT Orders.OrderID, Orders.OrderDate, Customers.CustomerName
FROM Customers
INNER JOIN  Orders on Customers.CustomerID=Orders.CustomerID;
WHERE  Customers.CustomerName="Around the Horn" 

不要把学校作为参考。20世纪80年代使用了逗号分隔连接语法。1992年引入了一种具有显式联接的更好语法(
内部联接
左侧外部联接
交叉联接
等)。用这个代替。在您的情况下:
来自客户内部加入客户的订单。CustomerID=订单。CustomerID
。您可以为表使用别名,例如
c
用于
客户
o
用于
订单
。然后可以使用
o.OrderID
而不是
Orders.OrderID
等,这使得查询更容易阅读。例如:
FROM customers c JOIN orders o ON c.CustomerID=o.CustomerID
字符串文字的标准引号是单引号。你不应该使用双引号。有些数据库管理系统允许这样做,但最好还是坚持标准。(例如,MySQL允许双引号,但仅限于特定的数据库设置。更改该设置,所有在字符串上使用双引号的查询都将无效。)@ThorstenKettner correct。。谢谢答案更新添加where子句并更改on条件
SELECT Orders.OrderID, Orders.OrderDate, Customers.CustomerName
FROM Customers
INNER JOIN  Orders on Customers.CustomerID=Orders.CustomerID;
WHERE  Customers.CustomerName="Around the Horn"