91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL系列之如何理解多表連接查詢

發布時間:2021-10-26 14:32:34 來源:億速云 閱讀:252 作者:iii 欄目:開發技術

本篇內容主要講解“MySQL系列之如何理解多表連接查詢”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“MySQL系列之如何理解多表連接查詢”吧!

目錄
  • 1.笛卡爾積現象

  • 2.連接查詢知識點概括

    • 1)什么是連接查詢?

    • 2)連接查詢的分類

  • 3.內連接講解

    • 1)等值連接:最大特點是,連接條件為等量關系。

    • 2)sql92語法和sql99語法的區別。

    • 3)非等值連接:最大特點是,連接條件為非等量關系。

    • 4)自連接:最大特點是,一張表看作兩張表。

  • 4.外連接講解

    • 1)什么是外連接,和內連接有什么區別?

    • 2)外連接的分類

1.笛卡爾積現象

MySQL系列之如何理解多表連接查詢

結果如下:

MySQL系列之如何理解多表連接查詢

分析如下:
??上述結果肯定是不對的,左表中每一個人都有4個男朋友,仔細觀察這4條記錄,正好是左表每一條記錄和右表一一匹配后的結果。
??笛卡爾積現象產生的原因:兩張表沒有有效的連接條件。既然你沒有連接條件,本表中的第一行肯定是能和另外表中的所有行進行一一匹配,同理,本表中的第二行肯定是能和另外表中的所有行進行一一匹配,以此類推,本表中的最后一行m也可以和另外表中的所有行進行一一匹配。若另外一張表有n行,那么最后顯示的行數,肯定就是m*n行了。
??如果不想產生笛卡爾積現象,就需要添加有效的表連接條件。拿上述例子來說,左表boyfriend_id只有和右邊id相等時,才代表她們的男朋友。

添加表連接條件后:

MySQL系列之如何理解多表連接查詢

可以看到,笛卡爾積最終產生的記錄數是兩張表中各自數據的乘積,當沒有使用連接查詢的時候,如果兩張表中數據特別大的時候,將會撐爆你的內存,那是很可怕的,因此我們要學會使用連接查詢。

2.連接查詢知識點概括

1)什么是連接查詢?

在實際開發中,大多數的情況下都不是從單表中查詢數據,一般都是多張表聯合查詢取出最終的結果。也就是說:實際業務中也是一個業務由多個表構成,不同的信息存儲在不同的表中,如果我們想要獲取的信息來自多張表,此時你就需要使用連接查詢。

2)連接查詢的分類

① 按年代分類

MySQL中不支持全連接(full join),一般使用的是union關鍵字完成全連接的功能。MySQL中交叉連接是cross join,用的較少,我們也不用關心。

sq192標準:僅支持內連接;sq199標準【推薦】:僅僅支持內連接+外連接(僅支持左外和右外)+交叉連接; ② 按功能分類 內連接:等值連接、非等值連接、自連接;外連接:左外連接、右外連接、全外連接(full join);

3.內連接講解

原始數據如下:

MySQL系列之如何理解多表連接查詢

1)等值連接:最大特點是,連接條件為等量關系。

習題:查詢員工名和對應的部門名;

sql92語法如下:(太老了,一般不用,看到了知道什么意思就行。)

MySQL系列之如何理解多表連接查詢

sql99語法:(常用的)

MySQL系列之如何理解多表連接查詢

2)sql92語法和sql99語法的區別。

 -- sql92語法
 select ename,dname
 from emp,dept
 where emp.deptno=dept.deptno;
 
-- sql99語法
select ename,dname
from emp (inner)join dept
on emp.deptno=dept.deptno;

-- sql92語法和sql99語法的區別
1)逗號(",")換成(inner)join;
2)where換成on;
注:inner可以省略,寫上inner可以增加代碼的可讀性。

--sql99語法的優勢
表連接和后面的where條件篩選,分離開來。
對于sql92語法來說,表連接用的是where,where篩選用的也是where,混淆在一起不清不楚。

3)非等值連接:最大特點是,連接條件為非等量關系。

MySQL系列之如何理解多表連接查詢

習題:找出每個員工的工資等級,要求顯示員工名、工資、工資等級。

MySQL系列之如何理解多表連接查詢

4)自連接:最大特點是,一張表看作兩張表。

什么叫做一張表看作兩張表呢?也就是說,自連接是同一張表之間的連接,連接條件就是這張表中的不同字段。

人和機器的最大不同,就在于人有判斷能力,你知道區分使用一張表的不同字段,但是機器不知道,都是同一張表,字段名也都是相同的。那么,機器怎么才能區分哪個表是哪個表(對于同一張表來說)。

這就需要起別名了。對于同一張表來說,我給它取兩個名字,一個是A,一個是B,這樣機器就能很好的區分了。當取A表中的字段,就是"A.字段",取B表中的字段,就是"B.字段"。

習題:找出每個員工的上級領導,要求顯示員工名和對應的領導名。

MySQL系列之如何理解多表連接查詢

4.外連接講解

原始數據如下:

MySQL系列之如何理解多表連接查詢

1)什么是外連接,和內連接有什么區別?

① 內連接

假設A和B表進行連接,使用內連接的話,凡是A表和B表能夠匹配上的記錄,就會查詢出來,這就是內連接。AB兩張表沒有主副之分,兩張表是平等的。

② 外連接

假設A和B表進行連接,使用外連接的話,AB兩張表中有一張表是主表,一張表是副表,主要查詢主表中的數據,捎帶著查詢副表。當副表中的數據沒有和主表中的數據匹配上,副表自動模擬出NULL與之匹配。

外連接最重要的特點是:主表的數據,無條件的全部查詢出來。

2)外連接的分類

左連接有右連接的寫法,右連接也會有對應的左連接的寫法。因此,我們在學習MySQL的過程中,沒有必要既學習左連接又學習右連接。

左外連接(左連接):表示左邊的這張表是主表。右外連接(右連接):表示右邊的這張表是主表。 3)案例分析

MySQL系列之如何理解多表連接查詢

習題:找出哪個部門沒有員工?

MySQL系列之如何理解多表連接查詢

到此,相信大家對“MySQL系列之如何理解多表連接查詢”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桑日县| 南皮县| 丘北县| 乐至县| 上林县| 华安县| 永川市| 通城县| 万载县| 宁强县| 南平市| 平武县| 霍城县| 永新县| 从江县| 赞皇县| 宁津县| 且末县| 甘孜| 枞阳县| 长寿区| 庆阳市| 深泽县| 霍山县| 绩溪县| 舟山市| 兰西县| 漳州市| 南京市| 北安市| 克什克腾旗| 福安市| 太保市| 玉溪市| 武义县| 武强县| 旺苍县| 阳城县| 会理县| 西丰县| 措美县|