<table>
<tbody>
<tr>
<td width = 140px align = center><b>課題<br>名稱</b></td>
<td >第4章 單表查詢</td>
<td> <div style = "vertical-align:top;text-align:center">計劃<br>學時</div></td>
<td ><div style = "vertical-align:top;text-align:center">7 課時</div></td>
</tr>
<tr>
<td width = 140px align = center><b>內容<br>分析</b></td>
<td colspan=3>在數據庫中有一個重要的操作就是查詢數據,查詢數據是指從數據庫中獲取所需要的數據,用戶可以根據自己對數據的需求來查詢不同的數據。本章將重點講解如何針對MySQL數據庫中的一張表進行查詢。</td>
</tr>
<tr>
<td width = 140px align = center ><b>教學目標<br>基本要求</b></td>
<td colspan = 3>
1、 掌握簡單查詢,會使用SELECT語句查詢所有字段和指定的字段<br>
2、 掌握按條件查詢,會使用運算符以及不同的關鍵字進行查詢<br>
3、 掌握高級查詢,會使用聚合函數查詢、分組查詢等<br>
4、 學會為表和字段起別名
</td>
</tr>
<tr>
<td width = 140px align = center><b>教學重點</b></td>
<td colspan = 3>
1、SELECT語句<br>
2、按條件查詢<br>
3、聚合函數<br>
4、對查詢結果排序<br>
5、分組查詢<br>
6、使用LIMIT限制查詢結果的數量
</td>
</tr>
<tr>
<td width = 140px align = center><b>難點及措施</b></td>
<td colspan = 3>
1、按條件查詢<br>
2、聚合函數<br>
3、對查詢結果排序
分組查詢
</td>
<tr>
<td width = 140px align = center><b>教學方式</b></td>
<td colspan = 3>
講師課堂教學要以PPT講授為主,并結合多媒體進行教學
</td>
</tr>
<tr>
<td width = 140px align = center><b>教學過程</b></td>
<td colspan = 3>
<div style = "vertical-align:top;text-align:center"><h4><b>第一課時</b></h4></div>
<div style = "vertical-align:top;text-align:center"><h5><b>(簡單查詢)</b></h5></div>
<div style = vertical-align:top;text-align:left><h5><b>一、創設情境,導入數據庫概念</b></h5></div>
<div style= color:black>(1)老師提出需求,引出簡單查詢</div>
<div style = color:blue> 通過前面章節的學習,我們知道如何對數據進行添加、修改、刪除等操作,在數據庫中還有一個更重要的操作就是查詢數據,查詢數據是指從數據庫中獲取所需要的數據,用戶可以根據自己對數據的需求來查詢不同的數據。本課時先介紹簡單查詢。</div>
<div style= color:black>(2)明確學習目標</div>
<div style = color:blue>
1、要求學生掌握SELECT語句的基本語法格式<br>
2、要求學生掌握如何查詢所有字段和指定字段
</div>
<div style = vertical-align:top;text-align:left><h5><b>二、進行重點知識的講解</b></h5></div>
<div style= color:black>(1)SELECT語句的基本語法格式</div>
<div style = color:blue> 教師首先列出SELECT語句的語法格式:
~~~
SELECT [DISTINCT] *|{字段名1, 字段名2, 字段名3,……}
FROM 表名
[WHERE 條件表達式1]
[GROUP BY 字段名 [HAVING 條件表達式2]]
[ORDER BY 字段名 [ASC|DESC]]
[LIMIT [OFFSET] 記錄數]
~~~
然后,教師再對照上述語法格式一一介紹每個子句,由于上述語法較為復雜,在案例演示前很難完全理解,在此只要求學生有總體的印象即可,之后的幾節課會分別詳細地講解。
</div>
<div style= color:black>(2)如何查詢所有字段??</div>
<div style = color:blue> 在講解查詢操作前,需要一些準備工作。首先創建一個數據庫,再在據
庫中創建一張表,并添加數據(可參見教材例4-1)。查詢所有字段的方法有兩種,列出所有字段和使用通配符*。教師演示完成這兩種方法后(可參見教材例4-1和例4-2),還需要讓學生思考兩種方法在不同條件下使用的優缺點,最后教師總結。
<br>
</div>
<div style=color:black>(3)如何查詢指定字段?</div>
<div style = color:blue> 教師首先提出,通常情況下,我們實際一次只會用到一個表的部分字段。查詢數據時,可以在SELECT語句的字段列表中指定要查詢的字段。教師然后列出查詢指定字段時SELECT語句的語法格式并簡單講解,最后通過一個具體的案例演示只查詢表中2到3個字段的情況(可參見教材例4-3)。</div>
</div>
<div style = color:blue> </div>
<div style = vertical-align:top;text-align:left><h5><b>三、歸納總結,隨堂練習,布置作業</b></h5></div>
<div style=color:black>(1)對課堂上講解的知識點進行總結,使用隨堂練習題鞏固本節課的知識點。</div>
<div style=color:black>(2)使用系統中的測試題給學生布置作業。</div>
<div style = "vertical-align:top;text-align:center"><h4><b>第二課時</b></h4></div>
<div style = "vertical-align:top;text-align:center"><h5><b>(按條件查詢)</b></h5></div>
<div style = vertical-align:top;text-align:left><h5><b>一、回顧上節課內容,繼續講解按條件查詢</b></h5></div>
<div style = color:black>(1)對上節課留的作業進行答疑。</div>
<div style = color:black>(2)回顧總結上節課的內容,引出本節課主題</div>
<div style = color:blue> 上節課講解了如何查詢出表中數據,數據庫中包含大量的數據,很多時候需要根據需求獲取指定的數據,或者對查詢的數據重新進行排列組合,這時就要在SELECT語句中指定查詢條件對查詢結果進行過濾,本節將針對SELECT語句中使用的查詢條件進行詳細地講解。</div>
<div style = color:black>(3)明確學習目標</div>
<div style = color:blue>
1、要求學生掌握帶關系運算符的查詢<br>
2、要求學生掌握帶IN、BETWEEN AND關鍵字的查詢<br>
3、要求學生能查詢出為空值(不為空值)的數據
</div>
<div style = vertical-align:top;text-align:left><h5><b>二、進入重點知識點的講解</b></h5></div>
<div style = color:black>(1)如何使用關系運算符對數據進行過濾?</div>
<div style = color:blue> 教師首先舉一個例子,如果我想查詢名字為“張三”學生、成績大于60的學生等,應該如何實現呢?在查詢語句中也可以使用運算符。然后教師通過一張表格列出MySQL中的關系運算符(可參見教材表4-1)。最后通過操作幾個例子演示如何使用關系運算符對數據進行過濾.(可參見教材例4-4~例4-6)。
<br>
</div>
<div style = color:black>(2)如何使用IN關鍵字對數據進行過濾?</div>
<div style = color:blue>
教師首先提問,如果想查詢一班的學生,只要在查詢語句的WHERE子句用“=”就能實現,如果,想查詢一班和二班的學生如何實現?IN關鍵字用于判斷某個字段的值是否在指定集合中,如果字段的值在集合中,該字段所在的記錄將被查詢出來。然后通過操作兩個例子分別演示如何查找在指定集合中的數據和不在指定集合中的數據(可參見教材例4-7和例4-8)。<br>
</div>
<div style = color:black>(3)如何使用BETWEEN AND關鍵字對數據進行過濾?</div>
<div style = color:blue> 教師首先舉個例子,如果想要查詢2014年登陸的用戶,我們沒有辦法列出準確的集合,這時,只能使用范圍來查詢。BETWEEN AND用于判斷某個字段的值是否在指定的范圍之內,NOT BETWEEN AND用于判斷某個字段不在指定的范圍之內的值。然后,通過兩個例子的查詢操作演示如何使用BETWEEN AND關鍵字(可參見教材例4-9和例4-10)。<br>
</div>
<div style = color:black>(4)如何查詢出某字段為空的數據?</div>
<div style = color:blue> 教師首先講解,在數據表中,某些列的值可能為空值(NULL),空值不同于0,也不同于空字符串。使用IS NULL關鍵字來判斷字段的值是否為空值。然后通過兩個案例演示如何查詢出某字段為空/不空的數據(可參見教材例4-11和例4-12)。<br>
</div>
<div style = vertical-align:top;text-align:left><h5><b>三、歸納總結,布置作業</b></h5></div>
<div style = color:black>(1)對課堂上講解的知識點進行總結,使用隨堂練習題鞏固本節課的知識點。</div>
<div style = color:black>(2)使用測試題給學生布置作業。</div>
<div style = "vertical-align:top;text-align:center"><h4><b>第三課時</b></h4></div>
<div style = "vertical-align:top;text-align:center"><h5><b>(按條件查詢)</b></h5></div>
<div style = vertical-align:top;text-align:left><h5><b>一、創設情境,導入數據庫概念</b></h5></div>
<div style = color:black>(1)對上節課留的作業進行答疑。</div>
<div style = color:black> (2)回顧總結上節課的內容,引出本節課主題 </div>
<div style = color:blue> 上節課講解了一部分查詢條件的使用,本節將繼續講DISTINCT、 LIKE、AND和OR關鍵字的使用。 </div>
<div style = color:black>(3) 明確學習目標</div>
<div style = color:blue> 要求學生學會使用DISTINCT、 LIKE、AND和OR關鍵字對查詢結果進行過濾。</div>
<div style = vertical-align:top;text-align:left><h5><b>二、進入重點知識點的講解</b></h5></div>
<div style = color:black>(1)如何使用DISTINCT關鍵字? </div>
<div style = color:blue> 教師首先演示查詢學生表的性別字段,查詢的結果應該是多條“男”和多條“女”。當要求對數據進行分析時,需要過濾掉重復的數據。在SELECT語句中,可以使用DISTINCT關鍵字來實現過濾查詢結果中重復數據的功能。然后,使用DISTINCT關鍵字重新對學生表的性別進行查詢(可參見教材例4-13)。最后,還需要講解的是,DISTINCT關鍵字可以作用于多個字段,并演示DISTINCT關鍵字可以作用于多個字段的情況(可參見教材例4-14)。</div>
<div style = color:black> (2)如何使用LIKE關鍵字? </div>
<div style =color:blue> 教師首先舉一個例子,大家平時上網搜索的時候,通常打關鍵字就能查詢出想要查詢的結果。這種模糊查詢就可以通過LIKE關鍵字來實現。LIKE關鍵字可以判斷兩個字符串是否相匹配。然后,教師講解LIKE關鍵字的語法格式,在語法格式中,LIKE后需要要匹配字符串。接下來分別講解匹配字符串中的兩種通配符字符串。兩種通配符以案例演示的方式進行講解<br>
* 百分號(%)通配符:可參見教材例4-15~例4-18
<br> * 下劃線(_)通配符:可參見教材例4-19和例4-20<br>
最后,還需要講解如何匹配帶有“%”和“_”的字符串。
</div>
<div style = color:black>(3)如何使用AND關鍵字?</div>
<div style = color:blue> 到目前已經講解了很多關鍵字的使用,讓學生思考一下,這些關鍵字能否組合使用,更加精確查詢結果?MySQL中,使用AND關鍵字可以連接兩個或者多個查詢條件。然后通過兩個例子,演示AND關鍵字的使用方法(可參見教材例4-22和4-23)。</div>
<div style = color:black>(4)如何使用OR關鍵字?</div>
<div style = color:blue> OR關鍵字也可以連接多個查詢條件,所以OR關鍵字可以采用與AND關鍵字對比的方式進行講解。與AND關鍵字不同,在使用OR關鍵字時,只要記錄滿足任意一個條件就會被查詢出來。教師通過兩個案例,讓學生直觀的感受OR關鍵字與AND關鍵字查詢出結果的不同(可參見教材例4-24和例4-25)。</div>
<div style = color:black> (5)OR和AND關鍵字一起使用時,誰的優先級高?</div>
<div style = color:blue> OR和AND關鍵字也可以一起使用。教師首先講解,AND的優先級高于OR,因此當兩者在一起使用時,應該先運算AND兩邊的條件表達式,再運算OR兩邊的條件表達式。然后,通過一個案例演示OR和AND關鍵字一起使用時,查詢的結果(可參見教材例4-26)。</div>
<div style = vertical-align:top;text-align:left><h5><b>三、歸納總結,隨堂練習,布置作業</b></h5></div>
<div style=color:black>(1)對課堂上講解的知識點進行總結,使用隨堂練習題鞏固本節課的知識點。</div>
<div style=color:black>(2)使用測試題給學生布置作業。</div>
<div style = "vertical-align:top;text-align:center"><h4><b>第四課時</b></h4></div>
<div style = "vertical-align:top;text-align:center"><h5><b>(高級查詢)</b></h5></div>
<div style = vertical-align:top;text-align:left><h5><b>一、回顧上節課內容</b></h5></div>
<div style = color:black>(1)對上節課留的作業進行答疑。</div>
<div style = color:black> (2)進入本節課主題,高級查詢 </div>
<div style = color:blue> 實際開發中,經常需要對某些數據進行統計,例如統計某個字段的最大值、最小值、平均值等等。為此,MySQL提供了分組查詢規則和聚合函數,本節課將詳細講解如何使用分組和聚合函數對數據進行統計。 </div>
<div style = color:black>(3) 明確學習目標</div>
<div style = color:blue>1、使學生掌握分組查詢及聚合函數的使用</div>
<div style = color:blue>2、要求學生能夠對查詢結果進行排序</div>
<div style = color:blue>3、使學生掌握使用LIMIT限制查詢結果的數量</div>
<div style = vertical-align:top;text-align:left><h5><b>二、進入重點知識點的講解</b></h5></div>
<div style=color:black>(1)如何使用聚合函數對數據進行統計?</div>
<div style=color:blue> 教師首先舉個例子,在期末考試后,要統計班級的總分、平均分、最高分等。MySQL中用聚合函數可以對數據進行統計。然后教師列出所有的聚合函數,并對每個函數進行詳細講解
<li> COUNT():返回某列的行數,常用于求表中有多少條記錄</li>
<li> SUM():返回某列值的和,常用于計算總和 </li>
<li> AVG():返回某列的平均值</li>
<li> MAX():返回某列的最大值</li>
<li> MIN():返回某列的最小值</li>
</div>
<div style=color:black>(2)如何對查詢結果排序?</div>
<div style =color:blue> 教師首先舉例子,考試結束后下發成績,一般都會按照成績來排序。實際開發中,需要排序的地方很多,比如要求按日期排序、按分數排序、按金額排序等等。為了使查詢結果滿足用戶的要求,可以使用ORDER BY對查詢結果進行排序。然后,通過四個案例來講解不同的排序情況(參照教材例4-27~4-30)。
<li>針對某字段默認排序,默認為升序</li>
<li>使用參數ASC按照某字段升序方式排列</li>
<li>使用參數DESC按照某字段降序方式排列</li>
<li>按照某字段的升序和另一字段字段的降序進行排列</li>
</div>
<div style = color:black>(3)如何進行分組查詢?</div>
<div style = color:blue> 教師首先舉一個例子,如果要計算一個班級的男女各多少人,就要先將班級按照男、女分組。MySQL中可以使用GROUP BY按某個字段或者多個字段中的值進行分組。然后教師演示如何用GROUP BY將學生表按照性別分組(可參見教材例4-31)。之分組沒有統計的意義并不大,在開發過程中GROUP BY常與聚合函數配合使用。教師通過一個案例演示如何進行分組統計數據(可參見教材例4-32)。
最后,還有介紹一個關鍵字HAVING,它和WHERE關鍵字都用于設置條件表達式對查詢結果進行過濾,區別在于,HAVING關鍵字后可以跟聚合函數和GROUP BY一起使用(可參見教材例4-33)。
</div>
<div style = color:black>(4)如何使用LIMIT限制查詢結果的數量?</div>
<div style = color:blue> 教師首先舉個例子,大家在上網查找資料時,一般一個頁面只會顯示10-20條,通過翻頁來查看更多的資源。分頁的功能就可以用LIMIT來實現,它可以指定查詢結果從哪一條記錄開始以及一共查詢多少條信息。<br>
然后,通過兩個案例分別查詢表中前4條數據和4到8條數據(可參見教材例4-34和4-35)。
</div>
<div style = vertical-align:top;text-align:left><h5><b>三、歸納總結,隨堂練習,布置作業</b></h5></div>
<div style=color:black>(1)對課堂上講解的知識點進行總結,使用隨堂練習題鞏固本節課的知識點。</div>
<div style=color:black>(2)使用測試題給學生布置作業。</div>
<div style = "vertical-align:top;text-align:center"><h4><b>第五課時</b></h4></div>
<div style = "vertical-align:top;text-align:center"><h5><b>(常用函數的使用、為表和字段取別名)</b></h5></div>
<div style = vertical-align:top;text-align:left><h5><b>一、回顧上節課內容</b></h5></div>
<div style = color:black>(1)對上節課留的作業進行答疑。</div>
<div style = color:black> (2)引出本節課主題 </div>
<div style = color:blue> MySQL中提供了豐富的函數,通過這些函數可以簡化用戶對數據的操作。</div>
<div style = color:black>(3) 明確學習目標</div>
<div style = color:blue>1、使學生掌握MySQL中的常用函數的使用</div>
<div style = color:blue>2、要求學生學會為表和字段取別名</div>
<div style = vertical-align:top;text-align:left><h5><b>二、進入重點知識點的講解</b></h5></div>
<div style=color:black>(1)MySQL中有哪些常用函數?</div>
<div style=color:blue> 教師首先將MySQL中的函數歸類,分為數學函數、字符串函數、日期和時間函數、條件判斷函數、加密函數等等。然后通過表格的形式列出這些函數的函數名和作用(可參見教材表4-3~表4-7)。
</div>
<div style=color:black>(2)如何使用函數進行數據查詢?</div>
<div style =color:blue> 介紹完所有的函數后,以函數CONCAT(s1,s2,……)和IF(expr,v1,v2為例,通過案例對這兩個函數的使用進行演示(可參見教材例4-36和例4-37)。
</div>
<div style = color:black>(3)如何為表和字段取別名?</div>
<div style = color:blue> 在查詢數據時,如何表和字段名太長或不方便記憶,可以為表和字段取別名,這個別名可以代替其指定的表和字段。教師演示如何操作為表和字段取別名(可參見教材例4-38和例4-39)。向學生說明,為表和字段取別名在后面復雜的關系查詢時,會經常的使用,這里要熟練掌握。
</div>
<div style = vertical-align:top;text-align:left><h5><b>三、歸納總結,隨堂練習,布置作業</h5></div>
<div style=color:black>(1)對課堂上講解的知識點進行總結,使用隨堂練習題鞏固本節課的知識點。</div>
<div style=color:black>(2)使用測試題給學生布置作業。</div>
<div style = "vertical-align:top;text-align:center"><h4><b>第六課時</b></h4></div>
<div style = "vertical-align:top;text-align:center"><h5><b>(上機練習)</b></h5></div>
<div style = color:blue>上機練習主要針對本章中需要重點掌握的知識點,以及在程序中容易出錯的內容進行練習,通過上機練習可以考察同學對知識點的掌握情況,對代碼的熟練程度。</div>
<div style = vertical-align:top;text-align:left><h5><b>上機一:(考察知識點為簡單查詢、帶條件查詢)</b></h5></div>
<div style = color:black>請按照以下要求查詢goods表(商品表)中的數據。</div>
<div style = color:black>goods表結構如下:</div>
<TABLE>
<TR>
<TD>字段名</TD>
<TD>類型</TD>
<TD>描述</TD>
</TR>
<TR>
<TD>id</TD>
<TD>INT</TD>
<TD>商品編號</TD>
</TR>
<TR>
<TD>name</TD>
<TD>VARCHAR(20)</TD>
<TD>商品名稱</TD>
</TR>
<TR>
<TD>expiry_date</TD>
<TD>DATE</TD>
<TD>生產日期</TD>
</TR>
<TR>
<TD>price</TD>
<TD>FLOAT</TD>
<TD>商品價格</TD>
</TR>
</TABLE>
<div style = color:black>要求如下:</div>
1)查詢出goods表中所有字段<br>
2)查詢出goods表中生產日期在一年前的商品<br>
3)查詢出goods表中商品名稱中帶“洗”字的商品<br>
4)查詢出goods表中商品編號為2,4,6,8的商品<br>
5)查詢出goods表中price字段值為NULL的商品<br>
6)查詢出goods表中price字段不為NULL并且商品編號在4到10范圍內的商品
<br>
<br>
<div style = "vertical-align:top;text-align:center"><h4><b>第七課時</b></h4></div>
<div style = "vertical-align:top;text-align:center"><h5><b>(上機練習)</b></h5></div>
<div style = vertical-align:top;text-align:left><h5><b>上機一:(考察知識點為聚合函數、分組查詢)</b></h5></div>
<div style = color:black> 請按照以下要求查詢表student中的數據。</div>
<div style = color:black>student表結構如下:</div>
<TABLE>
<TR>
<TD>字段名</TD>
<TD>類型</TD>
<TD>描述</TD>
</TR>
<TR>
<TD>id</TD>
<TD>INT(11)</TD>
<TD>學生的編號</TD>
</TR>
<TR>
<TD>name</TD>
<TD>VARCHAR(20)</TD>
<TD>學生的姓名</TD>
</TR>
<TR>
<TD>grade</TD>
<TD>FLOAT</TD>
<TD>學生的成績</TD>
</TR>
<TR>
<TD>gender </TD>
<TD>CHAR(2)</TD>
<TD>性別</TD>
</TR>
</TABLE>
要求如下:<br>
1) 查詢出student表中所有學生的姓名和成績,并按照成績的降序排列<br>
2) 分別查詢出student表中男生、女生的平均分<br>
3)查詢出student表中的最高分和最低分<br>
4)查詢出student表中班級成績前十名、和最后十名<br>
5)查詢出student表中所有數據,其中成績>60分的該字段返回1,成績<60分的返回0.
</td>
</tr>
<tr>
<td width = 140px align = center><b>
思考題和習題</b>
</td>
<td colspan = 3>
</td>
</tr>
<tr>
<td width = 140px align = center><b>
教學后記
</b>
</td>
<td colspan = 3></td>
</tr>
</tbody>
</table>
? ? ? ?
? ? ?
? ? -