<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教程:集合

          共 3209字,需瀏覽 7分鐘

           ·

          2024-05-23 16:00

          點擊關注公眾號,SQL干貨及時獲取

          后臺回復:1024,獲取海量學習資源
          SQL刷題專欄
          SQL145題系列

          集合的定義

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

          交集INTERSECT

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

          交集限制條件

          • 子結果集要具有相同的結構。

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

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

          • 每個子結果集不能包含order by 和 compute子句。

          交集示例

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

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

          SELECT * FROM  City1 
          INTERSECT
          SELECT * FROM  City2

          結果如下:

          其中北京和上海是上面兩個表共有的結果集。

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

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

          結果與上面結果相同。

          并集UNION

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

          并集限制條件

          • 子結果集要具有相同的結構。

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

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

          • 每個子結果集不能包含order by 和 compute子句。

          UNION示例

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

          SELECT * FROM  City1 
          UNION 
          SELECT * FROM  City2

          結果如下:

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

          UNION ALL示例

          我們再看看使用UNION ALL會怎么樣?

          SELECT * FROM  City1 
          UNION ALL
          SELECT * FROM  City2

          結果如下:

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

          差集EXCEPT

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

          差集限制條件

          • 子結果集要具有相同的結構。

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

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

          • 每個子結果集不能包含order by 和 compute子句。

          差集示例

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

          SELECT * FROM  City1 
          EXCEPT
          SELECT * FROM  City2

          結果如下:

          我們看到,因為北京和上海在兩個表都存在,差集為了只顯示左表中有的,而右表中沒有的,就把這兩個給過濾掉了。


              

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


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

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

                 
          后臺回復關鍵字:1024,獲取一份精心整理的技術干貨
          后臺回復關鍵字:進群,帶你進入高手如云的交流群。

                     
          推薦閱讀
                        
                        

          瀏覽 123
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  国产精品一区二区人成电影网 | 最新国产视频 | 亚洲aaaav | 色拍拍网站 | 狼友视频首页 |