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