一种可视化的SQL语言对比教学方法在VF教学中的应用
2009-09-06刘容
刘 容
摘要:在“Visual FoxPro程序设计”课程中,SQL语言的教学既是一个重点又是一个难点。作者经过多年的教学实践,探索出了一个通过使用查询设计器和SQL语言进行可视化对比教学的方法,使学生既学会了查询设计器的使用,更重要的是很直观、很容易地掌握了SQL语言中各种参数的正确使用。本文对这一方法进行了论述,并通过一个实例进行了说明。
关键词:SQL语言;可视化;对比教学方法
中图分类号:G642 文献标识码:B
1引言
在数据库技术飞速发展的今天,Visual FoxPro作为优秀的小型数据库管理系统,因其具有操作界面友好、功能强大、语言精炼、简单易学、便于实现应用系统的快速开发等特点,仍然受到众多用户的青睐。由于Visual FoxPro自身的特点和作为各类计算机等级考试的一个方向,在很多高等院校,都将“Visual FoxPro程序设计”作为非计算机专业综合学习数据库技术和高级程序设计语言的一门课程。
“Visual FoxPro程序设计”课程中的一个重要的内容是数据的查询,通过执行SQL语句、运行查询文件、运行视图文件三种方式都可以对数据进行查询。而其中SQL的两种使用方法:交互式查询和宿主式查询,既适合于非计算机专业人员又适合于软件开发人员学习,使SQL查询得到广泛的应用。在“Visual FoxPro程序设计”课程中,SQL语言的教学既是一个重点又是一个难点。其难点主要在于:非计算机专业的学生从开始接触到计算机操作时,主要使用的是图形界面的操作方式,对于使用命令的操作方式非常生疏,学习起来非常困难。而SQL语言主要是由命令及参数组成,掌握不好命令及参数的使用就不能正确执行查询、得到结果。特别是SQL语言中的数据查询,虽然只有一条SELECT语句,但是该语句却实现了数据库的核心操作,是用途最广泛的一条语句,具有灵活的使用方法和丰富的功能。熟练地掌握这条命令的使用不仅能在Visual FoxPro中以交互式方式和程序方式方便地进行各种数据查询,而且为进一步学习使用其他数据库管理系统的知识和操作打下一个良好的基础。
2VF中三种查询方式
从“Visual FoxPro程序设计”课程的教学实践中可以感受到,学生对可视化的操作环境和操作方法比较容易接受。而Visual FoxPro中提供了众多的设计器都是一种可视化工具,利用它们可以快捷地创建和修改应用系统中的各种组件,包括数据库、数据表、查询、表单和报表等。在Visual FoxPro,创建查询使用三种方法:查询向导、查询设计器和SQL的SELECT语句,不管是使用查询向导还是使用查询设计器创建查询,其最终都是要生成一条SQL的SELECT语句,查询向导和查询设计器在本质上是SQL的SELECT语句的可视化设计方法。在SQL语言中,数据的查询是通过下列一条语句实现的:
SELECT [ALL/DISTINCT];
[TOP <表达式> [PERCENT]][<别名>.]<列表达式>[AS <栏名>];
[,[<别名.>]<列表达式>[AS <栏名>]…];
FROM [<数据库名!>]<表名>[,[<数据库名!>]<表名>…];
[INNER/LEFT/RIGHT/FULL JOIN [<数据库名!>]<表名> [ON <联接条件>…]];
[[INTO <新表名>]/[TO FILE <文件名>/TO PRINTER/TO SCREEN]];
[WHERE <联接条件>[AND <联接条件>…];
[AND/OR<筛选条件>[AND/OR<筛选条件>…]]];
[GROUP BY <列名>[,<列名>…]][HAVING <筛选条件>];
[ORDER BY <列名>[ASC/DESC][,<列名>[ASC/DESC]…]]
在这条SELECT语句中,有很多参数,使用这些参数,可以确定参加查询的数据表及其联接的条件;获取相关的字段和字段的表达式;筛选出满足条件的记录;对记录进行分组和排序等操作。而在查询设计器中是通过添加数据
表,设置字段、联接、筛选、排序依据、分组依据、杂项选项卡中的内容来实现的,其中每一个选项卡实际上都对应了SELECT语句中的一个或几个参数的功能。见表1。
3对比教学方法实例
由于在查询设计器中提供了查看SQL语句的功能,通过上述查询设计器中的选项与SELECT语句及参数的对比,加上学生对查询设计器比较容易掌握这一特点,这就为我们提供了一个可视化的SQL语言对比教学方法。本文将以一个实例(参考文献[2])来说明这种教学方法的应用。
在实例中用到两个数据表:学生登记表(学号,姓名,性别,出生日期,入校总分)、学生成绩表(学号,课程编号,成绩),要求建立一个包含有“姓名、年龄、平均分、总分”的男生成绩查询,要求查询结果中只包含平均分在75分以上的学生,并按总分降序排列,输出前3名学生成绩查询结果。这是一个比较复杂的查询,几乎涵盖了SELECT 命令的所有参数,具有比较典型的代表性,其SQL命令如下:
SELECT TOP 3 学生登记表.姓名;
YEAR(DATE())-YEAR(学生登记表.出生日期)AS年龄;
AVG(学生登记表.成绩)AS 平均分, SUM(学生登记表.成绩)AS 总分;
FROM 学生登记表, 学生成绩表 WHERE 学生登记表.学号=学生成绩表.学号 AND 学生登记表.性别=”男”;
GROUP BY 学生登记表.学号 HAVING 平均分>=75;
ORDER BY 总分 DESC
如果使用查询设计器,要通过一系列步骤来实现查询。首先要加入两个表,并确定两表的联接条件,通过表达式生成新的字段:年龄、平均分和总分;筛选出性别为男记录;以学号进行分组,提取平均分在75分以上的记录,再按总分进行降序排列,最后取出前3条记录。使用查询设计器来完成上述查询,虽然操作步骤较多,但是相对于SQL命令来说,比较直观,学生理解更容易。本文介绍的对比教学方法的要点是:在查询设计器中的每一步操作后,通过使用主窗口的查询菜单中的“查看SQL”命令或在查询设计器中使用快捷菜单中的“查看SQL”命令,可查看到系统生成的相应的SQL命令,随着查询设计器的分步操作的进行,可使学生观察到一个完整的SELECT语句的实现过程。本实例的教学过程如下:
第一步,打开查询设计器,加入学生登记表和学生成绩表,在“联接”选项卡中,确认其两表的联接条件。第二步,在“字段”选项卡中选取“姓名”字段,再通过“函数和表达式”生成器生成“年龄”、“平均分”和“总分”字段。前二步的操作结果见图1。在图1中,选取菜单“查询/查看SQL”,可见到上述操作已生成对应的SQL语句,如图2。在图2中,前3行是选取和生成的四个字段,后2行是两表的联接及联接条件。其联接条件也可写成:
FROM学生登记表,学生成绩表 WHERE 学生登记表.学号=学生成绩表.学号
第三步,在“筛选”选项卡中,生成如图3所示的筛选条件。同时在SQL语句窗口中可以看到增加了一个参数选项,见图4中第6行。第四步,在“分组依据” 选项卡中,选取分组字段,并生成如图5所示的分组后要满足的条件。这时,相应的在SQL语句窗口,又增加了一个参数选项,见图6中第7行和第8行。
第五步,在“排序依据”选项卡中,确定如图7所示的“排序条件”和“排序选项”。在SQL语句又增加了一个参数选项,见图8中第9行。其中的4表示第4个字段,
既“总分”字段,该参数也可写为:ORDER BY 总分 DESC最后,在“杂项”选项卡中,确定满足上述条件的前3条记录,如图9所示。在SQL语句窗口中,可以看见,在第一行中,又添加了一个参数TOP3。至此,一个完整的SQL语句已经生成,见图10。通过运行,可以得到正确的查询结果。
4结束语
本文实例中的查询,几乎涉及到SQL查询语句的所有参数,如果直接采用SQL语言进行教学,学生接受起来很困难,而用查询设计器这种可视化的方式进行对比教学,虽然步骤比较多,但学生接受起来相对容易。通过使用查询设计器和SQL语言进行可视化的对比教学方式,使学生既学会了查询设计器的使用,更重要的是很直观、很容易地掌握了SQL语言中各种参数的正确使用,作者经过多次的教学实践,取得了良好的教学效果。
参考文献:
[1] 杜小丹,刘容. Visual FoxPro程序设计教程[M]. 北京:高等教育出版社,2007.
[2] 刘容,杜小丹. Visual FoxPro程序设计上机实验及习题集[M]. 北京:高等教育出版社,2007.
An SQL Language Teaching Application of a Visual Comparison Method in VF Teaching
LIU Rong
(Chengdu university, Chengdu 610106, China)
Abstract: For Visual FoxPro, the teaching method of SQL is very important and hard project. The author of the paper, who after many years practice in the area, developed a way by use of Visual SQL Cross and Interrogating Developer which will demonstrate SQL essential directly and easily. The paper give you a new view about this teaching method through a detail example.
Key words: SQL language; visual; cross teaching