SQL經(jīng)典練習(xí)(7~10)

  1. 查詢沒有學(xué)全所有課程的同學(xué)的信息
    ??分析:課程表總一共有3個(gè)課程滨砍,分別是01語文蕴潦,02數(shù)學(xué)害碾,03英語瘩例。存在有的同學(xué)只學(xué)了其中兩門或者一門的課程的情況啊胶。想到用聚集函數(shù)COUNT對成績表分組之后的行數(shù)記錄,小于3的就是沒有學(xué)全所有課程的垛贤,再根據(jù)查詢出的學(xué)號在學(xué)生表中查找出詳細(xì)信息焰坪。
    方法一(子查詢):
SELECT s.*
FROM students s
WHERE s.`S#` IN (SELECT `S#` 
                 FROM SC 
                 GROUP BY `S#` 
                 HAVING COUNT(*)<3);

方法二(聯(lián)結(jié)表):

SELECT s.*
FROM students s,(SELECT `S#` FROM SC GROUP BY `S#` HAVING COUNT(*)<3) AS t
WHERE s.`S#` = t.`S#`;
查詢結(jié)果
  1. 查詢至少有一門課與學(xué)號為" 01 "的同學(xué)所學(xué)相同的同學(xué)的信息
    ??分析:問題分解,首先在成績表中查詢出01號同學(xué)所學(xué)的課程編號聘惦,其次在成績表中琳彩,查出包含在01號同學(xué)課程編號中的學(xué)生編號,最后部凑,再利用學(xué)生編號在學(xué)生信息表中返回學(xué)生的詳細(xì)信息露乏。因此嵌套兩層子查詢。
    方法一(子查詢):
SELECT s.*
FROM students s
WHERE s.`S#` IN (SELECT `S#` 
                 FROM SC
                 WHERE  `C#` IN (SELECT `C#`
                                 FROM SC 
                                 WHERE `S#` = '01'));

查詢結(jié)果

方法二(自聯(lián)結(jié)):
??分析:最開始兩步查詢都是在成績表進(jìn)行的涂邀,讓我想起了表的“自聯(lián)結(jié)”瘟仿,就是復(fù)制一張與自身相同的表,把它當(dāng)做另外一張表比勉,再利用聯(lián)結(jié)條件聯(lián)結(jié)劳较,這里要注意用別名將兩個(gè)表區(qū)別開,不然系統(tǒng)就會因?yàn)闊o法判斷列的歸屬導(dǎo)致報(bào)錯(cuò)浩聋。

SELECT s.*
FROM students s
WHERE s.`S#` IN (SELECT p1.`S#` 
                 FROM SC p1,SC p2
                 WHERE p1.`C#` = p2.`C#`AND p2.`S#` = '01');

??上面代碼中給SC表分別起了兩個(gè)別名p1和p2观蜗,相當(dāng)于復(fù)制了一個(gè)相同的表,它們之間利用課程編號聯(lián)結(jié)衣洁,在p2表中給出過濾條件墓捻,從p1表中查詢出所需要的學(xué)生編號。得出的結(jié)果是一致的坊夫。
注:由于聯(lián)結(jié)查詢比子查詢速度更快砖第,使得查詢性能提高,因此能使用聯(lián)結(jié)盡量使用环凿。

結(jié)果一致

  1. 查詢和" 01 "號的同學(xué)學(xué)習(xí)的課程完全相同的其他同學(xué)的信息
    ??分析:已知01號同學(xué)三門課程(01,02,03)都學(xué)習(xí)了梧兼,因此只要從其他同學(xué)中找出(至少)同時(shí)學(xué)了這三門課程的同學(xué)編號。(這里用“至少”是考慮到其他同學(xué)有可能不但學(xué)了這三門課程智听,還學(xué)習(xí)了其他課程羽杰,但其實(shí)我們只要保證這三門課程都學(xué)習(xí)了渡紫,就滿足題目要求。如果把題目要求理解成不多也不少的也學(xué)了這三門課程考赛,那還要加上一個(gè)篩選條件腻惠,比如學(xué)習(xí)的課程數(shù)等于3。)
    ??把課程表中學(xué)過01課程欲虚,02課程集灌,03課程的分別建立虛擬表,這三個(gè)表中复哆,有些同學(xué)三門課程都學(xué)習(xí)了欣喧,有些同學(xué)只學(xué)習(xí)了兩門,甚至只學(xué)習(xí)了一門梯找,如果用學(xué)號將三表聯(lián)結(jié)唆阿,得出的新表(虛擬表)就是三門課程都學(xué)習(xí)過的學(xué)生。因此
SELECT s.*
FROM students AS s
WHERE `S#` IN (SELECT SC_01.`S#`
              FROM (SELECT `S#` FROM SC WHERE `C#` = '01')AS SC_01,
                   (SELECT `S#` FROM SC WHERE `C#` = '02')AS SC_02,
                   (SELECT `S#` FROM SC WHERE `C#` = '03')AS SC_03
              WHERE SC_01.`S#` = SC_02.`S#` AND SC_02.`S#` = SC_03.`S#`)
AND `S#` <> '01';
查詢結(jié)果
  1. 查詢沒學(xué)過"張三"老師講授的任一門課程的學(xué)生姓名
    ??分析:其中一個(gè)一般想到用IN锈锤,包含在其中驯鳖。任意一個(gè)都沒有,就要用NOT IN久免,可利用子查詢浅辙,也可利用表聯(lián)結(jié)查詢。
SELECT s.Sname
FROM students AS s
WHERE s.`S#` NOT IN (SELECT SC.`S#` 
                    FROM SC,courses,teachers AS t
                    WHERE t.`T#` = courses.`T#` AND courses.`C#` = SC.`C#` AND t.Tname = "張三");
查詢結(jié)果
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末阎姥,一起剝皮案震驚了整個(gè)濱河市记舆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌呼巴,老刑警劉巖泽腮,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異衣赶,居然都是意外死亡诊赊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進(jìn)店門府瞄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碧磅,“玉大人,你說我怎么就攤上這事摘能⌒拢” “怎么了?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵团搞,是天一觀的道長。 經(jīng)常有香客問我多艇,道長逻恐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮复隆,結(jié)果婚禮上拨匆,老公的妹妹穿的比我還像新娘。我一直安慰自己挽拂,他們只是感情好惭每,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著亏栈,像睡著了一般台腥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绒北,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天黎侈,我揣著相機(jī)與錄音,去河邊找鬼闷游。 笑死峻汉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的脐往。 我是一名探鬼主播休吠,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼业簿!你這毒婦竟也來了蛛碌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤辖源,失蹤者是張志新(化名)和其女友劉穎蔚携,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體克饶,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡酝蜒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了矾湃。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片亡脑。...
    茶點(diǎn)故事閱讀 40,488評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖邀跃,靈堂內(nèi)的尸體忽然破棺而出霉咨,到底是詐尸還是另有隱情,我是刑警寧澤拍屑,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布途戒,位于F島的核電站,受9級特大地震影響僵驰,放射性物質(zhì)發(fā)生泄漏喷斋。R本人自食惡果不足惜唁毒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望星爪。 院中可真熱鬧浆西,春花似錦、人聲如沸顽腾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抄肖。三九已至久信,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間憎瘸,已是汗流浹背入篮。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留幌甘,地道東北人潮售。 一個(gè)月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像锅风,于是被迫代替她去往敵國和親酥诽。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評論 2 359

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