數據庫join的用法
數據庫join的用法的用法你知道嗎?下面小編就跟你們詳細介紹下數據庫join的用法的用法,希望對你們有用。
數據庫join的用法的用法如下:
SELECT a.symbol , a.sname , b.tdate , b.tclose
FROM a , b
WHERE a.symbol = b.symbol
上面的代碼用WHERE關鍵詞指明了兩個表之間的聯合關系。
如果改寫為JOIN關鍵字,那么代碼如下:
SELECT a.symbol , a.sname , b.tdate , b.tclose
FROM securitycode a
JOIN dayquote b
ON a.symbol = b.symbol
現在對JOIN的用法應該有個大概了解了,JOIN的具體用法和語法介紹如下:
先假設有表a、b如下:
表a 表b
---------------------- --------------------------------
| symbol | sname | | symbol | tdate | tclose |
-------------------------- -------------------------------------
| A | B | | A | C | D |
| G | H | | X | E | F |
-------------------------- ------------------------------------
內聯接:
SELECT a.symbol , a.sname , b.tdate , b.tclose
FROM a
INNER JOIN b
ON a.symbol = b.symbol
其中INNER關鍵字可以省略。
此語句只有在表a和b中都有匹配行時,才返回。
所以本例中返回結果為:
symbol sname tdate tclose
A B C D --這一行即滿足a.symbol = b.symbol
外聯接:
SELECT a.symbol , a.sname , b.tdate , b.tclose
FROM a
RIGHT | LEFT | FULL OUTER JOIN b
ON a.symbol = b.symbol
其中OUTER關鍵詞可以省略。
RIGHT JOIN:當右表格(即表b)中的行在左表中沒有匹配行時,也返回。返回的記錄中,選擇的左表的列的內容為NULL。
所以本例中返回結果為:
symbol sname tdate tclose
A B C D --這一行即滿足a.symbol = b.symbol
null null E F --這一行里,對應的b.symbol沒有在表a中找到相同的a.symbol
LEFT JOIN:當左表格(即表a)中的行在右表中沒有匹配行時,也返回。返回的記錄中,選擇的右表的列的內容為NULL。
所以本例中返回結果為:
symbol sname tdate tclose
A B C D --這一行即滿足a.symbol = b.symbol
G H null null --這一行里,對應的a.symbol沒有在表b中找到相同的b.symbol
FULL JOIN:可以把它理解為LFET和RIGHT的集合,某表中某一行在另一表中無匹配行,則相應列的內容為NULL。
所以本例中返回結果為:
symbol sname tdate tclose
A B C D --這一行即滿足a.symbol = b.symbol
G H null null --這一行里,對應的a.symbol沒有在表b中找到相同的b.symbol
null null E F --這一行里,對應的b.symbol沒有在表a中找到相同的a.symbol
A B C D --這一行即滿足a.symbol = b.symbol
交叉聯接:
SELECT a.*,b.*
FROM a
CROSS JOIN b
交叉聯接返回左表中的所有行,左表中的每一行與右表中的所有行組合。交叉聯接也稱作笛卡爾積。
也就是相當于兩個表中的所有行進行排列組合。
若表a有X行,表b有Y行,則將返回XY行記錄。
所以本例中返回結果為:
symbol sname tdate tclose
A B C D
G H C D
A B E F
G H E F