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