对比教学法在VFP的SQL语言教学中的应用
2014-06-10孟杰
孟杰
摘 要:在“Visual FoxPro程序设计”的课程教学中,SQL语言是重点同时又是难点。作者通过多年的教学实践,探索出了一个通过使用可视化的查询设计器和其同步生成SQL语句进行对比的教学方法。该文对这一方法进行了论述,并以一个实例进行了说明。
关键词:SQL 可视化 对比教学方法
中图分类号:G633 文献标识码:A 文章编号:1674-098X(2014)03(a)-0159-01
Visual FoxPro(以下简称VFP)是可视化数据库系统。它具有完备的工具、良好的界面、简单的存取方式,良好的兼容性等特点。很多高校,都将其作为一门必修课程。
在学习VFP课程中,数据的查询是一个非常重要的内容。VFP对于数据的查询有三种方式,即SQL语句、查询文件、视图文件。而在VFP程序设计课程的实际教学过程中SQL语言即是重点又是难点。说其重点是因为SQL语句强大的查询功能,灵活的使用方法和其跨平台性等。但是对于非计算机专业的学生来说它又是难点,因为学生对于一般的计算机课程,主要使用的都是可视化的操作方式,而不是命令行式的操作方式。因此对于SQL语言就会感觉陌生进而就具有畏难和排斥情绪,导致学习起来就会很困难。
1 Visual FoxPro的查询方式
在VFP课程的教学中作为老师我感觉到学生对于VFP中提供的可视化的设计器比较容易接受。利用它们学生可以快速地创建和修改各种组件,包括数据库、数据表、查询等。在VFP中创建查询有三种方法:查询向导、查询设计器和SELECT语句[1],但不论使用何种方式来创建查询,其最终都会生成一条SELECT语句,查询向导和查询设计器本质上是SELECT语句的可视化设计方法。
SQL查询语句(简略格式):
SELECT[字段名…][TOP<表达式>] FROM[<表名>…] [INNER JOIN <表名>ON<联接条件>…];
[WHERE<联接条件>…][GROUP BY<列名>…][HAVING<筛选条件>…];
[ORDER BY<字段名>…] [INTO TABLE<新表名>][2]
通过SELECT语句中的参数设置,可以从所要查询的数据表中筛选出满足条件的记录。而在查询设计器中则是通过添加数据表,选取字段、建立联接、设置条件等操作来实现的,其中每一个选项卡实际上都对应了SELECT语句中的一个或几个参数。
2 对比教学方法实例
VFP系统中的提供了查看SQL语句的功能,根据学生对查询设计器这种可视化操作比较容易掌握这一特点,作者探索出了一个可视化的SQL语言和命令语句式的SQL语言的对比教学方法。本文将以一个实例子来说明这种教学方法的应用。
在实例中用到数据库jxgl.dbc中的三个表Student:学生信息表,courses:学生成绩表,scores:课程代码表。实例查询201301班选课数量大于2门且平均成绩不低于60分的前10名同学的学号、姓名、平均成绩和选课门数,查询结果按平均成绩降序排序并存储到表xkb中。这是一个相对较复杂的查询,几乎涵盖了SELECT命令的所有参数,具有典型的代表性。
SQL语句如下:
SELECT TOP 10 Student.学号,姓名,AVG(Scores.成绩) AS 平均成绩,COUNT(*) AS 选课门数;
FROM courses INNER JOIN scores INNER JOIN student;
ON Student.学号 = Scores.学号 ON Courses.科目代码 = Scores.科目代码;
WHERE Student.班级代码 =“201301”;
GROUP BY Student.学号 HAVING 选课门数 >= 3 AND 平均成绩 >= 60 ORDER BY 3 DESC;
INTO TABLE xkb.dbf
如果使用查询设计器,要通过一系列操作实现查询。首先添加三个表,并确定各表的联接条件,添加及生成所需字段,设置筛选、排序及分组条件最后提取出前10条记录并输出结果。虽然操作步骤较多,但是相对于命令行式的SQL语言来说比较直观学生更容易理解。
该文讲述的对比教学方法的要点是:在查询设计器中的每一步操作后,通过窗口菜单“查询→查看SQL”命令或查询设计器快捷菜单中的“查看SQL”命令,可查看系统生成的相应的SQL语句,随着查询设计器的操作的进行,学生便能观察到一个完整的SELECT语句的实现过程。
本实例的教学过程如下:
第一步,打开查询设计器,依次加入表student、scores、cour ses,并确认各表的联接条件。然后点击菜单“查询→查看SQL”,就可查看上述操作对应的SQL语句。
第二步,在“字段”选项卡中选取“姓名”字段和“学号”字段,再通过“函数和表达式”依次生成“平均成绩”字段,语句为“AVG(成绩)AS 平均成绩”,“选课门数”字段,语句为“COUNT(*)AS 选课门数)”。此时可查看对应的SQL语句。
第三步,在”筛选”选项卡中,设定筛选条件。此时可看到新增的SQL语句“WHERE Student.班级代码=“201301”。
第四步,在“分组依据”选项卡中,选取分组字段,并设置其满足的条件。之后可查看到新增的SQL语句:“GROUP BY Student.学号 HAVING 选课门数>2 AND 平均成绩>= 60”
第五步,在“排序依据”选项卡中,选取排序字段和设置排序选项,此时可查看新增SQL语句“ORDER BY 3 DESC;”。其中的3表示第3个字段即“平均成绩”,DESC表示降序。
第六步:在“杂项”选项卡中,设置输出记录数值10,此时可看到SQL语句第一行中又添加了一个参数“TOP 10”。
第七步:依次点击菜单项“查询→查询去向”在查询去向窗口中点击“表”选项卡,在表名所在的文本框中输入“xkb”再点击“确定“按钮。此时我们会看到在SQL查看窗口下面新增一行语句“INTO TABLE xkb.dbf”。
至此,一个完整的SQL语句已经生成。通过执行所创建的查询或者SQL语句,我们可以得到相同的查询结果。
3 结语
本实例中几乎涵盖了SELECT语句的所有参数,如果采用命令行式的方式直接教学,那会使学生接受起来非常困难。而采用查询设计器这种可视化的方式进行对比教学,则学生接受起来却要相对容易的多。作者经过多次的教学实践取得了良好的教学效果。
参考文献
[1] 张小莉,敬西.VisualFoxPro程序设计实例教程[M].重庆:重庆大学出版社,2009.
[2] 王娟,祝群喜,盛娟.数据库基础及Visual FoxPro程序设计教程[M].沈阳:东北大学出版社,2012.endprint