子查詢,聯(lián)結(jié)查詢色瘩,組合查詢的用法以及異同

一. 子查詢

子查詢就是在一個(gè)查詢語(yǔ)句內(nèi)部嵌套的查詢伪窖,因而子查詢語(yǔ)句也被稱為內(nèi)部查詢、包含子查詢語(yǔ)句的查詢稱為外部查詢居兆。這種查詢語(yǔ)句的查詢順序是從內(nèi)向外的覆山。
常見(jiàn)的使用子查詢的形式為:在WHERE語(yǔ)句內(nèi)、在INNOT IN操作符后泥栖、在FROM語(yǔ)句內(nèi)簇宽、在EXISTSNOT EXISTS操作符后勋篓。

在WHERE語(yǔ)句中使用子查詢

可以在WHERE語(yǔ)句中使用子查詢的結(jié)果對(duì)外部查詢的數(shù)據(jù)進(jìn)行過(guò)濾。
舉例如下:
學(xué)生基本信息表:

image.png

學(xué)生專業(yè)信息表:
image.png

查詢名字為“FF”的學(xué)生的專業(yè)名稱的操作為:

SELECT major FROM student_major WHERE id = (SELECT id FROM student_details WHERE name = 'FF');

查詢結(jié)果為:


image.png

在IN或NOT IN操作符后使用子查詢

INNOT IN語(yǔ)句用于過(guò)濾出存在/不存在于子查詢結(jié)果的數(shù)據(jù)魏割。

IN:

查詢id為1001生巡, 1002,1003學(xué)生的專業(yè)信息:

SELECT major FROM student_major WHERE id IN (1001, 1002, 1003);

查詢結(jié)果為:


image.png
NOT IN:

查詢除FF同學(xué)以外的其他學(xué)生的專業(yè)信息:

SELECT major FROM student_major WHERE id NOT IN (SELECT id FROM student_details WHERE name = 'FF');

查詢結(jié)果為:


image.png

在FROM語(yǔ)句內(nèi)使用子查詢

可以將子查詢結(jié)果作為一個(gè)臨時(shí)表用于FROM語(yǔ)句中见妒。
查詢學(xué)生的最大年齡:

SELECT MAX(age) FROM (SELECT age FROM student_details AS student_age) AS max_age;

查詢結(jié)果為:


image.png

在EXISTS或NOT EXISTS操作符后使用子查詢

使用EXISTSNOT EXISTS操作符可以過(guò)濾出滿足/不滿足于子查詢結(jié)果的數(shù)據(jù)孤荣。
查詢?cè)趯I(yè)信息表中存在的學(xué)生ID:

SELECT id FROM student_details WHERE EXISTS (SELECT * FROM student_major);
image.png

二. 聯(lián)結(jié)查詢

聯(lián)結(jié)查詢是將多個(gè)表的數(shù)據(jù)放在一起進(jìn)行查詢。
聯(lián)結(jié)查詢包含內(nèi)聯(lián)結(jié)须揣、外聯(lián)結(jié)盐股、交叉聯(lián)結(jié)、自聯(lián)結(jié)等耻卡,其中最常用的為內(nèi)聯(lián)結(jié)和外聯(lián)結(jié)疯汁。

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

內(nèi)聯(lián)結(jié)即查詢兩個(gè)表中數(shù)據(jù)的交集(如圖),查詢過(guò)程是將主表和副表的每一條數(shù)據(jù)都按照聯(lián)結(jié)條件來(lái)匹配卵酪,只有滿足聯(lián)結(jié)條件的數(shù)據(jù)才會(huì)被保留幌蚊。


image.png

內(nèi)聯(lián)結(jié)的語(yǔ)法:

  • FROM后跟隨主表
  • INNER JOIN后跟隨副表
  • ON后跟隨聯(lián)結(jié)條件

內(nèi)聯(lián)結(jié)可以聯(lián)結(jié)多個(gè)表來(lái)查詢。
查詢學(xué)生的名字和專業(yè)信息:

DELETE FROM student_major WHERE id = 1003;
SELECT s1.name, s2.major FROM student_details AS s1 
INNER JOIN 
student_major AS s2 ON s1.id = s2.id;

查詢結(jié)果為:


image.png

外聯(lián)結(jié)

外聯(lián)結(jié)在查詢過(guò)程中會(huì)保留主表中的所有數(shù)據(jù)溃卡,并對(duì)每一行數(shù)據(jù)按照指定的聯(lián)結(jié)規(guī)則與附表匹配溢豆,若能匹配則取出副表中對(duì)應(yīng)的數(shù)據(jù),若不能匹配則該項(xiàng)以NULL填充瘸羡。左外聯(lián)結(jié)和右外聯(lián)結(jié)的效果如下面兩張圖所示:


image.png

外聯(lián)結(jié)的語(yǔ)法:

  • FROM后跟隨主表
  • LEFT JOINRIGEHT JOIN后跟隨副表
  • ON后跟隨聯(lián)結(jié)條件
    查詢學(xué)生的名字和專業(yè)信息:
SELECT t1.name, t2.major FROM student_details AS t1 LEFT JOIN student_major AS t2 ON t1.id = t2.id;

查詢結(jié)果為:


image.png

可以看到由于student_major表中沒(méi)有ZZ的專業(yè)信息漩仙,因此ZZ的專業(yè)信息為NULL。

組合查詢

組合查詢是將多次查詢的結(jié)果顯示到一張表中犹赖,使用UNION關(guān)鍵字實(shí)現(xiàn)队他。
其規(guī)則是:只有當(dāng)多次查詢的結(jié)果具有相似的結(jié)構(gòu)(即相同數(shù)量的列,且對(duì)應(yīng)列的類(lèi)型相同或可以相互轉(zhuǎn)換)時(shí)才能進(jìn)行組合查詢峻村。
查詢年齡小于19歲或者性別為女的學(xué)生:

SELECT * FROM student_details WHERE gender = 'female' UNION SELECT * FROM student_details WHERE age < 19;

查詢結(jié)果為:


image.png

總結(jié)

這三種方法的相同之處都是可以從多個(gè)相互關(guān)聯(lián)的表中查詢數(shù)據(jù)麸折,相比單一表的查詢更加使用。

不同之處在于:

  • 子查詢是按照從內(nèi)向外的順序依次執(zhí)行查詢粘昨,主要用于使用子查詢的結(jié)果作為基礎(chǔ)進(jìn)一步進(jìn)行外層的查詢垢啼,更適用于二次檢索或過(guò)濾數(shù)據(jù)等操作。在嵌套曾經(jīng)較少的情況下代碼可讀性較高雾棺,但檢索效率較低膊夹。
  • 聯(lián)結(jié)查詢是對(duì)不同表的數(shù)據(jù)進(jìn)行了組合,并按照一定條件過(guò)濾捌浩;更適用于查詢多表之間的共有數(shù)據(jù)(如內(nèi)聯(lián)結(jié))或表數(shù)據(jù)的擴(kuò)充(如外聯(lián)結(jié))等場(chǎng)景放刨。
  • 組合查詢是將多次相似查詢的結(jié)合進(jìn)行合并展示的一種方式,主要用于對(duì)查詢結(jié)果的聚合尸饺。

參考鏈接:http://www.reibang.com/p/b7cd83b1aa8e

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末进统,一起剝皮案震驚了整個(gè)濱河市助币,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌螟碎,老刑警劉巖眉菱,帶你破解...
    沈念sama閱讀 219,589評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異掉分,居然都是意外死亡俭缓,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門(mén)酥郭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)华坦,“玉大人,你說(shuō)我怎么就攤上這事不从∠Ы悖” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,933評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵椿息,是天一觀的道長(zhǎng)歹袁。 經(jīng)常有香客問(wèn)我,道長(zhǎng)寝优,這世上最難降的妖魔是什么条舔? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,976評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮倡勇,結(jié)果婚禮上逞刷,老公的妹妹穿的比我還像新娘。我一直安慰自己妻熊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布仑最。 她就那樣靜靜地躺著扔役,像睡著了一般。 火紅的嫁衣襯著肌膚如雪警医。 梳的紋絲不亂的頭發(fā)上亿胸,一...
    開(kāi)封第一講書(shū)人閱讀 51,775評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音预皇,去河邊找鬼侈玄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛吟温,可吹牛的內(nèi)容都是我干的序仙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,474評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼鲁豪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼潘悼!你這毒婦竟也來(lái)了律秃?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,359評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤治唤,失蹤者是張志新(化名)和其女友劉穎棒动,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體宾添,經(jīng)...
    沈念sama閱讀 45,854評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡船惨,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了缕陕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粱锐。...
    茶點(diǎn)故事閱讀 40,146評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖榄檬,靈堂內(nèi)的尸體忽然破棺而出卜范,到底是詐尸還是另有隱情,我是刑警寧澤鹿榜,帶...
    沈念sama閱讀 35,826評(píng)論 5 346
  • 正文 年R本政府宣布海雪,位于F島的核電站,受9級(jí)特大地震影響舱殿,放射性物質(zhì)發(fā)生泄漏奥裸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評(píng)論 3 331
  • 文/蒙蒙 一沪袭、第九天 我趴在偏房一處隱蔽的房頂上張望湾宙。 院中可真熱鬧,春花似錦冈绊、人聲如沸侠鳄。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,029評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)伟恶。三九已至,卻和暖如春毅该,著一層夾襖步出監(jiān)牢的瞬間博秫,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,153評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工眶掌, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留挡育,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,420評(píng)論 3 373
  • 正文 我出身青樓朴爬,卻偏偏與公主長(zhǎng)得像即寒,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評(píng)論 2 356

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

  • 1. 子查詢 子查詢:允許把一個(gè)查詢嵌套在另一個(gè)查詢當(dāng)中的查詢痊银。子查詢先從內(nèi)部查詢開(kāi)始,在到外部查詢施绎,依次從里到位...
    加一片檸檬233閱讀 1,069評(píng)論 0 0
  • 半聯(lián)結(jié):是在兩個(gè)數(shù)據(jù)集之間的聯(lián)結(jié)溯革,其中第一個(gè)數(shù)據(jù)庥中的數(shù)據(jù)行在決定是否返回時(shí)會(huì)根據(jù)在別一個(gè)數(shù)據(jù)集中出現(xiàn)或不出現(xiàn)至少...
    貓貓_tomluo閱讀 1,012評(píng)論 0 0
  • 比如在Northwind數(shù)據(jù)庫(kù)中有一個(gè)查詢?yōu)?這里面的EXISTS是如何運(yùn)作呢?子查詢返回的是OrderId字段谷醉,...
    莫夏_b560閱讀 3,554評(píng)論 0 0
  • 鉤沉 說(shuō):指深?yuàn)W的道理或散失的內(nèi)容致稀,即搜集與發(fā)掘資料、義理等俱尼。一些輯佚書(shū)常以"鉤沈"為書(shū)名抖单,如《五經(jīng)鉤沈》、《古小...
    天下妙文閱讀 613評(píng)論 0 1
  • 當(dāng)初愛(ài)得死去活來(lái)的那個(gè)人遇八,現(xiàn)在卻和你形同陌路矛绘; 情侶遲遲不按時(shí)赴約,你因此而惱怒刃永,認(rèn)為他/她不夠重視你货矮; 情侶身上...
    初十相遇閱讀 288評(píng)論 0 2