1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        SQL的各種連接(cross join、inner join、full join)的用法理解

        共 2117字,需瀏覽 5分鐘

         ·

        2021-06-12 02:17

        點擊上方藍色字體,選擇“標星公眾號”

        優(yōu)質(zhì)文章,第一時間送達

          作者 |  Jepson6669

        來源 |  urlify.cn/3mQfmi

        SQL中的連接可以分為內(nèi)連接,外連接,以及交叉連接 。

        1. 交叉連接CROSS JOIN

        如果不帶WHERE條件子句,它將會返回被連接的兩個表的笛卡爾積,返回結果的行數(shù)等于兩個表行數(shù)的乘積;

        舉例,下列A、B、C 執(zhí)行結果相同,但是效率不一樣:

        A:SELECT * FROM table1 CROSS JOIN table2

        B:SELECT * FROM table1,table2


        C:select * from table1 a inner join table2 b

        A:select a.*,b.* from table1 a,table2 b where a.id=b.id

        B:select * from table1 a cross join table2 b where a.id=b.id (注:cross join后加條件只能用where,不能用on)

        C:select * from table1 a inner join table2 b on a.id=b.id

        一般不建議使用方法A和B,因為如果有WHERE子句的話,往往會先生成兩個表行數(shù)乘積的行的數(shù)據(jù)表然后才根據(jù)WHERE條件從中選擇。 

        因此,如果兩個需要求交際的表太大,將會非常非常慢,不建議使用。

        2. 內(nèi)連接INNER JOIN

        兩邊表同時符合條件的組合

        如果僅僅使用

        SELECT * FROM table1 INNER JOIN table2

        內(nèi)連接如果沒有指定連接條件的話,和笛卡爾積的交叉連接結果一樣,但是不同于笛卡爾積的地方是,沒有笛卡爾積那么復雜要先生成行數(shù)乘積的數(shù)據(jù)表,內(nèi)連接的效率要高于笛卡爾積的交叉連接。

        但是通常情況下,使用INNER JOIN需要指定連接條件。

         

        ***************關于等值連接和自然連接

        等值連接(=號應用于連接條件, 不會去除重復的列)

        自然連接(會去除重復的列)

        數(shù)據(jù)庫的連接運算都是自然連接,因為不允許有重復的行(元組)存在。

        例如:

        SELECT * FROM table1 AS a INNER JOIN table2 AS b on a.column=b.column

        3. 外連接OUTER JOIN

        指定條件的內(nèi)連接,僅僅返回符合連接條件的條目。

        外連接則不同,返回的結果不僅包含符合連接條件的行,而且包括左表(左外連接時), 右表(右連接時)或者兩邊連接(全外連接時)的所有數(shù)據(jù)行。

        1)左外連接LEFT [OUTER] JOIN

        顯示符合條件的數(shù)據(jù)行,同時顯示左邊數(shù)據(jù)表不符合條件的數(shù)據(jù)行,右邊沒有對應的條目顯示NULL

        例如

        SELECT * FROM table1 AS a LEFT [OUTER] JOIN ON a.column=b.column

        2)右外連接RIGHT [OUTER] JOIN

        顯示符合條件的數(shù)據(jù)行,同時顯示右邊數(shù)據(jù)表不符合條件的數(shù)據(jù)行,左邊沒有對應的條目顯示NULL

        例如

        SELECT * FROM table1 AS a RIGHT [OUTER] JOIN ON a.column=b.column

        3)全外連接full [outer] join

        顯示符合條件的數(shù)據(jù)行,同時顯示左右不符合條件的數(shù)據(jù)行,相應的左右兩邊顯示NULL,即顯示左連接、右連接和內(nèi)連接的并集







        瀏覽 46
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            人妻奴契约竹内纱里奈 | 亚洲深夜视频 | 黄色小说及视频 | 免费看A片秘 免费 | 豆花视频官网 | 久久久精品国产免费观看同学 | 成人欧美一区二区三区无码电影 | 日韩欧美成人电影 | 女优av电影 | 欲求不满小早川怜子 |