MySQL由淺入深掌握連接查詢

 更新時間:2022年03月09日 16:40:52   作者:桃花鍵神  
連接查詢是關系數據庫中最主要的查詢,主要包括內連接、外連接和交叉連接等。通過連接運算符可以實現多個表查詢。連接是關系數據庫模型的主要特點,也是它區別于其它類型數據庫管理系統的一個標志

數據庫版本:mysql8。0.27

內連接

  • 內連接INNERJOIN是最常用的連接操作。從數學的角度講就是求兩個表的交集,從笛卡爾積的角度講就是從笛卡爾積中挑出ON子句條件成立的記錄。
  • 在我看來內連接和等值連接差不多,自然連接是內連接中的一個特殊連接

自然連接和等值連接的區別

什么是自然連接?

  • 自然連接(Naturaljoin)是一種特殊的等值連接,它要求兩個關系中進行比較的分量必須是相同的屬性組,并且在結果中把重復的屬性列去掉。

什么是等值連接?

  • 等值連接是關系運算-連接運算的一種常用的連接方式。是條件連接(或稱θ連接)在連接運算符為“=”號時,即θ=0時的一個特例

舉例分析:

表aaa

表bbb:

查詢表aaa和表bbb中屬性C B D相等的數據

等值連接查詢:

SElect*from aaa,bbb WHERE aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E 

結果:

自然連接查詢:

-- 自然連接用關鍵字 natural join
SELECT*from aaa natural join bbb;

結果:

由上面兩個結果可以看出,等值連接就是從兩個表數據的交集中取指定值相等的數據。而自然連接就是取兩個表中相同屬性,并且值相等的數據,而且消除了相同屬性列。

內連接的實現方式

第一種:where

SElect*from aaa,bbb WHERE aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E 

第二種:inner join

select*from aaa inner join bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E;

第三種:join

select*from aaa join bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E;

第四種:STRAIGHT_JOIN

select*from aaa STRAIGHT_JOIN bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E;

后面三種效果一樣,第三種可以理解為第二種的縮寫。第四種和第二種主要區別是插入方式不同,第四種性能略低

外連接

  • 外連接分為三種:左外連接,右外連接,全外連接。對應SQL:LEFT/RIGHT/FULL OUTER JOIN。

左連接

什么是左連接?

左連接LEFT JOIN的含義就是求兩個表A表和B表的交集外加左表剩下的數據。依舊從笛卡爾積的角度講,就是先從笛卡爾積中挑出ON子句條件成立的記錄,然后加上左表A表中剩余的記錄

代碼實現:

select*from aaa left join bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E;

結果:

右連接

什么是左連接?

  • 同理右連接RIGHT JOIN就是求兩個表A和B表的交集外加右表B剩下的數據。再次從笛卡爾積的角度描述,右連接就是從笛卡爾積中挑出ON子句條件成立的記錄,然后加上右表中剩余的記錄

代碼實現:

select*from aaa right join bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E;

結果:

全連接

全外連接就是求兩個表A和B集合的并集。從笛卡爾積的角度講就是從笛卡爾積中挑出ON子句條件成立的記錄,然后加上左表中剩余的記錄,最后加上右表中剩余的記錄。另外MySQL不支持OUTER JOIN,但是我們可以對左連接和右連接的結果做 UNION 操作來實現。

代碼實現:

select*from aaa left join bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E
union 
select*from aaa right join bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E

結果:

到此這篇關于MySQL由淺入深掌握連接查詢的文章就介紹到這了,更多相關MySQL 連接查詢內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • MySQL數據庫中的安全設置方案

    MySQL數據庫中的安全設置方案

    MySQL 是一個真正的多用戶、多線程SQL數據庫服務器,它是一個客戶機/服務器結構的實現。MySQL是現在流行的關系數據庫中其中的一種,相比其它的數據庫管理系統(DBMS)來說,MySQL具有小巧、功能齊全、查詢迅捷等優點。MySQL 主要目標是快速、健壯和易用。
    2015-04-04
  • Mysql 安裝失敗的快速解決方法

    Mysql 安裝失敗的快速解決方法

    這篇文章給大家介紹了mysql 安裝失敗的快速解決方法包括windows下mysql安裝失敗的一個解決案例,本文給大家介紹的非常詳細,具有參考借鑒價值,感興趣的朋友一起看下吧
    2016-10-10
  • MYSQL開發性能研究之批量插入數據的優化方法

    MYSQL開發性能研究之批量插入數據的優化方法

    在網上也看到過另外的幾種方法,比如說預處理SQL,比如說批量提交。那么這些方法的性能到底如何?本文就會對這些方法做一個比較
    2017-07-07
  • 如何將mysql存儲位置遷移到一塊新的磁盤上

    如何將mysql存儲位置遷移到一塊新的磁盤上

    這篇文章主要介紹了如何將mysql存儲位置遷移到一塊新的磁盤上,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • node連接mysql數據庫遇到的問題和解決方案

    node連接mysql數據庫遇到的問題和解決方案

    這篇文章主要介紹了node連接mysql數據庫遇到的問題和解決方案,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • 關于Mysql自增id的這些你可能還不知道

    關于Mysql自增id的這些你可能還不知道

    這篇文章主要給大家介紹了關于Mysql自增id的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Mysql具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-05-05
  • Mysql的游標的定義使用及關閉深入分析

    Mysql的游標的定義使用及關閉深入分析

    于游標的用法Mysql現在提供的還很特別,雖然使用起來沒有PL/SQL那么順手,不過使用上大致上還是一樣,本文將詳細介紹一下,需要了解的朋友可以參考下
    2012-12-12
  • MySQL 事務autocommit自動提交操作

    MySQL 事務autocommit自動提交操作

    這篇文章主要介紹了MySQL 事務autocommit自動提交操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • MYSQL METADATA LOCK(MDL LOCK) 理論及加鎖類型測試

    MYSQL METADATA LOCK(MDL LOCK) 理論及加鎖類型測試

    這篇文章主要介紹了MYSQL METADATA LOCK(MDL LOCK)的內容,有理論知識和加鎖類型測試的以下代碼,感興趣的朋友請參考下午文
    2021-09-09
  • MySQL root密碼忘記后更優雅的解決方法

    MySQL root密碼忘記后更優雅的解決方法

    這篇文章主要給大家介紹了關于MySQL root密碼忘記后更優雅的解決方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用mysql具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-07-07

最新評論

免费人成视频在线观看