《数据库课件第九章.ppt》由会员分享,可在线阅读,更多相关《数据库课件第九章.ppt(40页珍藏版)》请在三一办公上搜索。
1、第九章 查询的创建与使用,【本章要点】通过本章的学习,可掌握Access 2003中创建查询基本方法。查询主要目的是通过某些条件设置,从表中选取所需数据。Access 2003支持5种查询方式,即选择查询、操作查询、交叉表查询、参数查询和SQL查询。并能够利用查询向导创建一些简单查询。具体讲解怎样在查询设计器视图中,为每个查询设置适当的条件,条件既可以是简单的数字、文本、日期等,也可是复杂函数、表达式等。,9.1 创建选择查询,9.1.1 查询的概述,查询是一个从数据库中检索记录的描述,可以将查询看成是动态的数据集合,使用查询能够按不同的方式来查看、更改和分析数据来源,也可将其作为窗体、报表、
2、数据访问页的数据。查询实际上是将那些分散的数据按一定的条件集中起来,形成一个数据记录集合。查询与表的最大区别在于,查询中的数据并不是真正存在的,而是在运行查询时系统从查询源表中抽取数据创建的。查询实际上只是一组SQL语句指令,它只是对表中的数据进行处理,并返回一个类似表的结果。这个结果记录集在数据库中并不存在。,1.查询的主要功能(1)选择表(2)选择字段(3)选择记录(4)排序记录(5)执行计算(6)建立表(7)建立基于查询的报表和窗体(8)建立基于查询的图表(9)使用查询作为子查询(10)修改表Access的查询,2.查询分类(1)选择查询(2)交叉表查询(3)操作查询 生成表查询 根据匹
3、配的记录创建新表。更新查询 更改匹配的记录。追加查询 将新记录添加到表的末尾。删除查询 删除匹配的记录。(4)参数查询(5)SQL查询,9.1.2 查询准则,1.通配符?代表单一字符*代表0个或多个字符#代表单一数字(09)字符表代表属于该字符表的单一字符!字符表代表不属于该字符表的单一字符,2.运算符 在Access的查询准则中,常用的运算符,如表9-1所列。,3.常用函数(1)日期函数DAY(Now)返回当前的日期MONTH(Now)返回当前的月份YEAR(Now)返回当前的年份HOUR(Now)返回当前的小时,(2)SQL合计函数COUNT(*)统计表中元组个数。COUNT(属性名)统计
4、一列中列值的个数。SUM 计算一列值的总和(此列必须是数值型)AVG 计算一列值的平均值(此列必须是数值型)MAX 求一列值中的最大值。MIN 求一列值中的最小值。FIRST 返回表的第一条记录的字段值LAST 返回表的最后一条记录的字段值STDEV 返回标准方差值VARP 返回总体方差值,9.1.3 使用向导创建选择查询,在使用“查询向导”创建查询时,可以指定要创建的查询种类及要检索的表或现有查询中的记录类型。“查询向导”会通过一系列的问题,指导每一步操作,然后系统自动创建查询。,具体操作步骤如下:(1)在【数据库】窗口中,单击【对象】面板上的【查询】,然后双击【使用向导创建查询】选项。(2
5、)打开【简单查询向导】对话框。在【表/查询】组合框中选择一个表或查询作为查询的对象。如果选择的是一个查询,则表示对一个查询的结果进一步查询。所选择表或查询中包含的字段均会列在【可用字段】列表中,用户可根据实际需要双击要在查询中包含的字段,或者单击该字段后点击按钮,使其显示在【选定的字段】列表中。若直接点击按钮,则全部字段都会显示在【选定的字段】列表中。相反,选择后若不打算包含该字段了,则可从【选定的字段】列表中选定字段,然后点击按钮,撤销对该字段选择或直接点击按钮,撤销全部所选字段。然后,单击【下一步】按钮。,(3)确定查询类型。如果选定的字段中有数值型或日期型字段时,要指出是希望查看详细信息
6、还是汇总信息,才出现此步对话框。【明细】是指在查询中显示每条记录的每个被选字段,不作其他处理;【汇总】是指在查询中对记录中的某些字段进行求和、求均值等处理,并把处理的结果显示出来具体设置可以单击【汇总选项】按钮,打开【汇总选项】对话框。然后,单击【下一步】按钮。4键入查询的名称,并选择是希望在设计视图中查看查询结果,还是修改查询设计。选择【打开查询查看信息】,显示查询结果。,9.1.4 使用设计视图创建选择查询,1.创建基于单表的简单查询(1)在【数据库】窗口中,选择【对象】面板上的【查询】,双击【在设计视图中创建查询】或者单击工具栏上【新建】按钮,再在对话框中选择【设计视图】选项。(2)系统
7、自动打开【显示表】对话框。添加查询设计使用的表或查询,然后单击【关闭】按钮。,(3)选择查询中要显示的字段。在窗口的上半部的列表框中,双击要选择的字段,可以看到设计视图下方的设计网格中显示出刚才选择的字段名。从窗口的上半部的列表框中,把要选择的字段直接拖到设计网格中。单击窗口下半部的设计网格中【字段】一行的任意一格,会出现一个组合框,可从下拉列表中选择需要的字段。,(4)设置查询结果排序方式。(5)设置查询条件。(6)查看查询结果。此时,可以单击工具栏上【视图】下拉按钮中【数据表视图】命令或者单击工具栏上【运行】按钮,显示结果。(7)单击【保存】按钮,键入查询的名称,然后单击【确定】按钮。,2
8、.创建基于多表的查询 查询并不局限于一个表,只要数据库包含彼此相关的表字段,就可以一起作为查询的源数据,也就是说,查询可以包含多个表。例如,创建基于客户表和订单表的查询,显示已有订单的客户。,3.查询设计视图的设计网格中选项 字段 可以在此输入或加入字段名。表 字段所在的表或查询的名称。排序 可以选择查询所采用的排序方向。显示 利用复选框确定字段是否在数据表中显示。条件 可以输入准则来限定记录的选择。或 用于增加多个条件的选择。,4.修改查询 在【数据库】窗口中,选择要修改的查询,然后单击【设计】按钮,便在查询设计视图中打开该查询,可以方便地进行修改。,9.1.5 使用向导查找重复项,利用“查
9、找重复项查询向导”可以创建“查找重复项”查询,在这种查询中,可以把表中的某个字段的值相同的记录列在一起,方便用户查看相关信息。,9.1.6 使用向导查找不匹配项,“查找不匹配项查询向导”用于创建一个“查找不匹配项”的查询,以显示在一个表中存在而在其他表中不存在对应记录的记录。这些记录被称为孤立记录。,9.2 查询中的计算功能,9.2.1 查询的计算功能,在查询中,设置执行下列计算以生成新的数据结果:(1)预定义计算 即所谓的“总计”计算,是系统提供的用于对查询中的记录组或全部记录进行的计算,通过【表设计器】中设计网格的【总计】项目的来实现。它包括下列计算方法:总和、平均值、数量、最小值、最大值
10、、标准偏差或方差。(2)自定义计算 自定义计算可以用一个或多个字段的数据进行数值、日期和文本计算。例如,使用自定义计算,可以将某一字段值乘上某一数量;可以找出存储在不同字段的两个日期间的差别,可以组合文本字段中的几个值,或者创建子查询。,9.2.2 总计和分组总计查询,在Access查询设计视图的设计网格中包含了【总计】项目,可针对选择查询、交叉表查询、生成表查询和追加查询进行计算。在设计网格中激活【总计】项目的下拉列表框。该下拉列表框共有12个选项,其中9个合计函数,另外还有:分组Group By 其作用是把普通记录分组以便执行合计计算。表达式 其作用是把几个汇总运算分组并执行该组的汇总。限
11、制条件 其作用是对某个字段执行总计时对该记录进行限制。,9.2.3 创建自定义计算,在罗斯文示例数据库中有“订单明细”表,从表中可以看到订单明细中的每一条记录,但是如果现在需要查看每份订单的总金额,则无法从该表中直接看到,必须先经过计算才行。,9.3 查询的高级操作,9.3.1 创建参数查询,参数查询是在运行时显示对话框来提示用户输入信息,再据此进行查询。一般可将参数查询作为窗体、报表和数据访问页的基础。例如:在罗斯文示例数据库中创建“订单”查询。,9.3.2 创建交叉表查询,交叉表查询是以行和列的字段作为标题和条件选取数据,并在行和列的交叉点对数据进行汇总、统计等计算。使用交叉表查询是以另一
12、种形式来重新组织数据结构,并且还可以进行计算,从而能更方便地分析数据。创建“交叉表查询”,一般也有两种途径:一种是使用“交叉表查询向导”,依次选择相应的表,指定相应的行标题、列标题及设置交叉点的计算字段的合计方法,轻松地创建交叉表查询;另一种是使用“查询设计视图”创建交叉表查询,例如:罗斯文示例数据库中的“各种产品季度订单”查询。,9.4 创建操作查询,9.4.1 生成表查询,生成表查询可以产生新表,新表中包含来自一个或多个表中的全部或部分数据副本。生成表查询有助于创建表以导出到其他数据库中作为备份。例如,要将罗斯文示例数据库中所有东北地区的客户信息传给新成立的东北办事处。,9.4.2 删除查
13、询,删除查询可以从一个或多个表中删除一组满足条件的记录。例如,在罗斯文示例数据库的“订单”表中,删除1998年以前的所有订单记录。,9.4.3 更新查询,更新查询可以对表中的一组记录的一个或多个字段进行成批更改。例如,在罗斯文示例数据库中,把单价低于30元的产品单价都提高20%。,9.4.4 追加查询,因为生成表查询每次运行时都会覆盖掉已有的同名表,所以若要分多次备份不同的数据到同一个表中,用生成表查询是无法实现的。追加查询就能满足这种需求,插入的数据可以源自一个或多个表,并且不覆盖原有数据仅仅是追加到表中原有记录后面。例如,在罗斯文示例数据库中,追加已停产的产品到“中止产品”表中作为备份。,
14、9.5 创建SQL查询,9.5.1 使用联合查询,联合查询就是将多个查询结果合并起来,形成一个完整的查询结果。使用UNION关键字可以将两个SELECT语句的结果合并。注意:参加UNION操作的各数据项数目必须相同,对应项的数据类型也必须相同,并且再将多个查询结果合并起来形成一个完整的查询结果时,系统会自动去掉重复的记录。,9.5.2 使用传递查询,传递查询可以直接将命令发送到ODBC数据库服务器上,例如SQL Server等大型的数据库管理系统。ODBC就是开放式数据库连接,是一个数据库的工业标准,就象SQL语言一样,任何数据库管理系统都能运行ODBC连接。创建传递查询的方法是:在查询设计视
15、图中,选择【查询】|【SQL特定查询】|【传递】命令,系统自动打开【传递查询】文本框。此时选择【视图】|【属性】命令,打开【查询属性】对话框。在【ODBC连接字符串】中输入指定数据源的位置。还可以根据实际需要进行其他设置,最后保存查询文件。,9.5.3 使用数据定义查询,数据定义查询可以创建、更改、删除表、视图和索引。其语法格式与第4章中介绍的一样。在查询设计视图中,选择【查询】|【SQL特定查询】|【数据定义】命令,系统自动打开【数据定义查询】文本框。,9.6 案例实训,9.6.1 创建“联系公司联系人查询2”,实训要求:为“就业信息管理”实现中“打印联系公司信函标签”功能,需要创建一个选择
16、查询“联系公司联系人查询2”。实训分析:在打印联系公司信函时,需要的信息有:邮编、所在省市、公司地址、公司名称和收信人(联系人)。因此,本查询不能通过单表查询实现,需要来自两个表:“联系公司”和“联系人”的信息。,9.6.2创建“联系公司按名称查询”,实训要求:在“就业信息管理”数据库中,创建一个参数查询“联系公司 按名称查询”。实训分析:该查询应实现的查询功能是:在对话框中输入一个联系公司名称后,自动显示由该联系公司的所有基本信息。,9.6.3创建“按联系人查询联系记录”查询,实训要求:为实现“就业信息管理”数据库应用程序中的某个查询功能,创建一个参数查询“按联系人查询联系记录”。实训分析:
17、该查询应实现的查询功能是:在对话框中输入一个联系人姓名后,自动显示由该联系人经手的所有联系记录。因为在“联系情况记录”表中“联系人”字段是“查阅向导”类型,即数字,不便于输入,也不符合实际操作习惯,所以需要从“联系情况记录”和“联系人情况表”两张表来进行查询操作。同理,为了显示联系公司的名字,也需要与“联系公司”表联接。因此,该查询数据源共来自三张表。,9.6.4创建“学生录用情况交叉表”查询,实训要求:为实现“就业信息管理”数据库应用程序查询功能之一图形报表,创建一个交叉表查询“学生录用情况交叉表”。实训分析:“学生录用情况交叉表”是先按照公司分组再按录用时间分类统计录用学生的人数。由于“学
18、生录用情况表”中的“公司ID”字段是“查阅向导”类型,所以要显示录用的公司名称必须与“联系公司”表相联接。,9.6.5 实训练习,1.创建“实训基地查询”练习要求:为实现“就业信息管理”数据库应用程序中的一个查询功能,创建一个单表选择查询“实训基地查询”。提示:该查询的数据源是“联系公司”表。提示:“是否为实训基地”字段的【显示】项为不选,即在查询结果中不显示该字段。提示:设置查询条件,因为“是否为实训基地”字段是“是/否”类型,所以该字段的【条件】项为“Yes”。,2创建3个选择查询 练习要求:为实现“就业信息管理”数据库应用程序中的3个查询窗体,先创建3个多表选择查询“按公司名查询联系记录
19、”、“按省市查询联系公司”和“联系公司联系人查询”。提示:“按公司名查询联系记录”查询,来自“联系公司”表和“联系情况记录”表,通过“公司ID”字段和“联系公司ID”字段联接。提示:“按省市查询联系公司”查询,来自“联系公司”表和“省市表”,通过“所在省市”字段和“编号”字段联接。此时,应显示“省市表”中的“省市名”字段,而不显示“联系公司”表中“所在省市”字段,思考一下为什么?提示:“联系公司联系人查询”查询,来自“联系公司”表和“联系人情况表”,通过各自的“公司ID”字段联接。,3创建“按姓名查询联系人”查询 练习要求:为实现“就业信息管理”数据库应用程序中的某个查询功能,创建一个单表参数查询“按姓名查询联系人”。提示:该查询的数据源是“联系人情况表”。提示:“联系人”字段的【显示】项为不选,即在查询结果中不显示该字段。,4创建3个操作查询 练习要求:在“就业信息管理”数据库开发过程中,利用操作查询,对数据表中的记录进行编辑。生成“天津地区联系公司”表和“校外实训基地”表。删除“2007年1月1日”之前,登记的公司。修改“联系公司”记录后,向“校外实训基地”表中追加新记录。,