1. 程式人生 > 資料庫 >一篇文章帶你瞭解資料庫中JOIN的用法

一篇文章帶你瞭解資料庫中JOIN的用法

前言

本章主要介紹資料庫中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之間的區別與聯絡,以及其他方面的小知識點,也是面試過程中會出現的內容點。

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對我們的支援。