導讀:網際網路發展給工程師們留下了很多寶貴的經驗,同時,工具和使用的水平是階段性進階的。前面我們講述了資料分析必備——SQL入門基礎知識,今天我們來進行SQL的進階學習,學習表與表之間的操作——join的用法。
這裡考慮到一個問題:
這個語法的使用場景在哪呢?
什麼時候會用到?
結合業務場景,通常會發現我們都不太可能把所有資料都存在一張資料表中,都是拆分成了各個小的業務表,例如員工基本資訊、銷售資訊、商品字典等。但我們需要了解具體人員的銷售情況和商品的留存情況時,就需要關聯我們的子業務表去做查詢,這時候關聯查詢就顯得尤為重要。
這裡引入一個語法join,它在SQL中的定義是:根據多個表中的列欄位資料,從這些表中查詢資料,例如表A和表B這2張表有聯絡,就可以透過聯絡把2張表的內容都查出來,達到我們查詢資料的目的。
1.Join(inner join)
稱為內連線,join是inner join的簡寫,用法是(inner)join...on...,表達的意思是當滿足條件時聯合表進行查詢,返回符合條件的行數資料,任何一方缺失資料都不顯示。
例項,在emp和edu的表中,需要連線2張表的資料做查詢
SQL:select * from emp join edu on emp.`name` = edu.`name`;
執行結果:前一部分的表字段為emp的,後一部分的表字段為edu的,且查出來的資料是7條,emp中有9條資料,edu中有8條資料,為什麼呢?
因為join的定義是返回符合條件的資料,也就是這2張表中只有7條資料可以用name這個欄位匹配上,只顯示有交集的部分。
2.LEFT JOIN
稱為左連線,left join的用法和join一致,left join的結果展示為A表的全部,B表沒有值則用null表示。
例項:emp表左連線edu表
SQL:select * from emp left join edu on emp.`name` = edu.`name`;
執行結果:
結果展示的2條資料存在空的情況,就是emp表有資料,edu表沒有資料,匹配不上導致的,所以在實際應用中需要結合資料使用目的進行連線選擇。