帶你瞭解數據庫中JOIN的用法

前言

歡迎關注公衆號: Coder編程
獲取最新原創技術文章和相關免費學習資料,隨時隨地學習技術知識!

本章主要介紹數據庫中Join的的用法,也是咱們在使用數據庫時很是基礎的一個知識點。本次會介紹數據庫中的inner joinleft joinright join 的用法以及它們之間的區別。 文章若有錯誤還請你們及時指出~html

如下都是採用mysql數據庫

Join

相信你們在學習數據庫的使用時,都有使用過Join,對數據庫中的兩張或兩張以上表進行鏈接操做。
Join 分爲:mysql

  • 內鏈接(inner join)
  • 外鏈接(outer join)

其中外鏈接分爲:git

  • 左外鏈接(left outer join)
  • 右外鏈接(right outer join)
  • 全外鏈接(full outer join)

說明:github

1.其中外鏈接的「OUTER」關鍵字能夠省略不寫。
2.內鏈接用於返回知足鏈接條件的記錄;而外鏈接則是內鏈接的擴展,它不只會知足鏈接條件的記錄,並且還會返回不知足鏈接條件的記錄。

笛卡爾積

在咱們進行多表聯合查詢的時候會出現的一種狀況—— 笛卡爾積現象

咱們如下面兩張表舉例:sql

學生表(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班級 沿用上面的數據表spa

select stu.StudentName,cl.ClassName from Student stu inner join Class cl on stu.StudentClassID=cl.ClassID;

---
查詢結果
inner join

左外鏈接——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。

這裏咱們就不作介紹了。


文末

本章節主要介紹了數據庫中JOIN的用法,以及其餘方面的小知識點。
歡迎關注公衆號: Coder編程
獲取最新原創技術文章和相關免費學習資料,隨時隨地學習技術知識!

在這裏插入圖片描述

推薦閱讀

一篇讓你理解進程與線程的區別與聯繫

經過「表白」的方式,讓咱們快速瞭解網絡協議

一篇帶你讀懂TCP之「滑動窗口」協議

參考文章:

https://www.cnblogs.com/jacks...

http://www.360doc.com/content...

Github我的主頁目錄
Gitee我的主頁目錄

歡迎你們關注並Star~

相關文章
相關標籤/搜索