陈玲
(桦川县职业教育中心,黑龙江桦川154300)
《数据库应用基础—Visual FoxPro 6.0》作为职高计算机专业的一个比较重要的学科,很多学生对学习此门课程感到吃力,尤其是在创建查询和视图这一章。学习VFP6.0的基础是建立数据库、向表中存储数据。但是我们在表中存储的数据再多而不去使用它也是没有意义的,因此当我们建立数据库和表以后,目的就是要使用这些数据。在Visual FoxPro6.0中,常常利用视图和查询来对收集的数据进行处理,得到有用的信息。很多学生在使用二者时,总是产生迷惑,既然二者都能筛选出我们所需要的数据,那么只掌握其中一个不就可以了吗?带着这样的疑问,我们分析一下到底查询和视图有什么不同。
我们有这样一个例子,现有创建的一个“学生管理”数据库,并且在该数据库中创建了“原始档案”表和“在校情况”表,现在我们要把9861班的现有团员筛选出来,并输出“学号”“班级”“姓名”“性别”“政治面貌”等信息,并按“学号”升序。查询结果显示如下图所示。
利用视图输出满足条件的结果
利用查询输出满足条件的结果
从上面结果可以看出,查询和视图都可以从我们收集的数据中提取所需要的信息,它们之间到底又有什么区别呢?为了能很好地使用查询和视图,我们就必须要掌握查询和视图的概念和二者的区别。
查询是向数据库发出检索信息的请求,它通过限制一些条件从数据库中提取特定的信息。查询可以扩充用户控制数据的能力,可以让用户按需要的方式显示表中的信息。查询能单独以扩展名为.QPR的文件保存,可以在命令方式下使用,可以选择查询去向,但不能更新和修改数据,而且只能一次性使用,只能访问本地数据。查询的去向有7种:“浏览”“临时表”“表”“图形”“屏幕”“报表”“标签”。
视图是一个类似于目录的有关数据的虚拟表或者逻辑表,视图中的数据来源于数据库中的表或者其他视图。它具有普通表的一般性质,可以对它进行浏览、修改和使用。值得一提的是利用视图修改的结果可以送回数据源,进行永久的保存。但视图依赖于数据库而存在,在新建视图之前,必须先打开相关数据库。视图和查询也很相似,都可以从一个或多个相关联的表中提取有用的信息。
由此可以看出视图和查询之间虽然有很多相似之处,但是也有着本质的区别:
1.利用查询设计器生成的是.QPR文件,它是完全独立的,不依赖于任何数据库和表而存在,而视图则依赖于数据库而存在。
2.利用查询不能更新数据源,而利用视图可以更新数据源。
3.查询的去向有7种,而视图只是一个虚拟的表。
当我们了解二者的本质区别后,可以根据实际情况来创建查询和视图。如果我们创建查询,要在建立之前明确以下几点:首先确定数据源,然后确定查询条件,最后确定查询去向。而查询的建立方法有以下3种:利用向导建立查询;利用设计器建立查询;使用SQL-Select命令建立查询。
建立视图的目的也是为了能够方便地从表中众多的记录中找到我们所需的记录并可以进行数据的更新。视图有二种:本地视图和远程视图。本地视图是指以本地表或其它本地视图作为数据源而创建的视图。远程视图是指以远程数据表或远程视图作为数据源而创建的视图。而建立视图的方法只有两种:一是利用视图设计器建立,二是利用向导建立。视图建立以后,就可以使用它来显示和更新数据,并且可以作为创建视图和表单的数据源。
拿引例中筛选输出9861班团员为例,虽然使用视图和查询输出的结果是一样的,但是,查询的结果我们不能够更改,而视图中的数据是可以更改的,并能将更改的结果传回源表。在视图设计器中的“更新选项卡”中将“性别”设置为更新字段,“学号”为关键字段,再选中“发送SQL”选项后,运行视图,在创建的视图中将“林雨雁”的“性别”更改为“男”,保存退出后,打开数据源表“原始档案”表,可以看到“林雨雁”的性别被更改为“男”。
更改后表
综上所述将查询和视图的区别总结如下:
(1)相同点:
①可以从数据源中查找满足一定筛选条件的记录和选定部分字段。
②自身不保存数据,它们的查询结果随数据源内容的变化而变化。
(2)不同点:
①视图可以更新数据表,而查询不能。
②视图可访问远程数据;而查询不能直接访问,须借助远程视图方可。
③视图只能在数据库中存在;而查询不是数据库的组成部分,它是一个独立的程序文件。
④视图只能从数据库表中查找数据,而查询可以从自由表、数据库表及多个数据库表中查找数据。
根据上面的总结很多同学又会提出这样的问题,既然视图可以作为数据源,那它是不是一个表呢?它和表之间又有什么区别呢?下面再就视图与表作一下比较:
(1)相同点:
①可以作为查询与其他视图的数据源。
②与逻辑结构相似,即内容由记录组成,记录由字段组成。
(2)不同点:
①视图中不保存数据,是虚拟表。
②即使不对视图作任何修改,其内容也可能发生变化。
③视图中显示的数据可能来自一个表、多个表或其他视图。
④视图可带有参数,而表不能。
⑤视图是数据库的一种组成单元,它只能是数据库的一部分,不能单独存在;而表可以不属于任何一个数据库,即自由表。
在VFP6.0中,有很多知识点需要我们不断地对比、归纳总结,就不难掌握它们的异同,就会更好地应用于教学和实践当中。
原始档案
[1]李红,陈晓宇.数据库应用基础——Visual FoxPro 6.0(第2版)[M].电子工业出版社,2005.
[2]周察金.数据库应用基础——Visual FoxPro(第3版)[M].高等教育出版社,2011.