4 查询
利用查询可以通过不同的方法来查看、更改以及分析数据。也可以将查询作为窗体和报表的记录源。Access数据库的查询用于在表中搜索、查看以及修改已存在的数据。用户可以为每个表建立查询,也可以将多个表的字段集中建立查询。最常见的查询类型是选择查询。选择查询将按指定的准则,从一个或多个表中获取数据,并按照所需的排列次序显示。可以在“数据表”视图中查看这些查询,还可以作为数据源用于创建数据库中的窗体和报表。除了提供根据查询条件进行的搜索功能以外,查询还可以用于汇总、分析、追加和删除数据。
例如,从职工信息和电话号码薄两个数据表中,根据职工信息中的“姓名”字段和电话号码薄中相同名字记录中的“办电”、“宅电”,组合新的记录,然后保存在新建的查询表中。
从多个表中查询时,应先定义它们之间的关系。
4.1 查询视图(Top)
查询有三种视图,即,“设计视图”、“数据表视图”和“SQL视图”(SQL即结构化查询语言)。
在“设计视图”用户可设定查询的条件等,“数据表视图”中显示的是符合查询条件的结果(返回值)。
SQL视图是一种高级的检测查询方式。该视图提供了实际的SQL代码,当执行查询时便要执行该代码。
4.2 使用查询向导创建(Top)
在一个庞大的数据库中,每次为了特定的目的使用其中特定的记录时,只有通过建立查询才能准确快捷地达到目的。创建查询可以在不用首先打开特定的表或窗体的条件下,查看记录的子集;也可以选择包含所需记录的表,并在需要的情况下添加更多的表;控制记录的子集中的那些字段显示在结果中;在字段中执行计算。
查询总的来说有两种方法,一种是使用向导创建查询;另外一种是使用设计器创建查询。在前一种方法中,包含四种使用向导创建查询方法。下面,详细介绍使用查询向导的几种方法:
1、使用“简单查询向导”:该向导用来指导用户完成简单查询的创建。此方法仅适合于简单查询的创建。用户可以用它来快速创建查询,然后用户利用其进行查询设计的更改。
2、使用“交叉表查询向导”:该向导用来指导用户创建交叉表查询。交叉表查询显示来源于表中某个字段的总结值(合计、计算以及平均),并将它们分组,一组列在数据表的左侧,一组列在数据表的上部。这样,就增加了数据可视性,更利于数据的查看。
3、使用“查找在复项查询向导”:该向导用来指导用户创建一个在单个表或者查询中查找重复取值的查询。
4、查找不匹配项查询:该向导用来指导用户创建一个在多表关系中查找不匹配或者孤立的记录。
第二种方法是使用设计器创建查询。该方法的特点是它能够让用户创建自己想要的查询,用户能够完全定制该查询。它能够创建选择查询,也能建立交叉表查询等等。
下面将具体介绍查询向导的使用方法。
4.2.1 简单查询向导(Top)
使用“简单查询向导”可以创建一个简单的查询。该向导的使用十分方便,有两种方法可以启动该向导。
第一种,在数据表窗口中,按下“查询”主题按钮,单击工具栏“新建”按钮,然后在“新建查询”对话框上,选中“简单查询向导”,再单击“确定”按钮。
第二种,在数据库窗口中,按下“查询”主题按钮,再双击使用向导创建查询。
在该向导的引导下,用户根据需要进选择有关选项即可。
4.2.2 交叉表查询向导(Top)
交叉表查询向导可以用来快速创建一个交叉表查询。交叉表查询是查询的另一种类型。交叉表查询显示来源于表中某个字段的总结值(合计、计算以及平均等),并将它们分组,一组列在数据表的左侧,一组列在数据表的上部。这样就增加了数据可视性,更利于数据的查看。
4.2.3 查找重复项查询向导(Top)
“查找重复项查询向导”可以用来创建一个查找重复项的查询。查找重复项查询在一个单个的表中显示所有的重复项,它以表中的字段作为基础。该向导会询问用户想把哪一个或者哪些字段用于检查字段项,是否重复,然后它会询问是否想要查看视图中的其他字段。这种查询帮助用户查找数据库中的重复数据,例如重复键值冲突。如果已经有一个没有惟一主关键字字段的表,现在想将一个字段作为惟一的关键字字段,但又不能确定是否有重复的记录取值那么,利用查找重复键值冲突是十分有帮助的。其使用过程很简单,且操作过程与前两个向导基本相同,此处不再叙述。
查找不匹配项查询向导可以用来创建一个查找不匹配项查询。这种查询会显示一个表中在其他表中不存在相应记录的所有记录。其中一些这类记录在一个关系的一端是没有记录的,而在关系的另一端却有记录。其他的记录是一对多或多对一关系的记录,这种关系在其他表中没有相应的记录。这种查询有助于查找在其他表中没有相应记录的记录。当要设置关系以及增强参考完整性时,使用它会很容易发现引起问题的记录。关于其创建步骤,此处不再叙述。
4.3 利用“设计视图”(查询设计器)创建多表查询(Top)
使用查询设计器,用户可以创建用户所需要的查询。它可以创建选择查询,也可以创建交叉表查询,还可以创建每次运行时都会提示准则的参数查询、SQL查询、操作查询、自动填人数据的“自动查阅”查询等等。
4.3.1 创建方法(Top)
使用设计视图来创建多表查询的第一步是,选择查询要用到的表或查询,并将其添加到该查询的“字段列表”窗格中。
例如,需以“职工信息一览表”表中的“姓名”、“性别”、“工作时间”字段,与“房屋公积金”中的“合计”字段组成一张“房屋公积金统计表”的查询表
方法是:
⑴在数据库窗口中,按下“查询”主题按钮,单击“使用设计器创建表”,打开查询设计器(见右图)。
⑵在“显示表”对话框中,选择“职工信息一览表”和“房屋公积金”,然后单击“添加”。
⑶首先建立两张之间的关系,对应是字段是“姓名”。
⑷将需要添加到查询中的字段上双击,即可将它们添加到设计网格的字段行中。
⑸为新建的查询表起个名保存即可。也可直接转换到数据表视图中,察看该查询表。
4.3.2 查询的基本结构(Top)
通过介绍查询的基本结构,重点讨论如何使用查询设计器。
1.字段
每个选择查询至少返回一个字段。在设计网格子窗口的网格中出现的字段是当执行查询时出现的字段,或者是在排序和为查询设置准则时要用到的宇段。
在设计网格中,“显示”复选框决定了在查询的数据表中是否显示该字段。
2.排序
假设需要按某个特定的次序表示查询结果,则可按该字段进行排序Access 在查询设计器中提供了“排序”属性行的功能来实现这个目标。
“设计网格”的“排序”属性行为查询指定了排序顺序。及用户可自选选择升序、降序或不排序。
也可为不显示的字段设定排序方式,从而控制查询的返回值。
3.准则
使用准则可以为出现在“设计网格”中的每一个字段指定一个准则,以确定查询返回哪些记录。当执行准则时,只有匹配指定准则的记录才会由查询返回。
对于每个字段,可以为它们指定多个准则,即可以在“准则”属性行下面的各行指定准则。这些“额外的”准则取值之间是OR关系,这意味着当字段的取值匹配了准则区中任何一行时,都会返回该记录。
例如,规定查询表(返回值)中,只包含1966-1-1 前出生的职工。设定方法:
将光标移入“准则”后,单击右键,再单击“生成器”(或者单击“查询设计”工具栏上的“生成器”命令按钮)。
然后在“表达式生成器”对话框(见右图)上设定准则。
提示:可以为不显示的字段设定准则,来控制查询的返回值。
4.查询属性
与Access数据库的其他对象一样,查询也有属性。如果要查看查询相关的属性,应右击查询设计器上部的空白部分。然后,单击“属性”。
查询属性窗口的大小是可以调整的。其中:
“说明”属性是一个说明该查询的字符串。在“数据库”窗口的查询标签上,当处在详细信息视图中或者在从快捷菜单上选择了属性之后,会看到同样的说明文字。
“输出所有字段”属性指定了是否在查询的数据表中显示网格中的所有字段。将此属性设置为“是”,与将网格中每个字段的“显示”复选框设置为选中的作用是相同的。
“推一值”和“惟一的记录”属性用来删除查询结果数据中的重复的记录值或者重复的记录。
关于其他属性的功能和作用,用户可以参看联机帮助。
5、字段属性
与表一样,查询中的字段也有单个的属性。属性影响了字段在数据表视图中的显示。在查询中使用的、但不在结果中显示的字段(即它们没有选取“显示”框的标记)没有可以设置的属性。
选项 功能
说明 指定查询中字段的说明
格式 指定用于显示字段中数据的格式的字符串
输入掩码 指定在字段中编辑数据时的掩码,即输人格式。对于不符合输人格式的输人,Access将拒绝接受。该属性仅对可以编辑的字段生效。
标题 指定用于显示该字段的标签标题(对于窗体和报表)或者列标头(对于数据库视图)
小数点位置 指定用于显示的小数点位数(对于不是整型数据的字段)
字段从其所在的表中继承了属性,在“设计网格”视图下端的网格中选择该字段后,单击“视图”·“属性”,打开“字段属性”对话框。
查询中的字段的所有属性都是空的。这是因为在表设计中的取值对于该查询是充分的。用户可以通过指定查询字段的属性设置值覆盖表的属性设置。例如,用户可以在查询的数据表视图中用一种特殊的格式显示日期。这需要在字段的“格式”属性中输人一个格式表达式。
上表列出了可用的一些属性来说明这些字段属性的功能作用。
4.3.3 添加计算结果字段(Top)
在查询中,Access允许用户添加计算字段。例如,需在一个查询表添加一个职工年龄的计算字段。方法是:
⑴在查询设计器中下部网格的一个空列的字段框中输入“(date()-[出生年月])/365.25”后,将光标移出该框。该框将立即显示“表达式1:(date()-[出生年月])/365.25”(一年大约365.25天)。该字段的值是至当天的年龄值,以年为单位。
⑵将“表达式1”改为所需的字段名。
⑶选中该列,单击“视图”·“属性”,打开字段属性对话框,在“格式”框中选定“固定”(显示小数点两位)。
4.3.4 创建带有参数的通用查询(Top)
参数查询是这样一种查询,从查询设计器转到显示查询表时,或者在查询表中重新排序时,均会显示专门的对话框,提示用户键入有关信息。
例如,有个工资字段,查询时要求查询出工资额介于一定范围的记录。
设置方法是:在查询设计器的准则框中键入“Between[最低工资额]And[最高工资额]”。注意:这段整体文字不能加括号,方括号中的文字将在专门的对话框上显示。
设置完成后,转到查询表视图时,会要求用户输入最低工资额和最高工资额。如果要在该查询表中重新排序也会要求这样做。
4.4 其它的查询特性(Top)
4.4.1 Group By查询(Top)
另外,其中的 Group By可以用来定义要执行计算的组。例如,如果要按性别显示职员信息,用户应对“性别”字段选定 Group By。
Expression可以用来创建表达式中包含合计函数的计算字段。通常在表达式中使用多个函数时,将创建计算字段。Where可以用来指定不用于分组的字段准则。如果选定这个字段选项,Access
2000中文版将清除“显示”复选框,隐藏查询结果中的这个字段。
4.4.2 Total查询(Top)
Access在查询中使用总计特性可以执行其他一些汇总选项。打开或者新建一个选择查询时,一般在选择查询中“总计”行不显示,可以单击工具栏上的“合计”按钮。查询设计器中将增加一行“总计”。然后,单击该行某个编辑框右侧的下箭头,可以显示出有12个选项的列表。12个选项中的9个是合计函数。其中,sum和count函数是经常被使用的。其中有两个不易理解的函数:
StDev函数表示字段的标准偏差值,Var函数表示字段的方差值。
4.4.3 查询多个表(Top)
前面介绍了表关系,一般情况下,使用单表来执行查询操作,而在有关系的几个分离的数据表之间,可以前面介绍的多表查询模式来查询数据库中的数据。这些数据来源于多个数据源,这些数据源可以是数据表,也可以是数据的查询。特别要强调的一点是,查询多个表,应该基于这些表的参照完整性。
对于多个表,可以创建许多高级的查询,例如外部链接、子查询、自链接等等。这些类型的查询是十分复杂的,但可以很轻松地使用 Access 2000来创建。
主页 (TOP) |