站内搜索

ACCESS入门教程(九)建立简单的查询

  现在我们已经会建立表了,还能在表中输入各种数据,包括图片和声音数据。 下面我们就开始来学习Access中另一个非常重要的内容…… 查询!

  用“查找”按钮来找数据说的是查找,并不是查询。在回答“查询究竟是什么?”这个问题之前,我们首先要知道,并不需要将所有可能用到的数据都罗列在表上,即使是一些需要计算的值,也统统先算好以后才填到表中,仍然像在纸上使用表格及其里面的数据那样,完全没有觉得Access数据库中的表和纸上的表格有什么区别。这是很多刚刚接触Access数据库的人通常会出现的情况。其实在Access数据库中的表并不是一个百宝箱,不需要将所有的数据都保存在一张表中。不同的数据可以分门别类地保存在不同的表中,就像在“客户信息表”中保存和客户资料有关的信息,而在“订单信息表”中保存和订单内容相关的信息。

  在使用表存储数据的时候我们都有侧重点,通过它们的名字就可以看出这个表是用来做什么的,这样很容易就可以知道哪些表中存储有什么数据内容。很少有人会把表的名字起成“表一”、“表二”的。如果有很多表的话,这样根本就不知道这些表存储了什么内容。所以我们在建立表的时候,首先想的就是要把同一类的数据放在一个表中,然后给这个表取个一目了然的名字,这样管理起来会方便得多。但是另一方面,我们在实际工作中使用数据库中的数据时,并不是简单地使用这个表或那个表中的数据,而常常是将有“关系”的很多表中的数据一起调出使用,有时还要把这些数据进行一定的计算以后才能使用。如果再建立一个新表,把要用到的数据拷贝到新表中,并把需要计算的数据都计算好,再填入新表中,就显得太麻烦了,用“查询”对象可以很轻松地解决这个问题,它同样也会生成一个数据表视图,看起来就像新建的“表”对象的数据表视图一样。“查询”的字段来自很多互相之间有“关系”的表,这些字段组合成一个新的数据表视图,但它并不存储任何的数据。当我们改变“表”中的数据时,“查询”中的数据也会发生改变。计算的工作也可以交给它来自动地完成,完全将用户从繁重的体力劳动中解脱出来,充分体现了计算机数据库的优越性。让我们在数据库中建立一个“查询”,看看“查询”究竟有什么用,该怎么用。

 

插图

 

  我们现在用的“查询”是“选择查询”,这种查询很好学,而且用得也很普遍,很多数据库查询功能都可以用它来实现。顾名思义,“选择查询”就是从一个或多个有关系的表中将满足要求的数据提取出来,并把这些数据显示在新的查询数据表中。而其他的方法,像“交叉查询”、“操作查询”和“参数查询”等,都是“选择查询”的扩展,课后的补充内容中会专门讲到。

  这次建立查询我们不用向导,而是直接用“查询设计视图”来建立新的查询。直接使用查询设计视图建立查询可以帮助你理解数据库中表之间的关系,让你看到要查询的字段之间是如何联系的。这些对建立一个优秀的数据库非常有帮助。其实查询向导的使用和表向导基本一样,也非常简单。

  现在我们建立一个“订单”查询,建立这个查询就是为了将每份订单中的各项信息都显示出来,包括“订单号”、“订货公司”、“货品名称”、“货物单价”、“订货数量”、“订货金额”、“经办人”和“订货时间”这些字段。

  首先要在Access中打开“客户订单数据库”,然后单击“对象”列表中的“查询”项,并在创建方法列表中单击“在设计视图中创建查询”项。

建立“查询”

  因为下面的操作都是在对“查询”这个对象进行操作,所以要将当前的对象切换到“查询”对象上。在第二课和第四课中讲过,执行任何操作都必须先选择这个操作所针对的对象。

  单击“在设计视图中创建查询”后,屏幕上出现“查询”窗口,它的上面还有一个“显示表”对话框。在上一课“建立表之间的关系”中曾经提到过“显示表”对话框。单击“显示表”对话框上的“两者都有”选项,在列表框中选择需要的表或查询。“表”选项卡中只列出了所有的表,“查询”选项卡中只列出了所有的查询,而选择“两者都有”就可以把数据库中所有“表”和“查询”对象都显示出来,这样有助于我们从选择的表或查询中选取新建查询的字段。

  单击所需要的表或查询,然后单击对话框上的“添加”按钮,这个表的字段列表就会出现在查询窗口中。将“客户订单数据库”中的“订单信息表”和“产品信息表”都添加到查询窗口中。添加完提供原始数据的表后,就可以把“显示表”窗口关闭,回到“查询窗口”中准备建立“查询”了。

查询窗口

  查询窗口可以分为两大部分,窗口的上面是“表/查询显示窗口”,下面是“示例查询设计窗口”,“表/查询显示窗口”显示查询所用到的数据来源,包括表、查询。窗口中的每个表或查询都列出了它们的所有字段,这样一目了然,方便了我们选择查询字段。下方的示例查询窗口则是用来显示查询中所用到的查询字段和查询准则。

  现在Access窗口中的菜单、工具栏都发生了变化,在Access数据库窗口中每单击一种对象都会将原来的菜单做一些相应的调整,以便在使用这种对象时能更加方便,操作更加快捷。创建查询后的菜单和工具栏就比较适合进行“查询”操作。首先是添加了“查询”菜单,它包含了一些查询操作专用的命令,比如“执行”、“显示表”、“查询类型”、“合计”等。同样这些特殊的命令也表现在工具栏上,新增加的按钮和菜单命令就能实现这些查询专用的功能。

查询窗口

  现在“表/查询显示窗口”中有我们添加的几个表,下面的“示例查询窗口”中有很多的网格,看起来很像表格,它们是查询设计表格,需要制定的查询字段就要放在查询设计表格里。表格左面的文字提示我们每行都是做什么用的,像第一行左面有“字段”字样,那这行就要输入需要查询字段的字段名。

  现在我们就要往查询设计表格中添加字段了。所添加的字段叫做“目标字段”,向查询表格中添加目标字段有两种方法:

  第一种方法可以在表格中选择一个空白的列,单击第一行对应的一格,格子的右边出现一个带下箭头的按钮,单击这个按钮出现下拉框,在下拉框中就可以选择相应的目标字段了,选中表“订单信息表”中的“订单号”字段。

  如果在几个表中都有同样的字段,要怎么区分呢?当我们在查询表格的第一格的下拉框中寻找对应目标字段时,在字段前面都有字段所在的表格/查询名,像“订单信息表.产品名称”字段就表示它是“订单信息表”中的“产品名称”字段。而不是别的表或查询中的“产品名称”字段。这样就不会混淆了。

  第二种方法更简单,如果要添加“订单信息表”中的“订货单位”字段,就先选中“订单信息表”这个表,然后在它的列表框中找到需要的字段“订货单位”,将鼠标移动到列表框中标有这个字段的选项上,按住鼠标左键,这时鼠标光标变成一个长方块,拖动鼠标将长方块拖到下方查询表格中的一个空白列,放开鼠标左键,这样就完成了将“订单信息表”中的“订货单位”字段添加到查询表格中了。在“表/查询”窗口中如果有很多对象时,这种方法就比第一种方法显得方便多了。

  如果要删除一个目标字段,将鼠标移动到要删除的目标字段所在列的选择条上,光标会变成一个向下的箭头,单击鼠标左键将这一列都选中,敲击键盘上的“DELETE”键,选中的目标字段就被删除了。

 

插图

  我们已经把需要的字段都添加到查询中了,现在来看看建立的“查询”的结果。

  上一课中讲过“表”可以在设计视图和数据表视图中切换,“查询”同样也可以在设计视图和数据表视图中切换。将表切换到数据表视图,就可以看到“查询”结果了。在Access中,在几个视图之间切换是非常简单的。只要将鼠标移动到工具栏左上角的第一个工具按钮处,就会弹出一个“视图”提示标签,单击它就可以从查询设计视图切换到数据表视图。  查询的数据表视图看起来很像上一课讲的表,但它们之间还是有很多差别的。

  在查询数据表中无法加入或删除列,而且不能修改查询字段的字段名。这是因为由查询所生成的数据值并不是真正存在的值,而是动态地从表对象中调来的,是表中数据的一个镜像。查询只是告诉Access需要什么样的数据,而Access就会从表中查出这些数据的值,并将它们反映到查询数据表中来罢了,也就是说这些值只是查询的结果。我们刚才选择目标字段就是告诉Access需要哪些表、哪些字段,而Access会把字段中的数据列成一个表反馈给我们。当然在查询中我们还可以运用各种表达式来对表中的数据进行运算生成新的查询字段。

  在查询的数据表中虽然不能插入列,但是可以移动列,移动的方法和上一课中在表中移动列的方法是相同的,而且在查询的数据表中也可以改变列宽和行高,还可以隐藏和冻结列。

 

插图

  现在的数据表还没算出每份订单所涉及的“销售总金额”,我们可以在查询中使用表达式来计算。先在查询的设计窗口中添加一个目标字段,就是查询数据表中最后的“销售总金额”字段,因为这个字段不在任何一个表中,所以必须手动将它输入到查询表格的一个空列中。

  在列的字段行首先输入“销售金额”,然后输入“:”(注意必须输入英文模式下的“:”),接着输入“[产品信息表]![产品单价]*[订单信息表]![订货数量]”,现在再切换到查询的数据表视图看看结果,查询新增了“销售总金额”列,并且自动算出了每份订单中涉及的金额。

“汇总数据”结果

  我们在写计算表达式的时候必须注意它的格式,首先是字段名称,接着是“:”然后是表达式的右边部分,在用到本查询中的目标字段时,必须将字段名用方括号括起来,在字段名前面加上“[所用表的表名]!”符号来表示它是哪个表中的字段。刚才说的都是一些简单的计算,如果要对数据进行一些复杂的计算,要计算十几个值,都这么写会很麻烦,而且如果要取某个值开方后的值,就写不出了。为了完成更多更复杂的计算,Access提供了一个专用的“表达式生成器”,它的具体使用方法将在下一课里讲。

  该做的差不多都做完了,我们把新建的查询保存起来吧。在主菜单上单击“文件”菜单中的“保存”命令,如果是第一次存储这个查询,在屏幕上就会弹出一个对话框,询问如何命名这个查询:

“保存”对话框

  先将原来标签栏中Access默认的名字删去,然后将自己取的名字添进去,单击“确定”按钮就可以了。如果在完成的时候忘了保存直接退出了,不用担心,在Access中,为了防止出现没有保存而直接退出的事情发生,会在退出查询窗口的时候自动弹出一个对话框,提示你是否保存刚才所做的工作,这时应该单击“是”按钮保存查询。如果不想保存刚才的工作,就单击“否”按钮。

  本课结束语:这一课讲了怎样利用查询设计视图建立一个“订单”的查询,怎样将表添加到查询窗口中,怎样将表中的字段添加为查询的目标字段,怎样在目标字段中进行汇总计算。如果你掌握了这些内容,但在使用中还有一些问题的话,可以看看本课课后的补充内容,会使你使用“查询”时能力更强。

补充一:利用简单表查询向导建立查询

  首先用鼠标单击数据库窗口的新建按钮,屏幕上弹出“新建查询”窗口,在列表框中选择“简单查询向导”,然后单击“确定”按钮。在出现的简单查询向导窗口上,选择新建查询中需要用到的字段名称。由于这些字段可能在不同的表或查询中,先要在表/查询下拉框的下拉菜单中选择需要的表或查询,这时在可用字段列表框中的字段就是所选择的表或查询中的全部可用字段了。用鼠标单击选中需要的“字段”,再单击“向左移”或“向右移”按钮就可以将这个选项作为新建查询中的一个选定的字段了。将所有需要的字段都选定以后,单击窗口上的下一步按钮,在下一个窗口中为新建的查询取名,并单击“完成”按钮,就可以创建一个新的查询了。

补充二:利用交叉表查询向导建立查询

  Access支持一种特殊类型的总计查询,叫做交叉表查询。利用该查询,你可以在类似电子表格的格式中查看计算值。要创建一个交叉表查询,首先在数据库窗口中单击“新建”按钮,并在弹出的窗口中单击选中“交叉表查询向导”项,然后单击“确定”按钮。在出现的“交叉表查询向导”窗口中,第一步要求选择含有交叉表的表或查询的名称。第二步要选择在交叉表中哪些字段的值用来做行标题。最多只能选择三个字段。第三步要选择在交叉表中哪些字段的值用来做列标题。第四步要选择在表中的交叉点计算出什么数值。第五步中需要为新建的查询取名,并单击“完成”按钮。这样一个交叉表查询就完成了。可以看到,交叉表查询功能是用来计算汇总值的。

补充三:使用查找重复项查询向导建立查询

  在Access中,可能需要对数据表中某些具有相同的值的记录进行检索、分类。利用系统提供的“查找重复查询向导”可以快速地完成一个“查找重复项”查询。首先在数据库窗口中单击“查询”选项卡,然后单击“新建”按钮,在“新建查询”对话框中,单击“查找重复查询向导”,单击“确定”按钮。“查找重复项查询向导”的第一步与前面的两种查询向导一样,根据需要选取查询的对象,第二步选取设为重复值的字段,系统会按照选取的字段自动对数据表中的记录进行检索,按照设定的字段分类检索。第三步选择另外查询的字段。其实,在此处选择的查询内容是用户想了解的信息,即有哪些记录具有相同的内容。在最后一个向导对话框中输入新建查询的标题,或者接受系统提供的默认值,并且选择生成查询之后的操作,即可以选择在“数据表”视图中打开查询查看信息或在“设计”视图中修改查询设计。单击“完成”按钮结束查询的建立。

补充四:使用查找不匹配项查询向导建立查询

  在Access中,可能需要对数据表中的记录进行检索,查看它们是否与其他记录相关,是否真正具有实际意义。利用“查找不匹配查询向导”可以快速地完成。首先在数据库窗口单击“新建”按钮。在“新建查询”对话框中,单击“查找不匹配查询向导”,单击“确定”按钮。向导的第一步要用户选取查询的两个对象,即记录相关的两个数据表。选定之后,单击“下一步”按钮。在下一步中,选定前面选取的两个表间匹配的字段。系统会自动根据匹配的字段进行检索,查看不匹配的记录。第三步选取能够代表查询记录的字段。可以从对话框左侧的可用字段列表向右侧窗口中选取用户需要的字段,选取没有特定的要求。在最后一个向导对话框中输入新建查询的标题,或者接受系统提供的默认值,并且选择生成查询之后的操作,单击“完成”按钮结束查询的建立。

补充五:建立SQL查询

  SQL查询是用户使用SQL语句直接创建的一种查询。实际上,Access所有的查询都可以认为是一个SQL查询,因为Access查询就是以SQL语句为基础来实现查询的功能。不过在建立Access查询时并不是所有的查询都可以在系统所提供的查询“设计”视图中进行创建。由于查询只能通过SQL语句来实现,SQL查询可以分为以下四类:联合查询、传递查询、数据定义查询和子查询。要想在Access中建立SQL查询,首先要建立一个新的查询,然后单击“视图”菜单,选择“SQL视图”命令,这样在屏幕上就出现了一个文本框,用来书写SQL语句。将用到的SQL语句输入完毕后,再单击“视图”菜单,选择“数据表视图”命令,就可以看到刚才SQL语句所起的作用了。

补充六:创建参数查询

  参数查询可以在运行查询的过程中自动修改查询的规则,用户在执行参数查询时会显示一个输入对话框以提示用户输入信息,这种查询叫做参数查询。当需要对某个字段进行参数查询时,首先切换到这个查询的设计视图,然后在作为参数使用的字段下的“准则”单元格中,在方括号内键入相应的提示文本。此查询运行时,Access将显示该提示。输入完毕后,将查询切换到数据表视图,这时在屏幕中就会出现一个对话框,提问你需要限制哪个参数。此时输入一定的条件就可以看到查出的满足条件的记录。Access 的参数查询是建立在选择查询或交叉查询的基础之上的,是在运行选择查询或交叉查询之前,为用户提供了一个设置准则的参数对话框,可以很方便地更改查询的限制或对象。当然不仅仅可以建立单个参数的查询,还可以同时为其他字段建立准则提示的查询。

补充七:设置查询属性

  要设置查询的属性,首先打开一个查询,然后点击工具栏上的“属性”按钮,在弹出的查询属性列表框中修改查询的属性。在各种查询属性中,很多都容易理解,现在介绍几种不常用但却很有用的属性:
运行权限:将这个属性设置为“所有者的”。设置了此属性后,所有用户都具有查询所有者的查看和执行查询权限,这样查询所有者才能保存更改的查询,只有查询所有者才能更改查询的所有权。
记录集类型:记录集类型包括动态集、动态集(不一致的更新)、快照三个类型。选择动态集,那么查询的数据表中的值可以修改,而且会动态的改动相应的计算值,而快照状态时则不能修改数据表中的数据。

 

插图

  • 上一篇:ACCESS入门教程(十)为查询制定规则
  • 下一篇:ACCESS入门教程(八)定义表之间的关系