《Mysql學(xué)習(xí)SQL 四種連接-左外連接、右外連接、內(nèi)連接、全連接詳解》要點(diǎn):
本文介紹了Mysql學(xué)習(xí)SQL 四種連接-左外連接、右外連接、內(nèi)連接、全連接詳解,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
MYSQL應(yīng)用SQL的四種連接-左外連接、右外連接、內(nèi)連接、全連接
MYSQL應(yīng)用今天在看一個(gè)遺留系統(tǒng)的數(shù)據(jù)表的時(shí)候發(fā)現(xiàn)平時(shí)查找的視圖是FULL OUT JOIN的,導(dǎo)致平時(shí)的數(shù)據(jù)記錄要進(jìn)行一些限制性處理,其實(shí)也可以設(shè)置視圖各表為右外連接并在視圖上設(shè)置各列的排序和篩選條件就可以達(dá)到效果.?
MYSQL應(yīng)用聯(lián)接條件可在FROM或WHERE子句中指定,建議在FROM子句中指定聯(lián)接條件.WHERE和HAVING子句也可以包含搜索條件,以進(jìn)一步篩選聯(lián)接條件所選的行.???
MYSQL應(yīng)用聯(lián)接可分為以下幾類:???
MYSQL應(yīng)用1、內(nèi)聯(lián)接(典型的聯(lián)接運(yùn)算,使用像 =? 或 <> 之類的比較運(yùn)算符).包括相等聯(lián)接和自然聯(lián)接.????
內(nèi)聯(lián)接使用比較運(yùn)算符根據(jù)每個(gè)表共有的列的值匹配兩個(gè)表中的行.例如,檢索 students和courses表中學(xué)生標(biāo)識(shí)號(hào)相同的所有行.???
MYSQL應(yīng)用2、外聯(lián)接.外聯(lián)接可以是左向外聯(lián)接、右向外聯(lián)接或完整外部聯(lián)接.????
在 FROM子句中指定外聯(lián)接時(shí),可以由下列幾組關(guān)鍵字中的一組指定:????
MYSQL應(yīng)用1)LEFT? JOIN或LEFT OUTER JOIN????
MYSQL應(yīng)用左向外聯(lián)接的結(jié)果集包括? LEFT OUTER子句中指定的左表的所有行,而不僅僅是聯(lián)接列所匹配的行.如果左表的某行在右表中沒有匹配行,則在相關(guān)聯(lián)的結(jié)果集行中右表的所有選擇列表列均為空值.??????
MYSQL應(yīng)用2)RIGHT? JOIN 或 RIGHT? OUTER? JOIN????
MYSQL應(yīng)用右向外聯(lián)接是左向外聯(lián)接的反向聯(lián)接.將返回右表的所有行.如果右表的某行在左表中沒有匹配行,則將為左表返回空值.??????
MYSQL應(yīng)用3)FULL? JOIN 或 FULL OUTER JOIN
MYSQL應(yīng)用完整外部聯(lián)接返回左表和右表中的所有行.當(dāng)某行在另一個(gè)表中沒有匹配行時(shí),則另一個(gè)表的選擇列表列包含空值.如果表之間有匹配行,則整個(gè)結(jié)果集行包含基表的數(shù)據(jù)值.?????
MYSQL應(yīng)用3、交叉聯(lián)接?
MYSQL應(yīng)用? 交叉聯(lián)接返回左表中的所有行,左表中的每一行與右表中的所有行組合.交叉聯(lián)接也稱作笛卡爾積.???
MYSQL應(yīng)用FROM 子句中的表或視圖可通過內(nèi)聯(lián)接或完整外部聯(lián)接按任意順序指定;但是,用左或右向外聯(lián)接指定表或視圖時(shí),表或視圖的順序很重要.有關(guān)使用左或右向外聯(lián)接排列表的更多信息,請(qǐng)參見使用外聯(lián)接.???????
MYSQL應(yīng)用例子:??
MYSQL應(yīng)用-------------------------------------------------
? a表???? id?? name???? b表???? id?? job?? parent_id??
????????????? 1?? 張3?????????????????? 1???? 23???? 1??
????????????? 2?? 李四???????????????? 2???? 34???? 2??
????????????? 3?? 王武???????????????? 3???? 34???? 4??????
? a.id同parent_id?? 存在關(guān)系??
MYSQL應(yīng)用--------------------------------------------------????
MYSQL應(yīng)用?1) 內(nèi)連接???
MYSQL應(yīng)用? select?? a.*,b.*?? from?? a?? inner?? join?? b???? on?? a.id=b.parent_id???????
MYSQL應(yīng)用? 結(jié)果是????
? 1?? 張3?????????????????? 1???? 23???? 1??
? 2?? 李四????????????????? 2???? 34???? 2???
????
MYSQL應(yīng)用? 2)左連接???
MYSQL應(yīng)用? select?? a.*,b.*?? from?? a?? left?? join?? b???? on?? a.id=b.parent_id???????
MYSQL應(yīng)用? 結(jié)果是????
? 1?? 張3?????????????????? 1???? 23???? 1??
? 2?? 李四????????????????? 2???? 34???? 2??
? 3?? 王武????????????????? null??
MYSQL應(yīng)用??3) 右連接???
MYSQL應(yīng)用? select?? a.*,b.*?? from?? a?? right?? join?? b???? on?? a.id=b.parent_id???????
MYSQL應(yīng)用? 結(jié)果是?????
MYSQL應(yīng)用? 1?? 張3?????????????????? 1???? 23???? 1??
? 2?? 李四????????????????? 2???? 34???? 2??
? null?????????????????????? 3???? 34???? 4???????
MYSQL應(yīng)用?4) 完全連接???
MYSQL應(yīng)用? select?? a.*,b.*?? from?? a?? full?? join?? b???? on?? a.id=b.parent_id??
MYSQL應(yīng)用? 結(jié)果是?????
MYSQL應(yīng)用? 1?? 張3????????????????? 1???? 23???? 1??
? 2?? 李四???????????????? 2???? 34???? 2??
? null?????????????? ? 3???? 34???? 4??
? 3?? 王武???????????????? null
MYSQL應(yīng)用感謝閱讀,希望能贊助到大家,謝謝大家對(duì)本站的支持!
歡迎參與《Mysql學(xué)習(xí)SQL 四種連接-左外連接、右外連接、內(nèi)連接、全連接詳解》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/12304.html