版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4.1查询
4.2使用向导创建选择查询4.3使用查询设计视图
4.4编辑和修改查询
4.5参数查询
4.6使用查询执行计算
4.7创建交叉表查询
4.8创建查找重复项查询
4.9使用向导查找表之间不匹配项的记录4.10操作查询
动手做实验第4章
查询设计
4.1查
询
查询是数据库处理和分析数据的工具。查询是在指定的(一个或多个)表中,根据给定的条件从中筛选所需要的信息,供使用者查看、更改和分析使用。用户可以使用查询回答简单问题、执行计算、合并不同表中的数据,甚至添加、更改或删除表中的数据。
查询是Access数据库的一个重要对象,通过查询筛选出符合条件的记录,构成一个新的数据集合。尽管从查询的运行视图上看到的数据集合形式与从表视图上看到的数据集合的形式完全一样,但是这个数据集合与表不同,它并不是数据的物理集合,而是动态数据的集合。实质上,查询中所存放的是如何取得数据的方法和定义,因此说查询是操作的集合,相当于程序。
1.查询的功能
概括地说,查询具有如下功能:
(1)查看、搜索和分析数据。
(2)追加、更改和删除数据。
(3)实现记录的筛选、排序、汇总和计算。
(4)作为报表和窗体的数据源。
(5)对一个和多个表中获取的数据实现连接。
2.查询的类别
在Access中,根据对数据源操作方式和操作结果的不同,可以把查询分为五种,它们是选择查询、参数查询、交叉表查询、操作查询和SQL查询。
1)选择查询
选择查询是最常用的,也是最基本的查询。它是根据指定的查询条件,从一个或多个表中获取数据并显示结果。使用选择查询还可以对记录进行分组,并且对记录作总计、计数、平均值以及其他类型的总和计算。
2)参数查询
参数查询是一种交互式查询,它利用对话框来提示用户输入查询条件,然后根据所输入的条件检索记录。将参数查询作为窗体和报表的数据源,可以方便地显示和打印所需要的信息。
3)交叉表查询
使用交叉表查询可以计算并重新组织数据的结构,这样可以更加方便地分析数据。交叉表查询可以计算数据的总计、平均值、计数或其他类型的总和。
4)操作查询
操作查询用于添加、更改或删除数据。操作查询共有四种类型:删除、更新、追加与生成表。
(1)删除查询。删除查询可以从一个或多个表中删除一组记录。
(2)更新查询。更新查询可对一个或多个表中的一组记录进行全部更改。使用更新查询可以更改现有表中的数据。
(3)追加查询。追加查询可将一个或多个表中的一组记录追加到一个或多个表的末尾。
(4)生成表查询。生成表查询利用一个或多个表中的全部或部分数据创建新表,例如,在教学管理中,生成表查询用来生成成绩不及格的学生的信息表。
5)
SQL查询
SQL(结构化查询语言)查询是指使用SQL语句创建的查询。有一些特定的SQL查询无法使用查询设计视图进行创建,而必须使用SQL语句创建。这类查询主要有三种类型:传递查询、数据定义查询、联合查询。
4.2使用向导创建选择查询
在使用数据库时,有时可能希望查看表中的所有数据,但有时可能只希望查看某些字段列中的数据,或者只希望在某些字段列满足某些条件时查看数据。为此,可使用选择查询。创建选择查询有两种方法:使用查询向导和在设计视图中创建查询。使用查询向导是一种最简单的创建查询的方法。
1.从单个表中查询所需的信息
【例4.1】从“教师”表中查找“姓名”、“性别”、“职称”和“系别”等信息。操作步骤如下:
(1)打开“教学管理”数据库中的“教师”表,在“创建”选项卡上的“查询”组中单击“级”(查询向导)命令。
(2)在打开的“新建查询”对话框中选择“简单查询向导”选项,然后单击“确定”按钮,如图4.1所示。
图4.1“新建查询”对话框(3)如图4.2所示,在打开的“请确定查询中使用哪些字段”对话框的“表/查询”列表框中选择要使用的“表:教师”;在“可用字段”窗格中选中“姓名”,单击
按钮,把它发送到“选定字段”窗格中;用同样的方法,依次选中“性别”、“职称”和“系别”字段,把它们发送到“选定字段”窗格中,然后单击“下一步”按钮。
图4.2“请确定查询中使用哪些字段”对话框(4)在打开的“请为查询指定标题”对话框中,使用默认标题“教师查询”或者自行输入标题。使用默认设置“打开查询查看信息”,单击“完成”按钮,如图4.3所示。关闭查询向导对话框后,在打开查询的数据表视图中即可看到查询结果。
图4.3“请为查询指定标题”对话框2.从多个表中查询所需要的数据
【例4.2】从“学生”表、“选课”表和“课程”表中查询学生选课的具体信息,包括“学号”、“姓名”和“课程名”等字段。操作步骤如下:
(1)打开“教学管理”数据库,在“创建”选项卡上的“查询”组中单击“查询向导”命令。
(2)在打开的“新建查询”对话框中选择“简单查询向导”选项,然后单击“确定”按钮,参见图4.1。
(3)如图4.4所示,在打开的“请确定查询中使用哪些字段”对话框的“表/查询”列表框中选择“表:课程”;在“可用字段”窗格中双击“学号”字段,该字段被发送到“选定字段”窗格中;分别选择“学生”表和“课程”表,把两个表中的“姓名”字段和“课程名”字段发送到“选定字段”窗格中,然后单击“下一步”按钮。
图4.4“请确定查询中使用哪些字段”对话框(4)在打开的“请为查询指定标题”对话框中,设置标题为“选课查询”,然后单击“完成”按钮,如图4.5所示。查询结果如图4.6所示。
图4.5“请为查询指定标题”对话框图4.6学生选课查询结果
初学者感到困惑的是,既然教学管理数据库中已经有了“选课”表,为什么还需要创建“选课”查询?请读者打开选课表和选课查询比较一下,就会发现选课表中显示的是课程号和学号,这样浏览起来不直观。而通过选课查询把三个表中相关字段的数据重新组织起来,用课程名称代替课程号,并增加了姓名字段,这样浏览数据就非常直观了。这也体现了Access中查询的作用,而使用筛选是无法实现的。
4.3使用查询设计视图
查询设计视图是创建、编辑和修改查询的基本工具。
使用查询向导虽然可以快速地创建查询,但是对于创建指定条件的查询、创建参数查询和创建复杂的查询,查询向导就不能完全胜任了。这种情况下,可以使用查询设计视图直接创建查询,或者使用查询向导创建查询后,在设计视图中根据需要进行修改。1.查询设计视图的基本结构
查询设计视图主要由两部分构成,上半部为“对象”窗格,下半部为查询设计网格,如图4.7所示。“对象”窗格中,放置查询所需要的数据源表和查询。查询设计网格由若干行组成,其中有“字段”、“表”、“排序”、“显示”、“条件”、“或”以及若干“空行”。
(1)字段行:放置查询需要的字段和用户自定义的计算字段。
(2)表行:放置字段行的字段来源的表或查询。
(3)排序行:对查询进行排序,有“降序”、“升序”和“不排序”三种选择。在记录很多的情况下,对某一列数据进行排序将方便数据的查询。如果不选择排序,则查询运行时按照表中记录的顺序显示。
(4)显示行:决定字段是否在查询结果中显示。在各个列中,有已经“勾选”了的复选框。默认情况下所有字段都将显示出来,如果不想显示某个字段,但又需要它参与运算,则可取消勾选复选框。
(5)条件行:放置所指定的查询条件。
(6)或行:放置逻辑上存在或关系的查询条件。
(7)空行:放置更多的查询条件。
注意:对于不同类型的查询,查询设计网格行所包含的项目会有所不同。图4.7查询设计视图2.使用“设计视图”创建查询
下面介绍如何使用查询设计视图创建指定条件的查询。
【例4.3】在“教学管理”数据库中查询期末考试成绩为优秀的学生的信息,包括“学号”、“姓名”、“课程”和“成绩”字段。操作步骤如下:
(1)打开“教学管理”数据库,在“创建”选项卡上的“查询”组中单击“查询设计”按钮,打开查询设计视图窗口,如图4.8所示。
图4.8查询设计视图窗口(2)在“显示表”对话框中,按住Ctrl键不放,依次单击“学生”、“课程”和“成绩”表,然后单击“添加”按钮,把这三个表添加到设计网格上部的“对象”窗格中。添加后,在这些表之间自动显示出它们之间的“关系”。单击“关闭”按钮,关闭“显示表”对话框。
(3)在“学生”表中选中“学号”、“姓名”字段,然后将其拖曳到设计网格中。用同样的方法把“课程”表中的“课程名”字段和“成绩”表中的“期末成绩”字段添加到设计网格中。
(4)在设计网格的“期末成绩”列的“条件”行的单元格中,输入条件“>=90”,如图4.9所示。
图4.9添加表、字段和输入条件后的设计视图(5)在“设计”选项卡的“结果”组中单击“或”按钮,打开“查询视图”窗口,显示查询结果,如图4.10所示。
图4.10成绩优秀学生的查询结果(6)在快捷工具栏上,单击“保存”按钮,打开“另存为”对话框,输入查询名称“成绩优秀的学生”,单击“确定”按钮,如图4.11所示。
图4.11“另存为”对话框
上例说明在多表查询时,表与表之间必须保证建立连接关系。若没有建立关系,多表查询将会造成出现多条重复记录的混乱。表与表间的连接如果已经在创建表完成后设置好了,那么这些关系将被自动带到查询设计视图中。如果表之间不存在关系,则必须在查询设计视图中指定,这个临时指定的关系只是在本查询中有效。指定关系的方法与前面介绍的创建表之间关系的方法相同。
3.查询条件
如果希望根据字段中的值来限制查询结果,可以使用查询条件。查询条件是一个表达式,Access将它与查询字段值进行比较以显示满足条件的字段值的所有记录。
1)单个查询条件的表示
对于单个表达式的表达,条件两端的引号不必输入,根据需要系统会自动添加。如果是人工输入引号,必须使用英文双引号。2)查询表达式示例
下面是对“员工ID”字段设置的查询条件,如图4.12所示。
图4.12基于字段的查询3)查询表达式中的逻辑关系
在查询中若有多个查询条件表达式,假如它们放在查询设计网格的同一行中,则不同字段列中所添加的表达式之间是一种“与”关系,即必须同时满足所有条件;若它们放在不同行中,同一字段列或不同字段列中所添加的表达式之间则是“或”关系,即不要求同时满足所有条件。这种用行的位置所表示的逻辑关系也可以在一个单元格中用逻辑表达式来表达。
【例4.4】在“教师”表中查询“具有硕士学历的女教师”(这是两个以上的条件,满足“与”关系),如图4.13所示。
图4.13两个以上的条件的“与”关系
【例4.5】查找职称为“副教授”以上的教师,应该包括副教授和教授(也是两个以上的条件,满足“或”关系),如图4.14所示。
图4.14两个以上的条件的“或”关系
4.4编辑和修改查询
在查询创建完成后,经过运行如果没有获得所需要的结果,那么需要修改查询。修改查询的工作在查询设计视图中进行。
1.添加字段
把表(或查询)中的字段添加到设计网格中,既可以使用双击表(或查询)中字段的方法,也可以使用拖曳的方法,即选中表中的字段后,按住鼠标左键不松手,拖曳字段到设计网格的列中。
选取多个字段的方法如下:
按住Ctrl键的同时单击字段名,则可以选择多个字段。若要选取连续的多个字段,单击第一个字段后按住Shift键,然后再单击最后一个字段。
添加到“对象”窗格中的每一个表,都显示该表所包含的所有字段(如果没有显示所有字段,则只要向下拖动滑动条,就可以显示其他字段)。
技巧:如果要把一个表的多个字段添加到设计网格中,首先选中所需要的多个字段,然后采用拖曳的方法,一次可以把多个字段添加到设计网格中。
2.删除字段
若想把添加到设计网格中的字段删除掉,操作步骤如下:
(1)在查询设计网格中,把光标放置在字段列上方,变为“箭头”形状光标,如图4.15所示。图4.15字段列上方出现“箭头”形状(2)单击鼠标,字段列反白(黑底白字),如图4.16所示。按Delete键删除字段。
图4.16字段列反白3.插入字段
如果需要在某个字段列(例如第2列)前插入字段,首先选中要插入的字段,然后把该字段拖曳到要插入的(第2个)字段列处,即插入的字段列放置在要插入(第2列)的位置处,原来位置处的字段则依次向后移动一列。
4.移动字段
如果需要调整某字段列的位置,只要选中该字段列,然后把它拖曳到相应位置处,放开鼠标即可。5.查询中的排序
在建立查询时,还可以根据需要设置按某个字段排序显示,操作方法如下:单击需要排序字段设计网格中的下拉列表框,从中选择“升序”或“降序”,如图4.17所示。图4.17在排序下拉列表框中选中升序6.重新打开“显示表”对话框
在编辑查询时,如果需要添加表,而又关闭了“显示表”对话框,只需要在设计视图的“对象”窗格中右击鼠标,在打开的快捷菜单中单击“显示表”命令,就可以重新打开“显示表”对话框,如图4.18所示。或者在“查询工具”的“设计”选项卡的“查询设置”组中单击“显示表”命令,如图4.19所示。图4.18包括显示表的快捷菜单图4.19“查询设置”组7.重命名字段
在查询设计视图中,Access2010允许用户重新命名字段的标题。在通常的情况下,查询将自动继承在表设计视图中定义的标题属性。如果在表中所定义的标题属性不能满足需要,那么可以重新命名字段标题。
重新命名字段标题有两种方法:一种是利用“字段属性”对话框;另一种是在“字段”行的单元格中直接命名字段标题。
【例4.6】在“教师”查询中把“职称”标题命名为“教师职称”。操作步骤如下:
(1)打开“教师”查询,然后把它切换到设计视图。
把光标定位在“职称”标题单元格中,输入“教师职称”。
注意:字段标题和字段名称之间一定要用冒号(英文)分隔,如图4.20所示图4.20直接将职称字段命名为教师职称
或者把光标定位在“职称”字段的单元格中,右击鼠标,在打开的快捷菜单中单击“属性”命令,打开“属性表”对话框,在“标题”栏中输入“教师职称”,如图4.21所示。
图4.21字段属性对话框(2)单击右下角“数据表”视图按钮,可以看到查询结果中“职称”字段的标题已经更改为“教师职称”,如图4.22所示。
图4.22字段标题更改后的结果
在查询中,常常以表达式的运算结果创建一个新字段。使用表达式生成器创建这个表达式和新字段时,其形式如图4.23所示。
图4.23表达式及其新字段
新字段默认名称为“表达式1”,显然这个含义不清的名称无法让人满意,可以在表达式生成器中把字段名称修改为含义清晰的名称,例如“总额”,修改后的结果如图4.24所示。
图4.24修改字段名称后的结果
4.5参数查询
前面介绍的查询所包含的条件都是固定的常数,然而条件固定的常数并不能满足实际工作的需要。在实际使用中,很多情况下要求灵活地输入查询的条件。在这种情况下就需要使用参数查询了。进行参数查询时,需要在查询运行时灵活输入指定的
参数查询利用对话框提示输入参数,输入参数之后系统自动检索符合所输入参数的记录。参数查询在使用中,可以建立单参数的查询,也可以建立多参数的查询。条件,即可查询出满足条件的信息。1.单参数查询
单参数查询就是在查询中指定一个参数,在执行查询中输入具体的参数值。
【例4.7】按学历查找教师信息。操作步骤如下:
(1)打开“教学管理”数据库,在“创建”选项卡上的“其他”组中单击“查询设计”按钮,打开“查询设计”视图窗口。
(2)在打开的“显示表”对话框中选择“教师”表,并将其拖曳到设计网格中,把“学历”字段拖曳到第2列,取消“显示”单元格中的复选框。(3)在“学历”条件中输入“[请输入学历:]”,如图4.25所示。
图4.25参数查询设计(4)在“设计”选项卡的“结果”组中单击“运行”按钮,弹出“输入参数值”对话框,如图4.26所示。
图4.26输入参数值(5)输入要查找的学历,例如“硕士”,然后单击“确定”按钮,查询结果如图4.27所示。
图4.27参数查询结2.两个以上的参数查询
两个以上的参数查询称为多参数查询。它是在作为参数的多个字段下的“条件”单元格中输入参数的条件表达式,因此称为多参数查询。
【例4.8】按指定的系别和职称查询教师信息。操作步骤如下:
(1)打开“教学管理”数据库,在“创建”选项卡上的“查询”组中单击“查询设计”按钮,打开“查询设计”视图窗口。
(2)在打开的“显示表”对话框中选择“教师”表和“系别”表,则这两个表被添加到“查询设计”视图的“对象”窗格中。然后将“教师”表中的“教师”字段拖曳到设计网格中,把“职称”字段拖曳到第2列,再把“系别”表中的“系别名称”字段拖曳到第3列,并取消后两列的“显示”单元格中的复选框,如图4-28所示。
图4.28多参数查询设计(3)在“系别名称”条件中输入“[请输入系别:]”,如图4.29所示;在“职称”条件中输入“[请输入职称:]”,如图4.30所示。查询结果如图4.31所示。
图4.29输入参数值对话框(1)图4.30输入参数值对话框(2)图4.31多参数查询结果
注意:在上述参数查询中,“系别名称”字段并不是从“教师”表获得的,而是从“系别”表获得的。这是由于“教师”中的系别字段是查阅字段,该查阅的值从“系别”中获取。虽然在“教师”表中是以“系别名称”显示系别的值,但是在其背后实质是系别ID号。如果直接从“教师”表获取“系别名称”字段,则在输入参数时,就需要输入系别的ID号,而输入系别名称就无法获取查询结果,这点特别提醒读者注意。
4.6使用查询执行计算
虽然在Access2010中可以对表进行汇总,但是这种汇总是临时性的,且不能把汇总的结果保存下来。在实际应用中,有时还需要进行更复杂的分组汇总,这都需要使用查询来实现。在查询中可以求和、计数,求最大值、最小值、平均值以及其他更复杂的计算。本节介绍如何在查询中实现计算。
1.查询中的计算类型
在查询中可执行多种类型的计算。例如,可以计算一个数字型字段值的总和或平均值;计算多个数字型字段的值相乘的积;或者计算从当前日期算起三个月后的日期等。在查询中执行的计算可分为两种类型:预定义计算和自定义计算。
1)预定义计算
预定义计算又称为“汇总”计算,是系统提供的用于对查询中的一组记录或全部记录进行的下列计算:总计、平均值、最小值、最大值、标准偏差或方差等。为了进行总计计算,在“设计”选项卡的“显示/隐藏”组中,单击“总计”按钮,则在查询设计网格中增加“总计”行,在该行的单元格中显示“GroupBy(分组)”。可以在“总计”行的单元格中选择一种汇总类型进行汇总。“总计”行中共有两种汇总类型。
2)自定义计算
自定义计算中允许自定义计算表达式,在表达式中使用一个或多个字段中的数据,还可以使用函数,对每个记录执行数值、日期和文本计算。自定义计算的主要作用是在查询中创建用于计算的字段列。
应该指出的是,在查询中进行计算,只是在字段中显示计算结果,实际结果并不存储在表中。如果需要把计算结果保存在表中,则使用生成表查询,生成保存计算结果的新表。
2.汇总查询
在建立查询时,常需要统计记录的数或对记录值进行汇总,这就需要使用总计查询。
【例4.9】在“教学管理”数据库中统计某学期参加“高等数学”考试的学生人数。操作步骤如下:
(1)打开“教学管理”数据库,在“创建”选项卡上的“查询”组中单击“查询设计”按钮,打开“查询设计”视图窗口。
(2)在打开的“显示表”对话框中双击“成绩”表和“课程”表,分别把“成绩”表的“学号”字段和“课程”表的“课程名”字段拖曳到设计网格中。
(3)在“设计”选项卡的“显示/隐藏”组中单击“汇总”按钮,在“设计网格”中插入一个“总计”行。
(4)在“课程名”字段列的条件单元格中输入“高等数学”。“总计”行默认为“分组”(GroupBy)。单击“学号”字段的“总计”行单元格中的下拉箭头列表,选中“计算”。为了使表示的意义更加明确,在“学号”中添加字段标题“参加考试人数:”,如图4.32所示。
图4.32设计学号总计项的计数(5)在“设计”选项卡的“结果”组中单击“运行”按钮,其查询结果如图4.33所示。
从结果显示中可以看出参加“高等数学”考试的人数为3人。
图4.33总计查询的统计结果
【例4.10】统计本学期成绩不及格学生的人数。操作步骤如下:
(1)打开“教学管理”数据库,在“创建”选项卡上的“查询”组中单击“查询设计”按钮,打开“查询设计”视图窗口。
(2)在打开的“显示表”对话框中双击“成绩”表,并把“学号”、“学期”、“学年”和“成绩”字段拖曳到设计网格中。
(3)在“设计”选项卡的“显示/隐藏”组中单击“汇总”按钮,在“设计网格”中插入一个“总计”行。
(4)在“学年”的条件列中输入“2009-2010”,在“学期”的条件列中输入“1”,在“期末成绩”的条件列中输入<“60”。
(5)在“学号”字段列的“总计”行中选择“计算”,在其他三个字段的“总计”行中选择“Where(条件)”,则这三个字段的“显示”自动被取消了。
(6)在“学号”字段单元格的“学号”前面输入“不及格学生人数:”作为字段标题,如图4.34所示。
图4.34设置总计行的计数和条件(7)在“设计”选项卡的“结果”组中单击“运行”按钮,可以看到查询的结果,如图4.35所示。
提示:Access规定,指定“条件”的字段不能出现在查询结果中,所以查询结果中只有不及格学生人数,而没有其他字段。图4.35不及格学生人数的查询结果3.分组总计查询
在实际应用中,不仅要统计某个字段中的汇总值,而且还需要把记录按字段值分组,对每组的值进行分组统计。
【例4.11】分班级统计学生人数。操作步骤如下:
(1)打开“教学管理”数据库,在“创建”选项卡上的“查询”组中单击“查询设计”按钮,打开“查询设计”视图窗口。
(2)在打开的“显示表”对话框中,把“学生”表添加到“对象”窗格,然后把该表中的“学号”、“班级”等字段拖曳到设计网格中。
(3)单击“总计”按钮,在“设计网格”中插入一个“总计”行。在“总计”行的“班级”字段列中选择“分组(GroupBy)”,在“学号”字段列中选择“计数”,设置该字段标题为“人数”,如图4.36所示。
图4.36设置分组总计(4)单击“运行”按钮,可以看到查询的结果,如图4.37所示。
图4.37分班统计不及格结果4.建立带“计算字段”的查询
在Access查询中,除了可以对字段列进行各种汇总计算外,还可以对单个或多个字段的数据进行统计计算。虽然在Access2010中,数据表已经有了计算功能,但是并不能完全取代查询中的计算,当计算表达式中的字段来自两个以上的表或查询,或者需要编写自定义函数进行计算时,数据表的计算功能就无能为力了。
在查询中进行计算,通常是在设计网格中新建一个计算字段列。这种添加计算字段的情况多见于工资和库存管理这类需要计算的数据库中。
【例4.12】在罗斯文数据库中创建计算字段查询,计算订单分类汇总。操作步骤如下:
(1)打开“罗斯文”数据库,点击“创建选项卡”下的“查询设计”视图按钮。
(2)然后出现“显示表”对话框,在此对话框中双击“订单明细”表,把该表添加到“对象”窗格中,将“订单ID”字段拖曳到设计网格中。
(3)在“设计”选项卡的“显示/隐藏”组中单击“汇总”按钮,在查询设计网格中添加“总计”行。
(4)选中后面的空白字段列的第一个单元格,在“设计”选项卡的“查询设置”组中单击“生成器”按钮,打开表达式生成器窗口。
(5)在表达式生成器中输入分类汇总表达式:“Sum(CCur([单价]*[数量])*(1-([折扣])/100)*100)”,如图4.38所示。然后按“确定”按钮,返回到查询设计视图中。
图4.38表达式生成器(6)在“总计”行“订单ID”字段列,采用默认“分组(GroupBy)”设置,在“分类汇总”字段列中选择“表达式(Expression)”,结果如图4.39所示。
图4.39查询设计(7)在快捷工具栏上单击“保存”按钮,在打开的“另存为”对话框中将查询命名为“订单分类汇总”。
(8)在“设计”选项卡的“结果”组中单击“运行”按钮,可以看到查询的结果,如图4.40所示。图4.40查询设计结果
表达式Sum(CCur([单价]*[数量])*(1-[折扣])/100)*100)的含义如下:
Sum:求和函数。
CCur:转换函数,CCur函数用于把数字类型转换为Currency(货币)类型。(1-[折扣])/100表示折扣率,折扣为小数,这是计算经过折扣后的订单合计。由于折扣是小数,除以100即表示成百分数,最后结果乘以100是又还原为整数。
4.7创建交叉表查询
使用交叉表查询计算和重构数据,可以简化数据分析。交叉表查询计算数据的总和、平均值、计数或其他类型的总计值,并将它们分组。一组列在数据表左侧作为交叉表的行字段,另一组列在数据表的顶端作为交叉表的列字段。
设计交叉表查询可以使用交叉表查询向导,以便快速生成一个基本的交叉查询对象,然后,再进入查询设计视图对交叉表查询对象进行修改。
【例4.13】在“教学管理”数据库中列出学生每门课程的成绩和各门课成绩的总分,显示的信息包括学号、姓名、课程名和总评成绩。
由于成绩表中并不包含上述全部信息,这些信息来自三个表,交叉表查询向导不支持从多个表中选择字段,所以需要使用查询设计视图创建一个包含上述信息的查询。查询由“学生”表、“课程”表和“成绩”表组成,即从“学生”表中获取“姓名”字段,从“课程”表中获取“课程名”字段以及从“成绩”表中获取“学号”和“总评成绩”字段。
具体操作步骤如下:
(1)打开“教学管理”数据库,在“创建”选项卡上的“查询”组中单击“查询设计”按钮,打开“查询设计”视图窗口。
(2)在打开的“显示表”对话框中选择“学生”表、“课程”表和“成绩”表,单击“添加”按钮,把它们添加到查询视图的对象窗格中,然后关闭“显示表”对话框。
(3)把“姓名”、“学号”、“课程号”和“总评成绩”字段分别从各个表(或查询)中拖到查询设计网格中,如图4.41所示。
图4.41查询设计窗口(4)在快捷工具栏中,单击“保存”按钮,在打开的“另存为”对话框中输入“成绩交叉表查询数据源”,然后单击“确定”按钮,如图4.42所示,关闭所创建的这个查询。
图4.42“另存为”对话框
以上四步是为了创建交叉表查询向导做准备工作,下面开始使用查询向导创建交叉表查询。。
(5)在“创建”选项卡上的“查询”组中单击“查询向导”按钮。
(6)在打开的“新建查询”对话框中选择“交叉表查询向导”,单击“确定”按钮,如图4.43所示。
图4.43“新建查询”对话框(7)在打开的“请指定哪个表或查询中含有交叉表查询结果所需的字段”对话框的“视图”区中选择“查询”,在数据源列表中选择“查询:成绩交叉表查询数据源”,然后单击“下一步”按钮,如图4.44所示。
图4.44“请指定哪个表或查询中含有交叉表查询结果所需的字段”对话框(8)在打开的“请确定用哪些字段的值作为行标题”对话框的“可用字段”窗格中,依次双击“学号”和“姓名”,这两个字段被发送到“选定字段”的窗格中,如图4.45所示。
图4.45“请确定用哪些字段的值作为行标题”对话框(9)在打开的“请确定用哪个字段的值作为列标题”对话框中,系统自动选择“课程名”作为列标题,且将“总计”放在计算位置处。单击“下一步”按钮,如图4.46所示。
图4.46“请确定用哪个字段的值作为列标题”对话框(10)在打开的“请确定为每个列和行的交叉点计算出什么数字”对话框的“函数”列中选中“Min”,然后单击“下一步”按钮,如图4.47所示。
图4.47“请确定为每个列和行的交叉点计算出什么数字”对话框(11)在打开的“请指定查询的名称”对话框的指定查询的名称文本框中输入“成绩交叉表查询数据源_交叉表”,选中“查看查询”,然后单击“完成”按钮,如图4.48所示。图4.48“请指定查询的名称”对话框(12)这时打开“查询设计”视图,把最后一列中的“字段”行单元格中的“总计”删除掉,如图4.49所示。
图4.49查询设计视图(13)在“设计”选项卡的“结果”组中单击“运行”按钮,可以看到查询的结果,如图4.50所示。
图4.50学生成绩交叉表查询结果
4.8创建查找重复项查询
在数据库管理系统的应用中,可能会出现同一数据在不同的地方多次被输入到表中的情况,从而造成数据重复。当数据表中的数据很多时,用手工方法很难查找出重复输入的数据。Access提供的“查找重复项查询向导”功能就是解决这类问题的。
对于一个设置了主键的表,由于主键值不能重复,因此可以保证记录的唯一性,也就避免了重复值的出现。但是对于非主键字段就不能避免重复值的出现。“查找重复项查询向导”就是用来检查非主键字段是否存在重复值的。
【例4.14】查找“选课”表中是否输入了重复的记录,即对于同一学号,是否选择了同一课程两次。操作步骤如下:
(1)打开“教学管理”数据库,在“创建”选项卡上的“查询”组中单击“查询向导”按钮。
(2)在打开的“新建查询”对话框中选中“查找重复项查询向导”,单击“确定”按钮,参见图4.43。
(3)在打开的“请确定用以搜寻重复字段值的表或查询”对话框中选中“表:选课”,单击“下一步”按钮,如图4.51所示。
图4.51“请确定用以搜寻重复字段值的表或查询”对话框(4)在“请确定可能包含重复信息的字段”对话框的“可用字段”窗格中,把“课程号”和“学号”拖曳到“重复值字段”窗格中,然后单击“下一步”按钮,如图4.52所示。图4.52“请确定可能包含重复信息的字段”对话框(5)在“请确定查询是否显示除带有重复值的字段之外的其他字段”对话框中单击“下一步”按钮,如图4.53所示。
图4.53“请确定查询是否显示除带有重复值的字段之外的其他字段”对话框(6)在“请指定查询的名称”对话框中单击“完成”按钮,保存查询,如图4.54所示。
图4.54“请指定查询的名称”对话框
(7)在打开的查询结果中,可以看到学号是2008102105的学生重复选了课程号为10112009的课程,最后的字段列表明重复的次数,如图4.55所示。
图4.55选课表中重复选课信息
4.9使用向导查找表之间不匹配项的记录
在关系数据库中,当建立了一对多的关系后,通常在“一方”表中的每一个记录与“多方”表中的多个记录相匹配。但是也可能存在在“多方”表中没有记录与之匹配的情况。例如在教学管理中,常出现有些课程没有学生选修的情况,为了查找哪些课程没有学生选修,最好的方法是使用“查找不匹配项查询向导”。
【例4.15】在“教学管理”数据库的“课程”表中,查找哪些课程没有任何学生选修。操作步骤如下:
(1)打开“教学管理”数据库,在“创建”选项卡上的“查询”组中单击“查询向导”按钮。
(2)在打开的“新建查询”对话框中选中“查找不匹配项查询向导”,单击“确定”按钮,如图4.56所示。
(3)在打开的“所建查询将列出下面所选表中的记录……”对话框中,选中“表:授课”,单击“下一步”按钮,如图4.57所示。
图4.56“新建查询”对话框图4.57“所建查询将列出下面所选表中的记录……”对话框(4)在打开的“请确定哪张表或查询包含相关记录”对话框中,选中“表:选课”,单击“下一步”按钮,如图4.58所示。
图4.58“请确定哪张表或查询包含相关记录”对话框(5)在打开的“请确定在两张表中都有的信息”对话框中单击“下一步”按钮,如图4.59所示。
图4.59“请确定在两张表中都有的信息”对话框(6)在打开的“请选择查询结果中所需的字段”对话框中双击“课程号”和“课程名”,单击“下一步”按钮,如图4.60所示。
图4.60“请选择查询结果中所需的字段”对话框(7)在打开的“指定查询名称”对话框中输入“没有学生选的课程”,单击“完成”按钮(图略)。最后看到查询的结果如图4.61所示。
图4.61查询结果
4.10操作查询
操作查询用于创建新表或者对现有表中的数据进行修改。一个数据库系统经常需要进行各种数据维护。例如对于教学管理数据库,当一届学生毕业后,不仅需要把这届毕业生的各种数据从现有的教学管理数据库中成批地导出到学生档案数据库中,而且在导出完成后,还需要把这届毕业生的数据从现有的数据库中删除掉。这类操作在数据库管理中称为数据维护。使用操作查询可以方便、快速地完成对数据的导出、删除以及更新等操作。1.用生成表查询创建毕业生档案表
生成表查询利用一个或多个表中的全部或部分数据创建新表。在Access中,从表中访问数据库要比从查询中访问数据库快得多,所以当经常需要从多个表中提取数据时,最好的方法是使用生成表查询,将从多个表查询的结果作为一个新表永久保存起来。
【例4.16】生成毕业生的数据表,命名为“毕业学生”表。如果某学校是不久前开始使用计算机管理教学的,当出现第一届毕业学生时,需要创建毕业生档案库。操作步骤如下:
(1)打开“教学管理”数据库,在“创建”选项卡的“查询”组中单击“查询设计”按钮,打开“查询
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度拍卖行拍卖委托代理合同
- 2024年聚苯板供应商合同
- 二零二五年度古建筑修复与买卖协议书3篇
- 2025年度时尚发布会VI视觉设计合同
- 2025年度智能家居与智能家居安防一体化房屋装饰装修施工合同3篇
- 2024年船舶货物搬运吊装协议3篇
- 2025年度汽车动力电池技术专利授权合同3篇
- 2025年度房屋买卖合同纠纷调解与法律文书审核服务合同3篇
- 2024酒店租赁协议书
- 2024年适用贷款协议模板版B版
- 第三方代付工程款协议书范本
- 烈士遗属救助申请书
- 外研版英语九年级上册 Module1-12作文范文
- 南京市七年级上册地理期末试卷(含答案)
- 足球课程教学计划工作总结
- 家具成品检验通用标准
- 粉末涂料有限公司成品装车作业安全风险分级管控清单
- 诺基亚4G基站配置及常见故障处理课件
- 运输类工作简历
- 煤矿施工巷道布置及支护设计方案
- 施工升降机卸料平台计算书
评论
0/150
提交评论