前言 歡迎關註公眾號: Coder編程 獲取最新原創技術文章和相關免費學習資料,隨時隨地學習技術知識! 本章主要介紹資料庫中Join的的用法,也是我們在使用資料庫時非常基礎的一個知識點。本次會介紹資料庫中的 、`left join right join` 的用法以及它們之間的區別。 文章如有錯誤還請 ...
前言
歡迎關註公眾號:Coder編程
獲取最新原創技術文章和相關免費學習資料,隨時隨地學習技術知識!
本章主要介紹資料庫中Join的的用法,也是我們在使用資料庫時非常基礎的一個知識點。本次會介紹資料庫中的inner join
、left join
、right join
的用法以及它們之間的區別。 文章如有錯誤還請大家及時指出~
以下都是採用mysql資料庫
Join
相信大家在學習資料庫的使用時,都有使用過Join,對資料庫中的兩張或兩張以上表進行連接操作。
Join 分為:
- 內連接(inner join)
- 外連接(outer join)
其中外連接分為:
- 左外連接(left outer join)
- 右外連接(right outer join)
- 全外連接(full outer join)
說明:
1.其中外連接的“OUTER”關鍵字可以省略不寫。
2.內連接用於返回滿足連接條件的記錄;而外連接則是內連接的擴展,它不僅會滿足連接條件的記錄,而且還會返回不滿足連接條件的記錄。
笛卡爾積
在我們進行多表聯合查詢的時候會出現的一種情況——笛卡爾積現象
我們以下麵兩張表舉例:
學生表(Student)
|ID | StudentName | StudentClassID|
|---|---|---|
|1 | 小明| 1|
|2 | 小紅| 2|
|3 | 小蘭 | 3|
|4 | 小呂 | 2|
|5 | 小梓 | 1|
班級表(Class)
|ClassID| ClassName|
|---|---|
|1 | 軟體一班|
|2 | 軟體二班|
|3 | 軟體三班|
當我們進行查詢操作的時候:
select * from Student,Class;
就會出現上面的情況,也就是笛卡爾現象,表Student中有5條記錄,表Class中有3條記錄,那麼對於表Student而言有5種選擇,對於表Class來說有3種選擇。所以一共有 5 * 3 = 15種選擇了,也就是笛卡爾積。
內連接——inner join
內連接查詢返回滿足條件的所有記錄,預設情況下沒有指定任何連接則為內連接。
例如:查詢xx學生在xx班級 沿用上面的數據表
select stu.StudentName,cl.ClassName from Student stu
inner join
Class cl on stu.StudentClassID=cl.ClassID;
查詢結果
左外連接——left join
左外連接查詢不僅返回滿足條件的所有記錄,而且還會返回不滿足連接條件的連接操作符左邊表的其他行。
我們在原Student 表中新增學生:小美
例如: 查詢xx學生在xx班級 沿用上面的數據表
select stu.StudentName,cl.ClassName from Student stu
left join
Class cl on stu.StudentClassID=cl.ClassID;
查詢結果
右外連接——right join
右外連接查詢不僅返回滿足條件的所有記錄,而且還會返回不滿足連接條件的連接操作符右邊表的其他行。
我們在原Class表中新增班級:軟體四班
例如: 查詢xx學生在xx班級 沿用上面的數據表
select stu.StudentName,cl.ClassName from Student stu right join Class cl on stu.StudentClassID=cl.ClassID;
查詢結果
全連接——full join
全連接查詢不僅返回滿足條件的所有記錄,而且還會返回不滿足連接條件的其他行。
註:mysql預設不支持full join。
這裡我們就不做介紹了。
文末
本章節主要介紹了Iterable與Iterator之間的區別與聯繫,以及其他方面的小知識點,也是面試過程中會出現的內容點。
歡迎關註公眾號:Coder編程
獲取最新原創技術文章和相關免費學習資料,隨時隨地學習技術知識!
推薦閱讀
參考文章:
https://www.cnblogs.com/jackson-zhangjiang/p/7819634.html
http://www.360doc.com/content/14/1229/21/7635_436727229.shtml
歡迎大家關註並Star~