? 本節(jié)介紹數(shù)據(jù)庫(kù)的連接查詢,連接方式主要有:?LEFT JOIN葫隙、RIGHT JOIN栽烂、INNER JOIN、OUTER JOIN / FULL PUTER JOIN恋脚。彼此的組合有7大類腺办,展示圖如下:
原有表:
增加一張表:asett,表數(shù)據(jù)如下
1糟描、left join用法
? ? ? ? eg:select c.cut_id, c._cusname, a.ast_fee, a.ast_phone from customer as c left join asett as a on c.cus_id = a.ast_id;? ? ? ? ? ? ? ? ? ? ?--left join關(guān)鍵字從左表(customer)返回所有的行怀喉,即使右表(asett)中沒(méi)有匹配。如果右表中沒(méi)有匹配船响,則結(jié)果為 NULL躬拢。
? ???????eg:select c.cut_id, c._cusname, a.ast_fee, a.ast_phone from customer as c left join asett as a on c.cus_id = a.ast_id where a.ast_id = null;?? --left join關(guān)鍵字從左表(customer)返回所有的行,過(guò)濾右表(asett)中ast_id為 NULL的情況见间。
2聊闯、right join用法
?? ??????eg:select c.cut_id, c._cusname, a.ast_fee, a.ast_phone from customer as c right join asett as a on c.cus_id = a.ast_id;? ? ? ? ? ? ? ? ?--right join關(guān)鍵字從右表(asett)返回所有的行,即使左表(customer)中沒(méi)有匹配米诉。如果右表中沒(méi)有匹配菱蔬,則結(jié)果為 NULL。
?? ??????eg:select c.cut_id, c._cusname, a.ast_fee, a.ast_phone from customer as c right?join asett as a on c.cus_id = a.ast_id where c.cus_id= null;?--right?join關(guān)鍵字從右表(asett)返回所有的行史侣,過(guò)濾左表(customer)中cus_id為 NULL的情況拴泌。
3、inner join用法
? ???????eg:select c.cut_id, c._cusname, a.ast_fee, a.ast_phone from customer as c inner join asett as a on c.cus_id = a.ast_id;? ? ? ? ? ? ? ? ? ? --inner??join關(guān)鍵字在表中存在至少一個(gè)匹配時(shí)返回行惊橱。如果表customer中的行在表asett中沒(méi)有匹配蚪腐,則不會(huì)返回行。
4李皇、full outer join用法
? ??????eg:select c.cut_id, c._cusname, a.ast_fee, a.ast_phone from customer as c full?outer? join asett as a on c.cus_id = a.ast_id;? ? ? ? ? ?--full outer? join關(guān)鍵字只要左表(customer)和右表(asett)其中一個(gè)表中存在匹配削茁,則返回行.。
?? ??????eg:select c.cut_id, c._cusname, a.ast_fee, a.ast_phone from customer as c?full?outer??join asett as a on c.cus_id = a.ast_id where c.cus_id= null or a.ast_id = null;? ?--full outer? join關(guān)鍵字只要左表(customer)和右表(asett)其中一個(gè)表中存在匹配掉房,則返回行茧跋,同時(shí)過(guò)濾兩個(gè)表cus_id或ast_id為空的情況.。
5卓囚、連接查詢總結(jié)
表A left join 表B?on 條件? ? ? ? ? ? ? ? --取 表A 全部瘾杭,表B 沒(méi)有對(duì)應(yīng)的值為 null。
表A right join 表B?on 條件? ? ? ? ? ? ? --取 表B 全部哪亿,表A 沒(méi)有對(duì)應(yīng)的值為 null粥烁。
表A full outer join表B?on 條件? ? ? ? --取兩個(gè)表并集贤笆,彼此沒(méi)有對(duì)應(yīng)的值為 null。
表A inner join 表B on 條件? ? ? ? ? ? ?--取兩個(gè)表A/B的交集讨阻。
? ?以上Sql語(yǔ)句只是簡(jiǎn)單地展示具體的使用和基本語(yǔ)法芥永,大家在練習(xí)使用連接查詢left join,right join钝吮,inner join埋涧,outer join 時(shí),多關(guān)注查詢出的數(shù)據(jù)情況以及彼此之間的差異奇瘦,靈活和熟練掌握查詢使用方法棘催。