<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>

          面試必備:聊聊數(shù)據(jù)庫中內(nèi)連接、外連接、交叉連接、笛卡爾積的使用?

          共 2417字,需瀏覽 5分鐘

           ·

          2021-07-06 17:29

          簡述:

          數(shù)據(jù)庫鏈接分為三種:內(nèi)連接、外連接、交叉連接。

          內(nèi)連接(INNER JOIN):?
          ??? 分為三種:等值連接、自然連接、不等連接?
          外連接(OUTER JOIN):?
          ??? 分為三種:?
          ??? 左外連接(LEFT OUTER JOIN或LEFT JOIN)?
          ??? 右外連接(RIGHT OUTER JOIN或RIGHT JOIN)?
          ??? 全外連接(FULL OUTER JOIN或FULL JOIN)?
          交叉連接(CROSS JOIN):?
          ??? 沒有WHERE 子句,它返回連接表中所有數(shù)據(jù)行的笛卡爾積。


          擴展:

          1.

          a. 并集UNION :SELECT column1, column2 FROM table1 UNION SELECT column1, column2 FROM table2

          b. 交集JOIN :SELECT * FROM table1 AS a JOIN table2 b ON a.name=b.name

          c. 差集NOT IN :SELECT * FROM table1 WHERE name NOT IN(SELECT name FROM table2)

          d. 笛卡爾積CROSS JOIN :SELECT * FROM table1 CROSS JOIN table2 (?? 與 SELECT * FROM table1,table2相同)

          ?2.

          SQL中的UNION 與UNION ALL的區(qū)別是,前者會去除重復(fù)的條目,后者會仍舊保留。

          a. UNION :SQL Statement1 UNION SQL Statement2

          b. UNION ALL:SQL Statement1 UNION ALL SQL Statement2

          3.

          SQL中的各種JOIN, SQL中的連接可以分為內(nèi)連接,外連接,以及交叉連接(即是笛卡爾積)

          a. 交叉連接 CROSS JOIN:

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

          SELECT * FROM table1 CROSS JOIN table2 等同于

          SELECT * FROM table1,table2

          一般不建議使用該方法,因為如果有WHERE子句的話,往往會先生成兩個表行數(shù)乘積的行的數(shù)據(jù)表然后才根據(jù)WHERE條件從中選擇。因此,如果兩個需要求交際的表太大,將會非常非常慢,不建議使用。

          b. 內(nèi)連接 INNER JOIN :

          如果僅僅使用 SELECT * FROM table1 INNER JOIN table2 沒有指定連接條件的話,和交叉連接的結(jié)果一樣。但是通常情況下,使用INNER JOIN需要指定連接條件。

          -- 等值連接(=號應(yīng)用于連接條件, 不會去除重復(fù)的列) SELECT * FROM table1 AS a INNER JOIN table2 AS b on a.column=b.column

          -- 不等連接(>,>=,<,<=,!>,!<,<>) 例如 SELECT * FROM table1 AS a INNER JOIN table2 AS b on a.column<>b.column

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

          c. 外連接 OUTER JOIN:

          ?首先內(nèi)連接和外連接的不同之處:內(nèi)連接如果沒有指定連接條件的話,和笛卡爾積的交叉連接結(jié)果一樣,但是不同于笛卡爾積的地方是,沒有笛卡爾積那么復(fù)雜地要先生成行數(shù)乘積的數(shù)據(jù)表,內(nèi)連接的效率要高于笛卡爾積的交叉連接。?指定條件的內(nèi)連接,僅僅返回符合連接條件的條目外連接則不同,返回的結(jié)果不僅包含符合連接條件的行,而且包括左表(左外連接時), 右表(右連接時)或者兩邊連接(全外連接時)的所有數(shù)據(jù)行??

          1)左外連接LEFT [OUTER] JOIN :

          顯示符合條件的數(shù)據(jù)行,同時顯示左邊數(shù)據(jù)表不符合條件的數(shù)據(jù)行,右邊沒有對應(yīng)的條目顯示NULL 例如 SELECT * FROM table1 AS a LEFT [OUTER] JOIN ON a.column=b.column?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

          2)右外連接RIGHT [OUTER] JOIN:

          ?顯示符合條件的數(shù)據(jù)行,同時顯示右邊數(shù)據(jù)表不符合條件的數(shù)據(jù)行,左邊沒有對應(yīng)的條目顯示NULL 例如 SELECT * FROM table1 AS a RIGHT [OUTER] JOIN ON a.column=b.column???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

          3)全外連接:

          顯示符合條件的數(shù)據(jù)行,同時顯示左右不符合條件的數(shù)據(jù)行,相應(yīng)的左右兩邊顯示NULL

          出處:

          https://www.cnblogs.com/jinianjun/archive/2011/11/08/2240525.html


          支持小微:

          騰訊云 搞活動了?玩服務(wù)器的可以搞搞。就這幾天時間。

          云服務(wù)器限時秒殺,1核2G 首年95元!

          鏈接:https://curl.qcloud.com/RX2amrlR


          右下角,您點一下在看圖片054ccbd5476100f2f42721bd12c1b88f.webp

          小微工資漲1毛

          商務(wù)合作QQ:185601686






          瀏覽 63
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  黄色一级视频 | 欧美亚洲性爱 | 欧美视频一区二区三区四区五区 | 青青草视频色版 | 国产久久久久久久久久久 |