<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>
-