《Mysql入門超詳細(xì)mysql left join,right join,inner join用法分析》要點(diǎn):
本文介紹了Mysql入門超詳細(xì)mysql left join,right join,inner join用法分析,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
下面是例子分析
表A記錄如下:
aID????????aNum
1???????????a20050111
2???????????a20050112
3???????????a20050113
4???????????a20050114
5???????????a20050115
表B記錄如下:
bID????????bName
1????????????2006032401
2???????????2006032402
3???????????2006032403
4???????????2006032404
8???????????2006032408
創(chuàng)建這兩個(gè)表SQL語(yǔ)句如下:
CREATE?TABLE??a
aID?int(?1?)?AUTO_INCREMENT?PRIMARY?KEY?,
aNum?char(?20?)
)
CREATE?TABLE?b(
bID?int(?1?)?NOT?NULL?AUTO_INCREMENT?PRIMARY?KEY?,
bName?char(?20?)?
)
INSERT?INTO?a
VALUES?(?1,?'a20050111'?)?,?(?2,?'a20050112'?)?,?(?3,?'a20050113'?)?,?(?4,?'a20050114'?)?,?(?5,?'a20050115'?)?;
INSERT?INTO?b
VALUES?(?1,?'?2006032401'?)?,?(?2,?'2006032402'?)?,?(?3,?'2006032403'?)?,?(?4,?'2006032404'?)?,?(?8,?'2006032408'?)?;
實(shí)驗(yàn)如下:
1.left?join(左聯(lián)接)
sql語(yǔ)句如下:?
SELECT?*?FROM?a
LEFT?JOIN??b?
ON?a.aID?=b.bID
結(jié)果如下:
aID????????aNum???????????????????bID???????????bName
1????????????a20050111?????????1???????????????2006032401
2????????????a20050112?????????2??????????????2006032402
3????????????a20050113?????????3??????????????2006032403
4????????????a20050114?????????4??????????????2006032404
5????????????a20050115?????????NULL???????NULL
(所影響的行數(shù)為?5?行)
結(jié)果說(shuō)明:
????????left?join是以A表的記錄為基礎(chǔ)的,A可以看成左表,B可以看成右表,left?join是以左表為準(zhǔn)的.
換句話說(shuō),左表(A)的記錄將會(huì)全部表示出來(lái),而右表(B)只會(huì)顯示符合搜索條件的記錄(例子中為:?A.aID?=?B.bID).
B表記錄不足的地方均為NULL.
2.right?join(右聯(lián)接)
sql語(yǔ)句如下:?
SELECT??*?FROM?a
RIGHT?JOING?b?
ON?a.aID?=?b.bID
結(jié)果如下:
aID????????aNum???????????????????bID???????????bName
1????????????a20050111?????????1???????????????2006032401
2????????????a20050112?????????2??????????????2006032402
3????????????a20050113?????????3??????????????2006032403
4????????????a20050114?????????4??????????????2006032404
NULL????NULL???????????????????8??????????????2006032408
(所影響的行數(shù)為?5?行)
結(jié)果說(shuō)明:
????????仔細(xì)觀察一下,就會(huì)發(fā)現(xiàn),和left?join的結(jié)果剛好相反,這次是以右表(B)為基礎(chǔ)的,A表不足的地方用NULL填充.
3.inner?join(相等聯(lián)接或內(nèi)聯(lián)接)
sql語(yǔ)句如下:?
SELECT?*?FROM??a
INNER?JOIN??b
ON?a.aID?=b.bID
等同于以下SQL句:
SELECT?*?
FROM?a,b
WHERE?a.aID?=?b.bID
結(jié)果如下:
aID????????aNum???????????????????bID???????????bName
1????????????a20050111?????????1???????????????2006032401
2????????????a20050112?????????2??????????????2006032402
3????????????a20050113?????????3??????????????2006032403
4????????????a20050114?????????4??????????????2006032404
結(jié)果說(shuō)明:
????????很明顯,這里只顯示出了?A.aID?=?B.bID的記錄.這說(shuō)明inner?join并不以誰(shuí)為基礎(chǔ),它只顯示符合條件的記錄.
LEFT?JOIN操作用于在任何的?FROM?子句中,
組合來(lái)源表的記錄.使用?LEFT?JOIN?運(yùn)算來(lái)創(chuàng)建一個(gè)左邊外部聯(lián)接.左邊外部聯(lián)接將包含了從第一個(gè)(左邊)開(kāi)始的兩個(gè)表中的全部記錄,即
使在第二個(gè)(右邊)表中并沒(méi)有相符值的記錄.?
語(yǔ)法:FROM?table1?LEFT?JOIN?table2?ON?table1.field1?compopr?table2.field2?
說(shuō)明:table1,?table2參數(shù)用于指定要將記錄組合的表的名稱.
field1,?field2參數(shù)指定被聯(lián)接的字段的名稱.且這些字段必須有相同的數(shù)據(jù)類型及包含相同類型的數(shù)據(jù),但它們不需要有相同的
名稱.
compopr參數(shù)指定關(guān)系比較運(yùn)算符:"=",?"<",?">",?"<=",?">="?或?"<>".
如果在INNER?JOIN操作中要聯(lián)接包含Memo?數(shù)據(jù)類型或?OLE?Object?數(shù)據(jù)類型數(shù)據(jù)的字段,將會(huì)發(fā)生錯(cuò)誤.
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/5018.html