2017-02-12 62 views
1

http://www.w3schools.com/sql/sql_alias.asp,它提到用別名做下面的查詢,使用SQL別名與Inner Join有什麼不同?

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

這讓我困惑與JOIN的使用。這種查詢不是連接兩個表中的列嗎?這種查詢和JOIN有什麼區別?

+3

請勿使用w3schools作爲參考。 20世紀80年代使用逗號分隔的連接語法。在1992年,引入了顯式連接('INNER JOIN','LEFT OUTER JOIN','CROSS JOIN')等更好的語法。改用它。在你的情況:'從客戶INNER JOIN訂單ON Customers.CustomerID = Orders.CustomerID'。您可以爲表格使用別名,例如'客戶'和'o'代表'訂單'。然後你可以使用'o.OrderID'而不是'Orders.OrderID'等等,這使得查詢更容易閱讀。例如: - '客戶爲C JOIN命令o在c.CustomerID = o.CustomerID' –

+0

爲字符串常量標準報價是單引號。你不應該使用雙引號。有些DBMS允許它們,但最好遵守標準。 (MySQL允許例如雙引號,但只有具有一定的數據庫設置。更改該設置並使用對字符串雙引號您所有的疑問變得無效。) –

回答

0

兩者是相同的,沒有區別。

只有在可讀性有差異。 在我看來,PLSQL(ORACLE)開發商選擇別名編寫查詢時則TSQL(SQL Server)的開發者選擇通過Join

0

回答你的問題是,有您的查詢和內部加入,但很多沒有區別次,在沒有明確定義關係的表之間寫入查詢或表可能不需要關係。在這些情況下,您可以使用左連接將數據從第一個表中返回,從零到多個右側表中的項。使用你的格式,使得寫和讀更加困難。至於表格別名,例如在編寫自連接時,您需要使用它們,因此理解它們是至關重要的。

2

JOIN和別名是兩個不同的概念..別名是用於創建一個替代名稱(通常較短)爲一個更容易的對象引用和更容易閱讀..所以你可以有列名稱別名或表名別名例如:

select a.col1 
from my_table as a 

一個是表的別名MY_TABLE

select a.col1 as c1 
from my_table as a 

其中,c1爲COL1的別名

JOIN是工作臺 之間建立關係是基於連接可以是內隱或顯式

在你的代碼使用implici加入和保持關係的表之間的條件在where子句

但你可以使用更明確的方式使用顯式加入

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

@ThorstenKettner正確的..感謝..回答更新添加where子句和chaning的條件 – scaisEdge