3.1 查询对象概述
在Access数据库的6个成员对象中包括了查询对象。查询对象的实质是SQL命令,关于SQL将在3.4节详述。现在需要了解的是:虽然查询的执行结果在屏幕上以数据表的形式显示数据,但查询本身并不包含数据,所显示的数据是查询对象在执行时从相关数据表中“抽取”的。
Access提供了查询向导、查询设计视图和SQL视图等界面用以生成查询对象。一些日常的、通用的查询可以在向导帮助下生成;对较复杂一些的查询要求,可以在可视化的查询设计视图环境下自己定义完成,或者先用向导生成查询,再在设计视图中予以完善;更复杂的查询则可以在SQL视图中直接编写SQL命令实现。当然最自由、最强大的查询则是用VBA编写程序直接访问数据表,可以到达“无所不能查”的境界;查询的最高境界是SQL命令与VBA代码的结合,可以用最便捷的方法查找关系最复杂的数据。
概括起来,查询能实现以下功能需求:
(1)根据某种规则,查找数据库中的部分数据,如找出所有考古学研究方向的男同学。
(2)为减少冗余,通常将数据分布在数据库的若干个表中,使用查询可以观察到它们连接在一起时的状态,例如在显示“研究生”表中的记录时,希望能同时显示其导师的名字、职称和所在的系。
(3)对数据表中的某些数据进行计算、分类、汇总,如根据导师的年龄推算他们的出生年份,统计“研究生”表中男、女同学的入学成绩的平均分,以及高于平均分的研究生姓名。
(4)将上述操作的显示结果转换成一个真正的数据表保存。
(5)将数据表作转置并进行分类统计,相当于制作Excel的透视表。
(6)根据某种规则,成批更新、成批删除表中的数据,或者将筛选出的数据追加到另一个数据表,等等。
Access的查询对象需要用户为其提供数据来源,查询的数据源可以是数据表,或者是已经建立的查询对象。
注意:本章中的例题以“导师”表、“研究生”表和“系”表作为查询对象的数据源,为不失一般性,删除研究生马力、李卫星和赵小刚的导师编号,使他们暂无导师,同时让“导师”表中的李小严不带研究生,即“研究生”表的“导师编号”字段不出现104。