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



在 http://www.w3schools.com/sql/sql_alias.asp 中,它提到使用别名来执行以下查询,

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

这使我对JOIN的使用感到困惑。这种查询不是联接两个表中的列吗?这种查询和 JOIN 有什么区别?

JOIN和alias是两个不同的概念..别名用于创建一个替换名称(通常较短(,以便于对象引用和更易于阅读..所以你可以有列名别名或表名别名,例如:

select a.col1 
from my_table as a 

a 是表的别名my_table

select a.col1  as c1
from my_table as a 

其中 C1 是 Col1 的别名

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

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

但是你可以使用一种更压抑的方式来使用显式联接

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

两者都一样,没有区别。

仅在可读性方面存在差异。在我看来,PLSQL(ORACLE(开发人员在编写查询时选择别名,然后TSQL(SQL Server(开发人员通过Join选择

问题的答案是查询和内部联接之间没有区别,但很多时候,在未显式定义关系的表之间写入查询,或者表可能不需要关系。在这些情况下,您将使用左联接从第一个表返回数据,并从右侧的表中返回零到多个项目。使用您的格式会使编写和阅读变得更加困难。至于表别名,例如,在编写自连接时,您将需要使用它们,因此理解它们至关重要。

最新更新