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