<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 2117字,需瀏覽 5分鐘

           ·

          2021-06-12 02:17

          點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號(hào)”

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

            作者 |  Jepson6669

          來源 |  urlify.cn/3mQfmi

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

          1. 交叉連接CROSS JOIN

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

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

          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,因?yàn)槿绻蠾HERE子句的話,往往會(huì)先生成兩個(gè)表行數(shù)乘積的行的數(shù)據(jù)表然后才根據(jù)WHERE條件從中選擇。 

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

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

          兩邊表同時(shí)符合條件的組合

          如果僅僅使用

          SELECT * FROM table1 INNER JOIN table2

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

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

           

          ***************關(guān)于等值連接和自然連接

          等值連接(=號(hào)應(yīng)用于連接條件, 不會(huì)去除重復(fù)的列)

          自然連接(會(huì)去除重復(fù)的列)

          數(shù)據(jù)庫的連接運(yùn)算都是自然連接,因?yàn)椴辉试S有重復(fù)的行(元組)存在。

          例如:

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

          3. 外連接OUTER JOIN

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

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

          1)左外連接LEFT [OUTER] JOIN

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

          例如

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

          2)右外連接RIGHT [OUTER] JOIN

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

          例如

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

          3)全外連接full [outer] join

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







          瀏覽 46
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91蜜桃视频在线观看 | 黄色片视频免费看 | 人人爱人人操五月天 | 黄片大鸡巴 | 欧美天堂视频 |