【由淺入深學MySQL】- MySQL連線查詢詳解

可愛的小鋒發表於2023-05-12

本系列為:MySQL資料庫詳解,為千鋒教育資深Java教學老師獨家創作

致力於為大家講解清晰MySQL資料庫相關知識點,含有豐富的程式碼案例及講解。如果感覺對大家有幫助的話,可以【點個關注】持續追更~

文末有重點總結和福利內容!
技術類問題,也歡迎大家和我們溝通交流!

前言

從今天開始本系列內容就帶各位小夥伴學習資料庫技術。資料庫技術是Java開發中必不可少的一部分知識內容。也是非常重要的技術。本系列教程由淺入深, 全面講解資料庫體系。 非常適合零基礎的小夥伴來學習。


全文大約 【1475】字, 不說廢話,只講可以讓你學到技術、明白原理的純乾貨!本文帶有豐富案例及配圖,讓你更好的理解和運用文中的技術概念,並可以給你帶來具有足夠啟迪的思考......

一. 表關係

各位小夥伴在學習多表連線查詢前,首先我們要介紹下表與表之間的關係。在多張表中,表和表之間是有四種關係的,分別是:一對一、一對多、多對一、多對多四種。

1. 一對一關係

所謂一對一關係就是兩張表中,一張表的一條資料對應另一張表的一條資料。

下圖中學生表和學生詳情表的id起到了一個對應一個的關係,這就是一對一關係。

2. 一對多關係

一對多關係就是一張表的某一條資料對應另一張表的N多條資料,這種關係就是一對多。

例如下圖中teacher講師表中的tid為02的資料這條對應subject科目表中的SpringCloud、Redis、RabbitMQ這三條資料因為他們的teaid欄位的值都是2。

3. 多對一關係

將一對多關係反過來看就是多對一了。

例如下圖中subject科目表中的SpringCloud、Redis、RabbitMQ這三條資料都對應teacher講師表中的這條資料。

4. 多對多關係

多對多關係需要藉助一張關聯表來完成。如下圖,student學生表和score成績表的關係是一對多,subject科目表和score成績表的關係是一對多。那麼student學生表和subject科目表的關係就是N:N多對多的關係。藉助score成績表作為關聯表來完成多對多關係。

二. 表連線查詢

下面帶各位小夥伴一起學習表連線查詢。

表連線查詢一共分為三種分別是:內連線,左外連線,右外連線三種方式。

語法:SELECT 列名 FROM 表1 連線方式 表2 ON 連線條件

1. 內連線查詢(INNER JOIN ON)

敲黑板啦,大家畫重點哦

特點: 內連線是將兩張表有關聯關係的資料顯示出來,沒有關聯關係的不顯示。

#1.查詢每個講師所教的科目(顯式內連線)
select * from teacher a INNER JOIN `subject` b on a.TId=b.teaid;

#2.查詢每個講師所教的科目(隱式內連線)
select * from teacher a , `subject` b where a.TId=b.teaid;

經驗: 在 MySql 中,第二種方式也可以作為內連線查詢,但是不符合 SQL 標準。

而第一種屬於 SQL 標準,與其他關係型資料庫通用。

2. 左外連線(LEFT JOIN ON)

特點: 左外連線是以LEFT JOIN關鍵字左邊為左表,關鍵字右邊為右表。左表的資料全顯示出來,右表的資料有關聯關係的正常顯示,沒有關聯關係的顯示null。

#查詢所有學生和成績
select * from student a LEFT JOIN score b ON a.SId = b.stuId;

注意: 左外連線,是以左表為主表,依次向右匹配,匹配到,返回結果。

匹配不到,則返回 NULL 值填充。

3. 右外連線(RIGHT JOIN ON)

特點: 右外連線是以RIGHT JOIN關鍵字左邊為左表,關鍵字右邊為右表。右表的資料全顯示出來,左表的資料有關聯關係的正常顯示,沒有關聯關係的顯示null。

#查詢所有學生和成績
select * from student a RIGHT JOIN score b ON a.SId = b.stuId;

注意: 右外連線,是以右表為主表,依次向左匹配,匹配到,返回結果。

匹配不到,則返回 NULL 值填充。


三. 結語

最後在這裡對本文核心要點進行總結:

  1. 熟練掌握表與表之間的四種關係:一對一、一對多、多對一、多對多。

  2. 熟練掌握表關聯查詢的三種方式:內連線查詢、左外連線查詢、右外連線查詢,並熟記他們的特點。


以上就是本文的全部內容啦,感覺有幫助的話可以關注我們持續追更!

相關文章