<kbd id="5sdj3"></kbd>
<th id="5sdj3"></th>

  • <dd id="5sdj3"><form id="5sdj3"></form></dd>
    <td id="5sdj3"><form id="5sdj3"><big id="5sdj3"></big></form></td><del id="5sdj3"></del>

  • <dd id="5sdj3"></dd>
    <dfn id="5sdj3"></dfn>
  • <th id="5sdj3"></th>
    <tfoot id="5sdj3"><menuitem id="5sdj3"></menuitem></tfoot>

  • <td id="5sdj3"><form id="5sdj3"><menu id="5sdj3"></menu></form></td>
  • <kbd id="5sdj3"><form id="5sdj3"></form></kbd>

    SQL教程:集合

    共 3209字,需瀏覽 7分鐘

     ·

    2024-05-23 16:00

    點(diǎn)擊關(guān)注公眾號,SQL干貨及時(shí)獲取

    后臺回復(fù):1024,獲取海量學(xué)習(xí)資源
    SQL刷題專欄
    SQL145題系列

    集合的定義

    集合是由一個(gè)和多個(gè)元素構(gòu)成的整體,在SQL中的表就代表著事實(shí)集合,而其中的查詢就是在集合的基礎(chǔ)上生成的結(jié)果集。SQL的集合包括交集(INTERSECT),并集(UNION),差集(EXCEPT)。

    交集INTERSECT

    可以對兩個(gè)或多個(gè)結(jié)果集進(jìn)行連接,形成“交集”。返回左邊結(jié)果集和右邊結(jié)果集中都有的記錄,且結(jié)果不重復(fù)(這也是集合的主要特性)

    交集限制條件

    • 子結(jié)果集要具有相同的結(jié)構(gòu)。

    • 子結(jié)果集的列數(shù)必須相同

    • 子結(jié)果集對應(yīng)的數(shù)據(jù)類型必須可以兼容。

    • 每個(gè)子結(jié)果集不能包含order by 和 compute子句。

    交集示例

    我們用以下兩個(gè)表中的數(shù)據(jù)作為示例

    取以上兩個(gè)表的交集,我們可以這樣寫SQL

    SELECT * FROM  City1 
    INTERSECT
    SELECT * FROM  City2

    結(jié)果如下:

    其中北京和上海是上面兩個(gè)表共有的結(jié)果集。

    這和我們的內(nèi)連接(INNER JOIN)有點(diǎn)類似,以上SQL也可以這樣寫

    SELECT c1.* FROM City1 c1
    INNER JOIN City2 c2
    ON c1.Cno=c2.Cno AND c1.Name=c2.Name

    結(jié)果與上面結(jié)果相同。

    并集UNION

    可以對兩個(gè)或多個(gè)結(jié)果集進(jìn)行連接,形成“并集”。子結(jié)果集所有的記錄組合在一起形成新的結(jié)果集。其中使用UNION可以得到不重復(fù)(去重)的結(jié)果集,使用UNION ALL可能會(huì)得到重復(fù)(不去重)的結(jié)果集。

    并集限制條件

    • 子結(jié)果集要具有相同的結(jié)構(gòu)。

    • 子結(jié)果集的列數(shù)必須相同

    • 子結(jié)果集對應(yīng)的數(shù)據(jù)類型必須可以兼容。

    • 每個(gè)子結(jié)果集不能包含order by 和 compute子句。

    UNION示例

    還是以上面的City1和City2為例,取兩個(gè)表的并集,我們可以這樣寫SQL:

    SELECT * FROM  City1 
    UNION 
    SELECT * FROM  City2

    結(jié)果如下:

    我們看到,北京和上海去掉了重復(fù)的記錄,只保留了一次

    UNION ALL示例

    我們再看看使用UNION ALL會(huì)怎么樣?

    SELECT * FROM  City1 
    UNION ALL
    SELECT * FROM  City2

    結(jié)果如下:

    與上面的UNION相比,UNION ALL僅僅是對兩個(gè)表作了拼接而已,北京和上海依然在下面重復(fù)出現(xiàn)了,而且細(xì)心的讀著應(yīng)該發(fā)現(xiàn)了,UNION還會(huì)對結(jié)果進(jìn)行排序,而UNION ALL不會(huì)。

    差集EXCEPT

    可以對兩個(gè)或多個(gè)結(jié)果集進(jìn)行連接,形成“差集”。返回左邊結(jié)果集合中已經(jīng)有的記錄,而右邊結(jié)果集中沒有的記錄。

    差集限制條件

    • 子結(jié)果集要具有相同的結(jié)構(gòu)。

    • 子結(jié)果集的列數(shù)必須相同

    • 子結(jié)果集對應(yīng)的數(shù)據(jù)類型必須可以兼容。

    • 每個(gè)子結(jié)果集不能包含order by 和 compute子句。

    差集示例

    以City1和City2為例,我們想取City1(左表)和City2(右表)的差集,可以這樣寫SQL:

    SELECT * FROM  City1 
    EXCEPT
    SELECT * FROM  City2

    結(jié)果如下:

    我們看到,因?yàn)楸本┖蜕虾T趦蓚€(gè)表都存在,差集為了只顯示左表中有的,而右表中沒有的,就把這兩個(gè)給過濾掉了。


        

    最后給大家分享我寫的SQL兩件套:《SQL基礎(chǔ)知識第二版》《SQL高級知識第二版》的PDF電子版。里面有各個(gè)語法的解釋、大量的實(shí)例講解和批注等等,非常通俗易懂,方便大家跟著一起來實(shí)操。


    有需要的讀者可以下載學(xué)習(xí),在下面的公眾號「數(shù)據(jù)前線」(非本號)后臺回復(fù)關(guān)鍵字:SQL,就行

    數(shù)據(jù)前線
    ——End——

           
    后臺回復(fù)關(guān)鍵字:1024,獲取一份精心整理的技術(shù)干貨
    后臺回復(fù)關(guān)鍵字:進(jìn)群,帶你進(jìn)入高手如云的交流群。

               
    推薦閱讀
                  
                  

    瀏覽 123
    點(diǎn)贊
    評論
    收藏
    分享

    手機(jī)掃一掃分享

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

    手機(jī)掃一掃分享

    分享
    舉報(bào)

    <kbd id="5sdj3"></kbd>
    <th id="5sdj3"></th>

  • <dd id="5sdj3"><form id="5sdj3"></form></dd>
    <td id="5sdj3"><form id="5sdj3"><big id="5sdj3"></big></form></td><del id="5sdj3"></del>

  • <dd id="5sdj3"></dd>
    <dfn id="5sdj3"></dfn>
  • <th id="5sdj3"></th>
    <tfoot id="5sdj3"><menuitem id="5sdj3"></menuitem></tfoot>

  • <td id="5sdj3"><form id="5sdj3"><menu id="5sdj3"></menu></form></td>
  • <kbd id="5sdj3"><form id="5sdj3"></form></kbd>
    国产精品 色哟哟 | 91视频一区二区三区 | 97黄网| 俺去也俺来也 | 成 人 免费 黄 色 视频 成年人视频中文字幕在线播放 |