《SQL基礎教程》學習筆記Ch7

7集合運算

7-1表的加減法

表的加法--UNION

首先我們新建一個表Product2:


7-1.png

使用UNION函數(shù)進行“product表+product2表”的運算:


7-2.png

商品編號為“0001”~“0003”的 3 條記錄在兩個表中都存在,因此大家可能會認為結(jié)果中會出現(xiàn)重復的記錄,但是 UNION 等集合運算符通常都會除去重復的記錄。
集合運算的注意事項

注意事項1 ——作為運算對象的記錄的列數(shù)必須相同

-- 列數(shù)不一致時會發(fā)生錯誤
SELECT product_id, product_name
  FROM Product 
 UNION
SELECT product_id, product_name, sale_price 
  FROM Product2;

注意事項2 ——作為運算對象的記錄中列的類型必須一致

SELECT product_id, sale_price 
  FROM Product
 UNION 
SELECT product_id, regist_date
  FROM Produt2;

注意事項3 —— 可以使用任何SELECT語句菜枷,但ORDER BY子句只能在最后使用一次


7-3.png
包含重復行的集合運算--ALL選項

在 UNION 的結(jié)果中保留重復行饿肺,只需要在 UNION 后面添加 ALL 關(guān)鍵字就可以了:


7-4.png
選取表中的公共部分--INTERSECT

INTERSECT只選取兩表的重合部分


7-5.png
記錄的減法--EXCEPT

減法運算EXCEPT把表二與表一重合部分刪去


7-6.png

被減數(shù)和減數(shù)位置不同占键,得到的結(jié)果也不同


7-7.png

7-3聯(lián)結(jié)(以列為單位對表進行聯(lián)結(jié))

什么是聯(lián)結(jié)

UNION 和 INTERSECT 等集合運算,這些集合運算的特征就是以行方向為單位進行操作尉辑。而JOIN(聯(lián)結(jié))函數(shù)則是對列進行運算情萤,即將其他表中的列添加進來鸭蛙。

內(nèi)聯(lián)結(jié)--INNER JOIN

我們還是對兩張表Product,ShopProduct進行操作筋岛,表結(jié)構(gòu)分別是:


7-8.png

兩張表中的列可以分成以下兩類:
1.兩張表中都包含的列 → 商品編號
2.只存在于一張表內(nèi)的列 → 商品編號之外的列

東京店銷售商品編號為0001娶视、0002和0003的商品的名稱 (product_name)和銷售單價(sale_price)在 ShopProduct 表中并不存在,這些信息都保存在 Product 表中睁宰。
使用INNER JOIN函數(shù)來得到這些商品的對應信息:


7-8.png

內(nèi)聯(lián)結(jié)需要注意的三點:
1.FROM子句后有兩張表
2.ON子句是用來指定聯(lián)結(jié)條件的肪获,一般跟“=”,當兩個表中有相同記錄時進行聯(lián)結(jié)
3.SELECT子句

內(nèi)聯(lián)結(jié)和WHERE子句結(jié)合使用

不想查詢所有店柒傻,只查東京的孝赫,可以在ON子句之后加WHERE子句:


7-9.png
外聯(lián)結(jié)--OUTER JOIN

外聯(lián)結(jié)也是使用ON進行聯(lián)結(jié),但是結(jié)果稍有不同:


7-10.png
外聯(lián)結(jié)的要點1--選取出單張表中的所有信息

內(nèi)聯(lián)結(jié)只能選取出同時存在于兩張表中的數(shù)據(jù)诅愚。相反寒锚,對于外聯(lián)結(jié)來說,只要數(shù)據(jù)存在于某一張表當中违孝,就能夠讀取出來刹前。

外聯(lián)結(jié)的要點2--主表的設定
SELECT SP.product_id, SP.shop_name, SP.product_id, P.product_name, P.sale_price
  FROM Product AS P LEFT OUTER JOIN ShopProduct AS SP 
    ON SP.product_id = P.product_id;

上面兩個結(jié)果是一樣的,指定主表的關(guān)鍵字是 LEFT 和 RIGHT雌桑。顧 名思義喇喉,使用 LEFT 時 FROM 子句中寫在左側(cè)的表是主表,使用 RIGHT 時右側(cè)的表是主表校坑。

外聯(lián)結(jié)的要點3--3張以上的表聯(lián)結(jié)

首先創(chuàng)建下面這個新表:


7-11.png

聯(lián)結(jié)三個表的方法:

SELECT SP.shop_id, SP.shop_name, SP.product_id, P.product_name, P.sale_price, IP.inventory_quantity
  FROM ShopProduct AS SP INNER JOIN Product AS P
    ON SP.product_id = P.product_id
INNER JOIN InventoryProduct AS IP
    ON SP.product_id = P.product_id
 WHERE IP.inventory_id = 'P001';
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拣技,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子耍目,更是在濱河造成了極大的恐慌膏斤,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件邪驮,死亡現(xiàn)場離奇詭異莫辨,居然都是意外死亡,警方通過查閱死者的電腦和手機毅访,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門沮榜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人喻粹,你說我怎么就攤上這事蟆融。” “怎么了守呜?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵型酥,是天一觀的道長山憨。 經(jīng)常有香客問我,道長冕末,這世上最難降的妖魔是什么萍歉? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮档桃,結(jié)果婚禮上枪孩,老公的妹妹穿的比我還像新娘。我一直安慰自己藻肄,他們只是感情好蔑舞,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著嘹屯,像睡著了一般攻询。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上州弟,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天钧栖,我揣著相機與錄音,去河邊找鬼婆翔。 笑死拯杠,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的啃奴。 我是一名探鬼主播潭陪,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼最蕾!你這毒婦竟也來了依溯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤瘟则,失蹤者是張志新(化名)和其女友劉穎黎炉,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體醋拧,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡拜隧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了趁仙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡垦页,死狀恐怖雀费,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情痊焊,我是刑警寧澤盏袄,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布忿峻,位于F島的核電站,受9級特大地震影響辕羽,放射性物質(zhì)發(fā)生泄漏逛尚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一刁愿、第九天 我趴在偏房一處隱蔽的房頂上張望绰寞。 院中可真熱鬧,春花似錦铣口、人聲如沸滤钱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽件缸。三九已至,卻和暖如春叔遂,著一層夾襖步出監(jiān)牢的瞬間他炊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工已艰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留痊末,地道東北人。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓旗芬,卻偏偏與公主長得像舌胶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子疮丛,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容