Access数据库实用教程第六章-查询课件_第1页
Access数据库实用教程第六章-查询课件_第2页
Access数据库实用教程第六章-查询课件_第3页
Access数据库实用教程第六章-查询课件_第4页
Access数据库实用教程第六章-查询课件_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第6章 查询 6.1 查询概述6.2 创建选择查询6.3 创建交叉表查询6.4 查询的表达式6.5 用设计视图在查询中创建计 算字段6.6 创建操作查询6.7 创建SQL查询6.1 查询概述 6.1.1 查询的定义和作用 1.查询的定义 根据给定的条件,从数据库的表中筛选出符合条件的记录,构成一个数据的集合。 一个查询可以从一个或多个表中获取数据,并且可以用作窗体、报表或数据访问页的数据源。 同时还可以对查询结果做排序,甚至在一次查询结果上再做一次查询。2.查询作用 在结果集中包含指定的记录和字段。 排序结果集。 在字段中执行计算。 将多个表中的字段结合在一个结果集中。3.建立查询应该考虑的问

2、题 希望通过查询来检索哪些信息? 希望检索哪些字段? 查询的限制条件是什么? 6.1.2 查询的类型 1.选择查询 它从一个或多个表中检索数据,并且在可以更新记录的数据表中显示结果。也可以使用选择查询对记录进行分组,并且对记录做汇总、计数、求平均值以及其他类型的计算。 2.参数查询 使用参数查询时将显示出要求用户输入查询条件的对话框,系统根据用户输入的查询条件将查询结果以指定的形式显示出来。 3.交叉表查询 使用交叉表查询可以计算并重新组织数据的结构,这样可以更加方便地分析数据。交叉表查询计算数据的总计、平均值、计数或其他类型的数据。这种数据可分为两组信息:一类在数据表左侧排列,另一类显示在数

3、据表的顶端。 4.SQL查询 SQL查询是用户使用SQL语句创建的查询。可以用结构化查询语言 (SQL) 来查询、更新和管理Access这样的关系数据库。在查询设计视图中创建查询时,Access将在后台构造等效的SQL语句。 5.操作查询 删除查询:这种查询可以从一个或多个表中删除一组记录。例如,可以使用删除查询来删除不再生产或没有订单的产品。使用删除查询,通常会删除整个记录,而不只是记录中所选择的字段。 更新查询:这种查询可以对一个或多个表中的一组记录做全局性的更改。 追加查询:追加查询将一个或多个表中的一组记录添加到一个或多个表的末尾。 生成表查询:这种查询可以根据一个或多个表中的全部或部

4、分数据新建表。生成表查询有助于创建表以导出到其他 Microsoft Access数据库或包含所有旧记录的历史表。6.2 创建选择查询6.2.1 利用向导创建选择查询 【例6-1】使用向导创建一个“学生家庭地址”的选择查询:创建用于查找学生的家庭地址的查询,掌握单表中查询数据的基本方法。 注意:如果在查询中需要使用到多个表,则必须先建立表间的关系。6.2.2 使用设计器创建选择查询 查询设计视图可以帮助用户创建和自定义查询。选择查询的设计视图被分为上下两个部分。上部为数据源显示区;下部为参数设置区,由五个参数行组成,分别是字段行、表行、排序行、显示行和条件行。如下图所示。查询设计网格的参数介绍

5、如下表所示:行描述示例字段查询结果集中显示的字段名称专业表字段所属的表或查询对象的名称学生排序字段的排列顺序升序显示选择是否在结果集中显示该字段选中表示要显示;否则表示要隐藏条件检索数据的限制性条件计算机及应用或附加的限制性条件电子信息 【例6-2】使用设计器创建一个“男同学基本情况”的查询:创建用于查找男同学基本情况的查询,要求在查询结果中显示“学号”、“姓名”、“专业”和“班级编号”字段,并先按“专业”升序,后按“班级”降序对结果进行排序。 【例6-3】使用设计器创建一个“优秀成绩_Access”的查询:创建一个“优秀成绩_Access”的查询,要求查询出Access成绩前5名的学生的学号

6、、姓名和班级名称,在结果中仅显示“学号”、“姓名”和“班级名称”三个字段。 查询属性的设置: 上限值:在查询结果中仅显示前面若干条记录。 唯一值:避免在查询结果中显示重复记录。 6.2.3 创建参数查询 所谓参数也是一种准则,不同之处在于参数是在运行查询时输入的,而准则是在创建查询时定义的。参数查询可以显示一个或多个提示参数值(准则)的预定义对话框,也可以创建提示查询参数的自定义对话框,提示输入参数值,进行问答式的查询。当用户在创建查询时不确定自己所要查询的值,而需要在查询时输入参数的情况下是很有用的。 【例6-4】使用设计器创建一个“按学号和课程名称检索成绩”的查询:创建用于从“学籍管理信息

7、系统”数据库中检索某个学生的某门课程成绩的查询。注意: 参数查询不是一种真正独立的查询类型,可以将其添加到选择查询、交叉表查询以及各种操作查询中。 参数查询中的提示文本(即用户看到的消息)必须放在方括号内,而且必须和字段名不一样,但是,文本可以包含字段名。6.3 创建交叉表查询6.3.1 利用向导创建交叉表查询 交叉表查询用于对数据进行求和或其他计算,并对数据进行分组:一组为行标题提供值(左部),一组为列标题提供值(上部),还有一组为查询的主体提供值(数据表的中间)。 【例6-5】使用交叉表查询向导创建一个“学生成绩_交叉表查询”的查询:创建用于查看每个学生各门课程的成绩和总成绩的查询,要求以

8、学生的学号、姓名及总成绩作为行标题,课程名称作为列标题。注意: 如果使用交叉表查询向导创建交叉表查询,必须注意它所基于的字段必须处于同一个表或查询中,如果不在同一个表或查询中,则必须先建立一个查询,将它们放在一起。 在使用交叉表查询向导创建交叉表查询时,最多只允许选择三个字段作为交叉表的行标题,而列标题和行列交叉处的值字段均只能选择一个。 6.3.2 使用设计器创建交叉表查询 【例6-6】使用设计器创建一个“统计各系每个专业学生人数”的查询:创建用于统计各个系每个专业的学生人数的查询,要求将“系别”作为行标题,“班级名称”作为列标题。 6.4 查询的表达式6.4.1 表达式中的运算符 1.算术

9、运算符 主要用于数值数据间的运算,运算结果也是数值数据。常用的算术运算符如下表所示, 表中从上到下为运算符的优先顺序。 运算符说明示例乘方42,代表4的2次方-负号-6*8值为-48*、/乘、除7*4/2值为14整除94,值为舍弃小数后的整数2Mod求余13 Mod 4,值为13/4的余数1,Mod运算符前后要有空格+、-加、减78+42-10,其值为1102.比较运算符 比较运算符用于比较运算。即比较同类型操作对象的值,如使关系成立,比较运算结果取值为“真”,否则,取值为“假”。在Access 2002中,用True值代表真,False值代表假。根据表达式运算的True、False值,即可实

10、现相应的控制。比较运算是建立各种复杂查询条件的基础。比较运算符的用法见下表,在运算时没有先后顺序。运算符说明示例大于“张“”王”,表达式的值为True小于“123”=大于等于78=451,表达式的值为False=小于等于#2/31/2005#=#9/22/2004#,值为False不等于“wang“”王”,值为True=等于“wang“=”王”,值为FalseBetweenAnd用于设定范围:在.之间Between 60 And 100,介于60和100之间Like用于通配设定:如同Like “张*”,以“张”开头的文字Like “*1*”,包含“1”的文字In用于集合设定:在.之内Left(

11、学生!姓名,1) In (“张”,“江“),姓张和姓江的学生说明: (1)所有的运算符都要求前后的数据的数据类型必须一致。如果对不同类型的数据(例如字符串和数字)进行比较,那么将回产生数据类型不匹配的错误。要进行比较,必须使用Access的数据类型转换功能。(2)Like运算符用于测试一个字符串是否于给定的模式匹配,模式通常由普通字符和通配符组成的一种特殊字符串。在查询中使用Like运算符和通配符,可以搜索部分匹配或完全匹配的内容。其使用格式为: 测试表达式 Like 模式 在Access 2002中,与Like运算符一起使用的通配符的用法见下表所示。通配符使用方法应用示例*表示由0个或任意多

12、个字符组成的字符串,在字符串中可以用做第一个字符或最后一个字符Like “*好*“?表示任意一个字符Like “刘?“表示位于方括号内的任意一个字符Like “BCD*“!表示不在方括号内的任意一个字符Like “!ag*“-表示指定范围内的任意一个字符(必须以升序排列字母范围)Like “B-D*“#表示任意一个数字字符Like “200501#“3.逻辑运算符 逻辑运算符用于实现逻辑运算,如“并且”、“或”、“非”等。逻辑运算符通常与比较运算符一起使用,构成复杂的用于判断比较的表达式,表达式的值为True或False。常见的几种逻辑运算符的用法见下表。 运算符说明 示例Not非Not(56

13、),表达式值为TrueAnd并且(65)And (“ABC”abc”),表达式为FalseOr或学生.学号 Like “*6*“ Or 学生.姓名 Like ”张*“,表示搜索学号中含有数字6或姓张的学生记录4.连接运算符 连接运算符主要用于连接字符串,用“&”或“+”表示。 例如,数据库 & 使用指南 将返回: 数据库使用指南,也就是将这两个字符串连接在一起,左面的字符串在前面,右面的字符串在后面。也可以用加号实现同样的运算:数据库 + 使用指南 说明: (1)字符串要包含在英文双引号中。 (2)“&”也能把数字和日期等非字符串数据和字符串数据连接。 6.4.2 常见表达式的应用 在表达式中

14、,除了要有各种运算符外,还必须有操作数,由运算符和操作数组合在一起,构成完整的表达式。根据参加运算的运算符不同,表达式通常有以下几种形式:算术表达式、字符串表达式、比较表达式和逻辑表达式。 【例6-7】使用设计器创建一个“姓王的男同学”的查询:创建用于从“学生”表搜索姓王的男同学记录。 6.5 用设计视图在查询中创建计算字段 在Access 2002中创建查询时,可以执行两类计算:汇总运算和自定义计算。前者要借助于系统提供的合计函数,而后者需对查询中的字段实施各种计算,通常需在设计网格中定义计算字段。 【例6-8】使用设计器创建一个名为“Access成绩”的汇总查询:要求查询Access课程的

15、最高成绩和最低成绩,掌握在查询中使用汇总计算字段的方法。 【例6-9】使用设计器创建自定义查询“学生年龄”:要求查询出每个学生的年龄,掌握和理解计算字段的创建方法。6.6 创建操作查询 操作查询是一种特殊的查询,它在进行查询的同时,还可以完成特定的操作,按照条件修改、添加或删除记录,甚至还可以创建出新表。Access提供了四种操作查询:生成表查询、追加查询、更新查询和删除查询。它们的共同特点是都可以在一个操作中更改多个记录,使用操作查询,应注意以下几点: 在执行操作查询后,将不能使用“撤消”操作,因此在执行操作查询之前应该切换到数据表视图中预览将要操作的数据,确认它是你所要操作的数据。 使用更

16、新查询和删除查询修改记录之前,应该对数据进行备份,即使不小心更改了数据,也可以从备份中恢复。6.6.1 创建生成表查询 生成表查询主要应用在以下方面: 创建表的备份副本。对一些非常重要的数据需要把它保存下来。 创建包含旧记录的历史表。对一定时期内不再使用的记录,同样也应该对它实施备份。 提高基于表查询或SQL语句的窗体和报表的性能。 【例6-10】使用生成表查询实现所有成绩不及格学生数据的备份:创建用于查询成绩不及格学生的有关情况,要求结果中包含:学号、姓名、班级名称、系别、课程名称和成绩字段,并将创建的新表命名为“补考学生表”。 使用生成表查询创建新表时必须注意: 如果要在另一个数据库中创建

17、表,则必须明确指明数据库的位置和名称。 如果在字段行中使用了“*”,则不能在字段行中再使用同一表中的单个字段,否则Access将认为是两次将同一字段的内容加入到同一字段中。 如果新建的表在数据库中已经存在,新建的表会将旧表覆盖。6.6.2 创建更新查询 Access的更新查询为用户提供了成批修改数据的便利。 【例6-11】使用更新查询实现成绩数据的修改:创建用于查询“计算机基础”课程成绩低于60分的记录,要求对该课程成绩加上5分。6.6.3 创建追加查询 使用追加查询功能可以将符合查询条件的数据追加到一个已经存在的表中,该表可以是当前数据库中的一个表,也可以是另一个数据库中的表。 【例6-12

18、】使用追加查询添加数据:创建用于检查“学生”表中每一个学号是否已经在“成绩”表中存在,如果不存在,则要求将该学号添加到“成绩”表中。 6.6.4 创建删除查询 Access提供了一个删除查询,用户可以方便地一次删除一组记录,而不用从数据表中一个一个地挑选删除记录,这样就大大提高了数据管理的效率。删除查询不但可以从一个表中删除记录,而且也可以从多个相互关联的表中删除记录。因此如果需要从数据库的某一个数据表中有规律地成批删除一些记录,可以使用删除查询来满足这个需求。 【例6-13】使用删除查询数据:创建用于查找和删除“学生”表中“姓名”字段为空的那些记录。 注意: 使用删除查询从表中删除的记录无法

19、再使用撤消命令来恢复,故要特别小心,如果出现差错,可能造成大量数据的丢失。 在某些情况下,执行删除查询可能会同时删除相关表中的记录。例如,在一对多关系中的“一”端删除记录时,如果这些关系允许使用连锁删除,删除查询就会把两个表中的记录都删除,因此应首先了解清楚表间的关系,再做删除查询。当然,如果要从多个相互关联的表中删除相关记录,首先应建立表之间的相互关联关系。6.7 创建SQL查询6.7.1 SQL语句介绍 SELECT语句的结构如下: SELECT ALL|DISTINCT 列名 FROM 表名 WHERE 查询条件 GROUP BY 要分组的列名 HAVING 分组条件 ORDER BY

20、要排序的列名 ASC|DESC 说明: SELECT指出所要查找的列,其中包括一些限定语:谓词:主要包括DISTINCT和TOP,可以用来限制返回的记录数量,而ALL返回所有记录。显示的字段名或表达式:“*” 表示全部字段,若来自不同表中的字段,显示的字段名前要加表名。别名:用来作列标题,用来代替表中原有的字段名。 FROM 指出要获取的数据来源自哪些表。 WHERE指明查询的条件,为可选项,若省略表示选择所有的记录。 GROUP BY将查询的结果按列进行分组,则可以使用合计函数。 HAVING 用来指定分组的条件,为可选项。 ORDER BY 按照递增或递减顺序在指定的字段中对查询的结果记录

21、进行排序 。【例6-14】使用SELECT语句建立各种查询。 示例如下: 1.查询表中所有的列 格式:SELECT * FROM 表名 2.查询表中指定的列格式:SELECT 列名1,列名2 , FROM 表名 3.在某一列前面加入字符串格式:SELECT 字符串,列名 FROM 表名 4.使用别名 别名是指在查询结果中用指定的字符串代 替原列名。 格式:列名 AS 别名 例:SELECT 学号 AS sno FROM 学生 5.查询表中特定记录 例:SELECT * FROM 学生 WHERE 学号=“20020401”6.设置查询中显示的记录数 例:SELECT top 5 PERCENT

22、 * FROM 学生7.取消重复行 例:SELECT DISTINCT 性别 FROM 学生 8.对查询结果进行分组 例:SELECT 专业,avg(年龄) FROM 学生 GROUP BY 专业 HAVING avg(年龄)189.对查询结果进行排序 例:SELECT * FROM 学生 ORDER BY 学号 DESC10.连接查询(即涉及两个表以上的查询) 例:SELECT 学生.姓名,课程.课程名称 FROM 学生,课程11.嵌套查询(即将一个查询块嵌套在另一个查询块中的查询) 例:SELECT * FROM 学生WHERE 学号 IN (SELECT 学号 FROM 成绩 WHERE 成绩90)12.使用UNION运算符组合查询结果 例:SELECT 学号 FROM 学生 WHERE 性别=“男” UNION SELECT 学号 FROM 成绩 WHERE 成绩85【例6-15】使用SELECT语句创建查询:查看学生表中所有女同学的记录。 6.7.2 创建SQL特定查询 SQL查询是用户使用SQL语句创建的查询。SQL查询的类型:联合查询、传递查询、数据定义查询和子查询。 1.联合查询 用联合查询来合并两个或多个表字段的数据。 联合查询可将两个以上的表或查询所对应的多个字段合并为一个字段。执行联合查询时,将返回所包含的表或查

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论