《多表查詢》教學(xué)設(shè)計(jì)
要求:1.學(xué)生對(duì)比新表和原表在學(xué)號(hào)最后幾位(50號(hào)之后)的記錄變化;
2.最后一行“(´´ rows affected) 的數(shù)字變化。
引導(dǎo):學(xué)生留意正確結(jié)果:查詢后的新表只有51個(gè)記錄,兩個(gè)原表分別含有“51、52、53、54、55”、“51、56、57、58”;有效記錄數(shù):新表是“51 rows affected”,原表分別是“55 rows affected”、“54 rows affected”。
歸納:
內(nèi)部連接的功能及注意事項(xiàng):
功能:根據(jù)指定的條件從表1和表2 中產(chǎn)生新的記錄集。
說明:
① <條件> 參數(shù)是一個(gè)邏輯表達(dá)式,通常在該表達(dá)式中會(huì)涉及到兩個(gè)表中的字段。
② 只有當(dāng)來自不同的兩個(gè)記錄滿足<條件>時(shí),才會(huì)由這兩個(gè)記錄產(chǎn)生一個(gè)新的記錄。
③ 當(dāng)來自不同表中的字段同名時(shí),指定這些字段名需要在其前面冠以表名加以區(qū)別。例如:成績2班.學(xué)號(hào), gao202.學(xué)號(hào)
擴(kuò)展部分:實(shí)際生活中有時(shí)需要即使在沒有匹配的記錄的情況下仍然能夠產(chǎn)生一個(gè)新記錄,外部連接可以解決這類問題。
學(xué)生自主探究:
2.左外部連接 LEFT OUTER JOIN
語法格式:
FROM <源表> LEFT OUTER JOIN <連接表> ON <條件>
學(xué)生上機(jī)練習(xí):
依據(jù)語法格式及內(nèi)部連接的例題和格式,用左外部連接方式,做上述例題(表1和表2的位置不變,只改查詢方式)。注意:特別留意每班最后的同學(xué),即2班51號(hào)之后的同學(xué),姓名為“掛籍”的 “52、53、54、55”號(hào)同學(xué)是沒有對(duì)應(yīng)考試分?jǐn)?shù)的,在掛籍之后的學(xué)生“56、57、58”號(hào)有成績但沒對(duì)應(yīng)的姓名。同學(xué)請(qǐng)留意在不同的查詢方式中這部分學(xué)生在查詢輸出表中的變化情況,把變化及執(zhí)行語句寫在上機(jī)練習(xí)紙相應(yīng)位置。
具體為1、學(xué)生對(duì)比左外部連接查詢的新表和內(nèi)部連接查詢所得的表在學(xué)號(hào)最后幾位(50號(hào)之后)的記錄變化;2、內(nèi)部連接及左外部連接中最后一行“(´´ rows affected) 的數(shù)字變化。
要求:分兩個(gè)同學(xué)一組對(duì)比查詢結(jié)果:每人先分別查詢左外連和內(nèi)部連接,然后一人屏幕顯示內(nèi)部連接的結(jié)果,另一人顯示左外連的查詢結(jié)果,進(jìn)行比較。或用多窗口顯示進(jìn)行對(duì)比。
廣播幾個(gè)學(xué)生的查詢結(jié)果,讓學(xué)生自己歸納出左外部連接產(chǎn)生的新表與內(nèi)部連接產(chǎn)生的表的區(qū)別,并明白為什么會(huì)有此區(qū)別。
預(yù)測(cè)上機(jī)情況,廣播時(shí)引導(dǎo)學(xué)生:
1. 能比較出區(qū)別:有效記錄數(shù)及左外連多了姓名為“掛籍”4個(gè)同學(xué)。引導(dǎo)學(xué)生找出多出的記錄字段來自哪個(gè)表?為什么其他字段的內(nèi)容為“NULL”?其他字段本來應(yīng)來自哪個(gè)表?引導(dǎo)下,由學(xué)生自己講出“4個(gè)掛籍的同學(xué)來自連接方式‘LEFT OUTER JOIN’左邊的表‘GAO202’,其他字段本應(yīng)來自‘成績2班’,但在‘成績2班’沒有‘掛籍’的這幾個(gè)同學(xué)的相應(yīng)記錄,所以填上‘NULL’。
2. 繼而進(jìn)一步引導(dǎo)學(xué)生回答下述問題:提出是否兩個(gè)原表的記錄都出現(xiàn)?與內(nèi)部連接比較:多出的記錄來自左邊的表,對(duì)比語法格式,是否明白“源表”指什么?“連接表”又指什么?學(xué)生自己歸納出左外連與內(nèi)連的區(qū)別,以及為什么有此區(qū)別。學(xué)生應(yīng)歸納內(nèi)容:不是兩個(gè)原表的記錄都出現(xiàn),只出現(xiàn)了左邊表“GAO202”的所有記錄項(xiàng),右邊表“成績2班”中出現(xiàn)的是在左表中有相應(yīng)記錄的學(xué)號(hào)為“1——51”號(hào)記錄,沒有相應(yīng)記錄項(xiàng)的學(xué)號(hào)為“56——58”號(hào)沒有出現(xiàn)。對(duì)比語法格式,知道源表即是主表,主表中的所有記錄都出現(xiàn),連接表中只有滿足條件的記錄才出現(xiàn)。
執(zhí)行:
SELECT A.學(xué)號(hào),姓名,語文,數(shù)學(xué),英語
FROM gao202 LEFT OUTER JOIN 成績2班 AS A ON gao202.學(xué)號(hào)=A.學(xué)號(hào)
描述:截取部分記錄如下:內(nèi)部連接與左外部連接
學(xué)號(hào) 姓名 語文 數(shù)學(xué) 英語
45 強(qiáng)薇 113 108 102
46 董韻 120 120 120
47 廖明熙 120 128 103
48 譚志宏 126 150 134
49 樊科毅 114 125 114
50 王智欣 113 123 109
51 裴一就 122 118 114