日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

深入理解MySQL的外连接、内连接、交叉连接

發布時間:2025/3/21 数据库 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入理解MySQL的外连接、内连接、交叉连接 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、內聯接(典型的聯接運算,使用像 = ?或 <> 之類的比較運算符)。包括相等聯接和自然聯接。 ? ??

內聯接使用比較運算符根據每個表共有的列的值匹配兩個表中的行。例如,檢索 students和courses表中學生標識號相同的所有行。 ??

? ??

2、外聯接。外聯接可以是左向外聯接、右向外聯接或完整外部聯接。 ? ??

在 FROM子句中指定外聯接時,可以由下列幾組關鍵字中的一組指定: ? ??

1)LEFT ?JOIN或LEFT OUTER JOIN ? ??

左向外聯接的結果集包括 ?LEFT OUTER子句中指定的左表的所有行,而不僅僅是聯接列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關聯的結果集行中右表的所有選擇列表列均為空值。 ? ? ??

2)RIGHT ?JOIN 或 RIGHT ?OUTER ?JOIN ? ??

右向外聯接是左向外聯接的反向聯接。將返回右表的所有行。如果右表的某行在左表中沒有匹配行,則將為左表返回空值。 ? ? ??

3)FULL ?JOIN 或 FULL OUTER JOIN

完整外部聯接返回左表和右表中的所有行。當某行在另一個表中沒有匹配行時,則另一個表的選擇列表列包含空值。如果表之間有匹配行,則整個結果集行包含基表的數據值。 ??

?

3、交叉聯接 ??

交叉聯接返回左表中的所有行,左表中的每一行與右表中的所有行組合。交叉聯接也稱作笛卡爾積。 ? ?

FROM 子句中的表或視圖可通過內聯接或完整外部聯接按任意順序指定;但是,用左或右向外聯接指定表或視圖時,表或視圖的順序很重要。有關使用左或右向外聯接排列表的更多信息,請參見使用外聯接。 ? ??

?

例子: ??

-------------------------------------------------

  • a id name b id job parent_id
  • ?
  • 1 3 1 23 1
  • ?
  • 2 李四 2 34 2
  • ?
  • 3 王武 3 34 4
  • ?
  • a.idparent_id 存在關系
  • -------------------------------------------------- ? ?

    ?1) 內連接 ??

  • select a.*,b.* from a inner join b on a.id=b.parent_id
  • ?
  • 結果是
  • ?
  • 1 3 1 23 1
  • ?
  • 2 李四 2 34 2
  • ?

    ? 2)左連接 ??

  • select a.*,b.* from a left join b on a.id=b.parent_id
  • ?
  • 結果是
  • ?
  • 1 3 1 23 1
  • ?
  • 2 李四 2 34 2
  • ?
  • 3 王武 null
  • ?

    ?3) 右連接 ??

  • select a.*,b.* from a right join b on a.id=b.parent_id
  • ?
  • 結果是
  • ?
  • 1 3 1 23 1
  • ?
  • 2 李四 2 34 2
  • ?
  • null 3 34 4
  • ?

    ?4) 完全連接 ??

  • select a.*,b.* from a full join b on a.id=b.parent_id
  • ?
  • 結果是
  • ?
  • 1 3 1 23 1
  • ?
  • 2 李四 2 34 2
  • ?
  • null    3 34 4
  • ?
  • 3 王武 null
  • --------------------------------------------------------------------------------------------

    ?

    一、交叉連接(CROSS JOIN)

    交叉連接(CROSS JOIN):有兩種,顯式的和隱式的,不帶ON子句,返回的是兩表的乘積,也叫笛卡爾積(沒有條件的inner join)。

    例如:下面的語句1和語句2的結果是相同的。

    ?

    語句1:隱式的交叉連接,沒有CROSS JOIN。

  • SELECT O.ID, O.ORDER_NUMBER, C.ID, C.NAME
  • ?
  • FROM ORDERS O , CUSTOMERS C
  • ?
  • WHERE O.ID=1;
  • ?

    語句2:顯式的交叉連接,使用CROSS JOIN。

  • SELECT O.ID,O.ORDER_NUMBER,C.ID,
  • ?
  • C.NAME
  • ?
  • FROM ORDERS O CROSS JOIN CUSTOMERS C
  • ?
  • WHERE O.ID=1;
  • 語句1和語句2的結果是相同的,查詢結果如下:

    ?

    二、內連接(INNER JOIN)

    ?

    內連接(INNER JOIN):有兩種,顯式的和隱式的,返回連接表中符合連接條件和查詢條件的數據行。(所謂的鏈接表就是數據庫在做查詢形成的中間表)。

    例如:下面的語句3和語句4的結果是相同的。

    ?

    語句3:隱式的內連接,沒有INNER JOIN,形成的中間表為兩個表的笛卡爾積。

  • SELECT O.ID,O.ORDER_NUMBER,C.ID,C.NAME
  • ?
  • FROM CUSTOMERS C,ORDERS O
  • ?
  • WHERE C.ID=O.CUSTOMER_ID;
  • ?

    語句4:顯示的內連接,一般稱為內連接,有INNER JOIN,形成的中間表為兩個表經過ON條件過濾后的笛卡爾積。

  • SELECT O.ID,O.ORDER_NUMBER,C.ID,C.NAME
  • ?
  • FROM CUSTOMERS C INNER JOIN ORDERS O ON C.ID=O.CUSTOMER_ID;
  • 語句3和語句4的查詢結果:

    ?

    三、外連接(OUTER JOIN):外連不但返回符合連接和查詢條件的數據行,還返回不符合條件的一些行。外連接分三類:左外連接(LEFT OUTER JOIN)、右外連接(RIGHT OUTER JOIN)和全外連接(FULL OUTER JOIN)。

    三者的共同點是都返回符合連接條件和查詢條件(即:內連接)的數據行。不同點如下:

    左外連接還返回左表中不符合連接條件單符合查詢條件的數據行。

    右外連接還返回右表中不符合連接條件單符合查詢條件的數據行。

    全外連接還返回左表中不符合連接條件單符合查詢條件的數據行,并且還返回右表中不符合連接條件單符合查詢條件的數據行。全外連接實際是上左外連接和右外連接的數學合集(去掉重復),即“全外=左外 UNION 右外”。

    說明:左表就是在“(LEFT OUTER JOIN)”關鍵字左邊的表。右表當然就是右邊的了。在三種類型的外連接中,OUTER 關鍵字是可省略的。

    ?

    下面舉例說明:

    語句5:左外連接(LEFT OUTER JOIN)

  • SELECT O.ID,O.ORDER_NUMBER,O.CUSTOMER_ID,C.ID,C.NAME
  • ?
  • FROM ORDERS O LEFT OUTER JOIN CUSTOMERS C ON C.ID=O.CUSTOMER_ID;
  • ?

    語句6:右外連接(RIGHT OUTER JOIN)

  • SELECT O.ID,O.ORDER_NUMBER,O.CUSTOMER_ID,C.ID,C.NAME
  • ?
  • FROM ORDERS O RIGHT OUTER JOIN CUSTOMERS C ON C.ID=O.CUSTOMER_ID;
  • 注意:WHERE條件放在ON后面查詢的結果是不一樣的。例如:

    ?

    語句7:WHERE條件獨立。

  • SELECT O.ID,O.ORDER_NUMBER,O.CUSTOMER_ID,C.ID,C.NAME
  • ?
  • FROM ORDERS O LEFT OUTER JOIN CUSTOMERS C ON C.ID=O.CUSTOMER_ID
  • ?
  • WHERE O.ORDER_NUMBER<>'MIKE_ORDER001';
  • ?

    語句8:將語句7中的WHERE條件放到ON后面。

  • SELECT O.ID,O.ORDER_NUMBER,O.CUSTOMER_ID,C.ID,C.NAME
  • ?
  • FROM ORDERS O LEFT OUTER JOIN CUSTOMERS C ON C.ID=O.CUSTOMER_ID AND O.ORDER_NUMBER<>'MIKE_ORDER001';
  • ?

    從語句7和語句8查詢的結果來看,顯然是不相同的,語句8顯示的結果是難以理解的。因此,推薦在寫連接查詢的時候,ON后面只跟連接條件,而對中間表限制的條件都寫到WHERE子句中。

    語句9:全外連接(FULL OUTER JOIN)。

  • SELECT O.ID,O.ORDER_NUMBER,O.CUSTOMER_ID,C.ID,C.NAME
  • ?
  • FROM ORDERS O FULL OUTER JOIN CUSTOMERS C ON C.ID=O.CUSTOMER_ID;
  • 注意:MySQL是不支持全外的連接的,這里給出的寫法適合Oracle和DB2。但是可以通過左外和右外求合集來獲取全外連接的查詢結果。下圖是上面SQL在Oracle下執行的結果:

    ?

    語句10:左外和右外的合集,實際上查詢結果和語句9是相同的。

  • SELECT O.ID,O.ORDER_NUMBER,O.CUSTOMER_ID,C.ID,C.NAME
  • ?
  • FROM ORDERS O LEFT OUTER JOIN CUSTOMERS C ON C.ID=O.CUSTOMER_ID
  • ?
  • UNION
  • ?
  • SELECT O.ID,O.ORDER_NUMBER,O.CUSTOMER_ID,C.ID,C.NAME
  • ?
  • FROM ORDERS O RIGHT OUTER JOIN CUSTOMERS C ON C.ID=O.CUSTOMER_ID;
  • -- from: http://www.shuchengxian.com/Article/info/id/168.html

    總結

    以上是生活随笔為你收集整理的深入理解MySQL的外连接、内连接、交叉连接的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 日本乱码一区二区 | 麻豆91精品91久久久 | 一节黄色片 | 免费一级suv好看的国产网站 | 国产污视频在线播放 | 美女的诞生免费观看在线高清 | 色多多视频污 | 亚洲视频在线视频 | 综合久久伊人 | 在线免费观看的av | 裸体毛片 | 亚洲欧美乱日韩乱国产 | 男生和女生差差视频 | 一级免费观看视频 | 冈本视频在线观看 | 天堂8在线天堂资源bt | www.色网 | 成人在线视频一区 | 国产午夜视频 | 第一福利丝瓜av导航 | 亚洲天天影视 | 中文字幕在线视频免费观看 | 色视频免费看 | 日韩不卡在线观看 | 日韩欧美视频二区 | 夜夜操狠狠干 | 亚洲综合在线播放 | 蜜桃视频成人在线观看 | 影音先锋丝袜美腿 | 校园春色综合网 | 夜夜cao| 美女网站免费视频 | 免费一级特黄特色大片 | 特级丰满少妇一级aaa爱毛片 | 美女爆乳18禁www久久久久久 | 黄色小说在线观看视频 | 亚洲青涩 | 三级成人| 靠逼在线观看 | 亚洲av男人的天堂在线观看 | 日日操日日射 | 精品在线一区二区三区 | 免费啪啪小视频 | 天天综合永久 | 欧洲精品免费一区二区三区 | 日本一区二区不卡在线观看 | 中国女人特级毛片 | 国产视频污在线观看 | 一区二区三区四区五区在线视频 | 欧美激情国产精品免费 | 国产一二三精品 | 成人亚洲网站 | 巨大乳の揉んで乳榨り奶水 | 欧美精品在线免费 | 黄色一级大片免费版 | 在线观看日韩av | 麻豆av在线| 秘密基地在线观看完整版免费 | 深夜免费福利 | 亚洲午夜在线视频 | 性爱动漫| 西西午夜影院 | 手机在线看片日韩 | 黄色一级片在线看 | 久射网 | 天堂在线视频网站 | 成熟女人毛片www免费版在线 | 特黄视频在线观看 | 亚洲男性天堂 | 大香依人 | 亚洲毛片在线播放 | 男人天堂资源网 | 亚洲性图av| 女人18毛片一区二区三区 | 99热这里 | 免费观看黄色小视频 | 白浆在线| 欧美日韩视频无码一区二区三 | 国产精品高清在线 | 欧美怡红院 | 久久婷婷综合色丁香五月 | 99re在线| 女女h百合无遮羞羞漫画软件 | 黄色性情网站 | 色妞综合网 | 狠狠爱综合网 | 欧美群妇大交群 | 欧美日韩一区二区三区免费 | 成年人激情网 | 国产精品专区在线观看 | 在线观看高h | 亚洲是色 | 别揉我奶头啊嗯一区二区 | 高清av免费观看 | www精品一区二区三区 | 国内自拍真实伦在线观看 | www,超碰 | 欧美日韩一区二区三区在线电影 | 黄色一级视频 |