目錄
表的加減法
聯(lián)結(jié)(以列為單位)
一、表的加減法
1.集合:記錄的集合(表、視圖和查詢的執(zhí)行結(jié)果)。
2.UNION(并集):表的加法
初始化測(cè)試數(shù)據(jù)
圖
并集圖,會(huì)移除重復(fù)的記錄。
3.注意事項(xiàng):
?。?)作為運(yùn)算對(duì)象的記錄的列數(shù)必須相同
圖:列數(shù)不匹配
?。?)作為運(yùn)算對(duì)象的記錄中列的類型必須一致
圖:類型不一致
【備注】可以使用類型轉(zhuǎn)換函數(shù) CAST
4.ALL 選項(xiàng) - 包含重復(fù)行的集合運(yùn)算
圖:保留重復(fù)行
5.INTERSECT(交集) - 選取表中公共的部分
類似該并集圖:
6.EXCEPT(差集) - 記錄的減法
需要注意,被減數(shù)和減數(shù)的位置調(diào)換,結(jié)果是不同的:
二、聯(lián)結(jié)(以列為單位)
1.上一節(jié)集合運(yùn)算的特征是以“行方向”為單位操作,在進(jìn)行集合運(yùn)算時(shí)會(huì)導(dǎo)致記錄行數(shù)的增減,不過隊(duì)列不會(huì)影響,因?yàn)樗鼈兊牧袛?shù)要一致。
2.聯(lián)結(jié)(JOIN)運(yùn)算:“添加列”的運(yùn)算,從其它表的列添加過來。
3.INNER JOIN - 內(nèi)聯(lián)結(jié)
聯(lián)結(jié)運(yùn)算:以 A 表中的列作為橋梁,將 B 表中滿足同樣條件的列匯集到同一結(jié)果中。
要點(diǎn):
?、貴ROM 子句:FROM dbo.TenpoShohin AS TS INNER JOIN dbo.Shohin AS S
這里使用 INNER JOIN 將兩張表關(guān)聯(lián)起來,TS 和 S 分別是兩張表的別名,可以增強(qiáng)表的可讀性。
?、贠N 子句:ON S.shohin_id = TS.shohin_id
ON 后面記載的是聯(lián)結(jié)條件,聯(lián)結(jié)兩張表所使用的的列,可以稱為聯(lián)結(jié)鍵。
這是一個(gè)比較直觀的例子,兩個(gè)小鎮(zhèn),中間隔了一條河,通過 ON 子句作為他們兩者之間的橋梁。
?、跾ELECT 子句:SELECT TS.tenpo_id ,TS.tenpo_mei ,S.shohin_mei ,S.hanbai_tanka
采用“<表的別名>.<列名>”格式來顯示,這樣就可以清楚的知道該列來自哪張表。
4.OUTER JOIN - 外聯(lián)結(jié)
(1)要點(diǎn):
?、龠x取出單張表中全部的信息
與之前的內(nèi)聯(lián)表相比,15 行比之前 13行多了 2 行。因?yàn)槎喑龅?2 條記錄在 TenpoShohin 表并不存在。內(nèi)聯(lián)結(jié)只能選取出同時(shí)存在于兩張表中的數(shù)據(jù),而外聯(lián)結(jié),只要數(shù)據(jù)存在某一張表中,就能夠讀取出來。也就是說,希望生成固定行數(shù)的記錄,就需要使用外聯(lián)結(jié)。
?、谥鞅淼倪x擇
最終的結(jié)果只會(huì)包含主表內(nèi)所有的數(shù)據(jù)。指定主表的關(guān)鍵字是 LEFT 和 RIGHT,使用 LEFT 時(shí)左側(cè)的表為主表,使用 RIGHT 時(shí)右側(cè)的表為主表(如上圖的 Shohin 表)。
【備注】外聯(lián)結(jié)使用 LEFT 和 RIGHT 來指定主表。
5.多張表的聯(lián)結(jié)
初始化測(cè)試數(shù)據(jù)
3 表聯(lián)結(jié)就是多 1 行 JOIN 子句而已,多表聯(lián)結(jié)就多幾行 JOIN 字句唄。
6.CROSS JOIN(笛卡兒積)- 交叉聯(lián)結(jié)
這種聯(lián)結(jié)在實(shí)際業(yè)務(wù)中很少使用。
TenpoShohin 表 13 條記錄, Shohin 表 8 條記錄,13*8=104 條記錄。
備注
這里采用 MS SQL Server 進(jìn)行驗(yàn)證,不保證所有的 DBMS 執(zhí)行結(jié)果正確。
《SQL 基礎(chǔ)知識(shí)梳理》系列
《SQL 基礎(chǔ)知識(shí)梳理(一) - 數(shù)據(jù)庫(kù)與 SQL》
《SQL 基礎(chǔ)知識(shí)梳理(二) - 查詢基礎(chǔ)》
《SQL 基礎(chǔ)知識(shí)梳理(三) - 聚合和排序》
《SQL 基礎(chǔ)知識(shí)梳理(四) - 數(shù)據(jù)更新》
《SQL 基礎(chǔ)知識(shí)梳理(五) - 復(fù)雜查詢》
《SQL 基礎(chǔ)知識(shí)梳理(六)- 函數(shù)、謂詞、CASE 表達(dá)式》
《SQL 基礎(chǔ)知識(shí)梳理(七)- 集合運(yùn)算》
【博主】反骨仔
【原文】http://www.cnblogs.com/liqingwen/p/6575668.html
【參考】《SQL ゼロからはじめるデータベース操作》
感謝您的閱讀。喜歡的、有用的就請(qǐng)大哥大嫂們賞幾個(gè)小錢花花,沒錢的就請(qǐng)高抬貴手“推薦一下”吧!你的物質(zhì)和精神支持是博主強(qiáng)大的寫作動(dòng)力。歡迎轉(zhuǎn)載!
博主的文章沒有高度、深度和廣度,只是湊字?jǐn)?shù)。由于博主的水平不高(其實(shí)是個(gè)菜B),不足和錯(cuò)誤之處在所難免,希望大家能夠批評(píng)指出。
博主是利用讀書、參考、引用、抄襲、復(fù)制和粘貼等多種方式打造成自己的純鍍 24k 文章,請(qǐng)?jiān)彶┲鞒蔀橐粋€(gè)無恥的文檔搬運(yùn)工!
目錄
表的加減法
聯(lián)結(jié)(以列為單位)
一、表的加減法
1.集合:記錄的集合(表、視圖和查詢的執(zhí)行結(jié)果)。
2.UNION(并集):表的加法
初始化測(cè)試數(shù)據(jù)
圖
并集圖,會(huì)移除重復(fù)的記錄。
3.注意事項(xiàng):
?。?)作為運(yùn)算對(duì)象的記錄的列數(shù)必須相同
圖:列數(shù)不匹配
?。?)作為運(yùn)算對(duì)象的記錄中列的類型必須一致
圖:類型不一致
【備注】可以使用類型轉(zhuǎn)換函數(shù) CAST
4.ALL 選項(xiàng) - 包含重復(fù)行的集合運(yùn)算
圖:保留重復(fù)行
5.INTERSECT(交集) - 選取表中公共的部分
類似該并集圖:
6.EXCEPT(差集) - 記錄的減法
需要注意,被減數(shù)和減數(shù)的位置調(diào)換,結(jié)果是不同的:
二、聯(lián)結(jié)(以列為單位)
1.上一節(jié)集合運(yùn)算的特征是以“行方向”為單位操作,在進(jìn)行集合運(yùn)算時(shí)會(huì)導(dǎo)致記錄行數(shù)的增減,不過隊(duì)列不會(huì)影響,因?yàn)樗鼈兊牧袛?shù)要一致。
2.聯(lián)結(jié)(JOIN)運(yùn)算:“添加列”的運(yùn)算,從其它表的列添加過來。
3.INNER JOIN - 內(nèi)聯(lián)結(jié)
聯(lián)結(jié)運(yùn)算:以 A 表中的列作為橋梁,將 B 表中滿足同樣條件的列匯集到同一結(jié)果中。
要點(diǎn):
?、貴ROM 子句:FROM dbo.TenpoShohin AS TS INNER JOIN dbo.Shohin AS S
這里使用 INNER JOIN 將兩張表關(guān)聯(lián)起來,TS 和 S 分別是兩張表的別名,可以增強(qiáng)表的可讀性。
②ON 子句:ON S.shohin_id = TS.shohin_id
ON 后面記載的是聯(lián)結(jié)條件,聯(lián)結(jié)兩張表所使用的的列,可以稱為聯(lián)結(jié)鍵。
這是一個(gè)比較直觀的例子,兩個(gè)小鎮(zhèn),中間隔了一條河,通過 ON 子句作為他們兩者之間的橋梁。
③SELECT 子句:SELECT TS.tenpo_id ,TS.tenpo_mei ,S.shohin_mei ,S.hanbai_tanka
采用“<表的別名>.<列名>”格式來顯示,這樣就可以清楚的知道該列來自哪張表。
4.OUTER JOIN - 外聯(lián)結(jié)
?。?)要點(diǎn):
①選取出單張表中全部的信息
與之前的內(nèi)聯(lián)表相比,15 行比之前 13行多了 2 行。因?yàn)槎喑龅?2 條記錄在 TenpoShohin 表并不存在。內(nèi)聯(lián)結(jié)只能選取出同時(shí)存在于兩張表中的數(shù)據(jù),而外聯(lián)結(jié),只要數(shù)據(jù)存在某一張表中,就能夠讀取出來。也就是說,希望生成固定行數(shù)的記錄,就需要使用外聯(lián)結(jié)。
②主表的選擇
最終的結(jié)果只會(huì)包含主表內(nèi)所有的數(shù)據(jù)。指定主表的關(guān)鍵字是 LEFT 和 RIGHT,使用 LEFT 時(shí)左側(cè)的表為主表,使用 RIGHT 時(shí)右側(cè)的表為主表(如上圖的 Shohin 表)。
【備注】外聯(lián)結(jié)使用 LEFT 和 RIGHT 來指定主表。
5.多張表的聯(lián)結(jié)
初始化測(cè)試數(shù)據(jù)
3 表聯(lián)結(jié)就是多 1 行 JOIN 子句而已,多表聯(lián)結(jié)就多幾行 JOIN 字句唄。
6.CROSS JOIN(笛卡兒積)- 交叉聯(lián)結(jié)
這種聯(lián)結(jié)在實(shí)際業(yè)務(wù)中很少使用。
TenpoShohin 表 13 條記錄, Shohin 表 8 條記錄,13*8=104 條記錄。
備注
這里采用 MS SQL Server 進(jìn)行驗(yàn)證,不保證所有的 DBMS 執(zhí)行結(jié)果正確。
《SQL 基礎(chǔ)知識(shí)梳理》系列
《SQL 基礎(chǔ)知識(shí)梳理(一) - 數(shù)據(jù)庫(kù)與 SQL》
《SQL 基礎(chǔ)知識(shí)梳理(二) - 查詢基礎(chǔ)》
《SQL 基礎(chǔ)知識(shí)梳理(三) - 聚合和排序》
《SQL 基礎(chǔ)知識(shí)梳理(四) - 數(shù)據(jù)更新》
《SQL 基礎(chǔ)知識(shí)梳理(五) - 復(fù)雜查詢》
《SQL 基礎(chǔ)知識(shí)梳理(六)- 函數(shù)、謂詞、CASE 表達(dá)式》
《SQL 基礎(chǔ)知識(shí)梳理(七)- 集合運(yùn)算》
【博主】反骨仔
【原文】http://www.cnblogs.com/liqingwen/p/6575668.html
【參考】《SQL ゼロからはじめるデータベース操作》
感謝您的閱讀。喜歡的、有用的就請(qǐng)大哥大嫂們賞幾個(gè)小錢花花,沒錢的就請(qǐng)高抬貴手“推薦一下”吧!你的物質(zhì)和精神支持是博主強(qiáng)大的寫作動(dòng)力。歡迎轉(zhuǎn)載!
博主的文章沒有高度、深度和廣度,只是湊字?jǐn)?shù)。由于博主的水平不高(其實(shí)是個(gè)菜B),不足和錯(cuò)誤之處在所難免,希望大家能夠批評(píng)指出。
博主是利用讀書、參考、引用、抄襲、復(fù)制和粘貼等多種方式打造成自己的純鍍 24k 文章,請(qǐng)?jiān)彶┲鞒蔀橐粋€(gè)無恥的文檔搬運(yùn)工!
http://www.cnblogs.com/liqingwen/p/6575668.html