Access数据库实用教程1第4章查询的创建和使用查询概述选择查询的创建在查询中进行计算交叉表查询的创建参数查询的创建操作查询的创建SQL查询的创建已建查询的编辑和使用24.1查询概述4.1.1查询的功能问题提出建立数据库的目的是为更好地管理和使用其中的数据,获取有用信息。但数据是分散放在各个表中的,如何有效地获取待查询的信息例如,“张三”的考试成绩?男女同学的人数?34.1查询概述4.1.1查询的功能问题提出查询含义查询对象不是数据的集合,而是操作的集合查询的结果是一个数据集,也称为动态集。它很像一个表,但并没有存储在数据库中创建查询后,只保存查询的操作,只有在运行查询时,才会从查询数据源中抽取数据,并创建它;只要关闭查询,查询的动态集就会自动消失44.1查询概述4.1.1查询的功能问题提出查询含义查询功能选取数据编辑数据实现计算建立新表为窗体和报表提供数据54.1查询概述4.1.2查询的类型选择查询根据指定的查询条件,从一个或多个数据源中获取数据并显示结果交叉表查询将来源于某个数据源中的字段进行分组,一组列在数据表的左侧,一组列在数据表的上部,然后在行与列的交叉处显示某字段的统计值64.1查询概述4.1.2查询的类型参数查询利用对话框来提示用户输入查询条件,并根据输入的条件来检索记录操作查询四种:生成表、删除、更新和追加74.1查询概述4.1.2查询的类型SQL查询使用SQL语句创建的查询某些SQL查询称为SQL特定查询,包括四种,联合查询、传递查询、数据定义查询和子查询84.2选择查询的创建4.2.1使用查询向导操作者可在向导指示下选择一个或多个数据源、一个或多个字段创建查询使用向导不能创建带条件的查询94.2选择查询的创建4.2.1使用查询向导使用“简单查询向导”例4-1查找“教师”表中的记录,并显示“姓名”、“性别”、“工作时间”和“系别”等字段信息所建查询数据源来自于一个表例4-2查找每名学生选课成绩,并显示“学生编号”、“姓名”、“课程名称”和“考试成绩”等字段。查询名为“学生选课成绩”所建查询数据源来自于一个表104.2选择查询的创建4.2.1使用查询向导使用“查找不匹配项查询向导”例4-3判断“学生”表中是否有重名学生,如果有显示“姓名”、“学生编号”、“性别”和“入校日期”,查询名为“学生重名查询”根据“查找重复项查询向导”创建的查询结果,可以确定“学生”表中的“姓名”字段是否存在相同的值。114.2选择查询的创建4.2.1使用查询向导使用“查找重复项查询向导”例4-4查找哪些课程没有学生选修,并显示“课程编号”和“课程名称”124.2选择查询的创建4.2.2使用设计视图查询设计视图组成对象窗格设计网格134.2选择查询的创建4.2.2使用设计视图步骤添加数据源—表或查询选择查询内容—字段填写查询条件(可选)设置排序(可选)144.2选择查询的创建4.2.2使用设计视图创建不带条件的查询例4-5使用设计视图创建查询,查找并显示授课教师的“系别”、“姓名”、“课程名称”和“学分”,要求按系别从大到小顺序显示分析:查询用到“系别”、“姓名”、“课程名称”和“学分”等字段分别来自“教师”和“课程”两个表,但两表间没有直接关系,需通过“授课”表建立两表间关系。故应创建基于“教师”、“课程”和“授课”3个表的查询。154.2选择查询的创建4.2.2使用设计视图创建带条件的查询例4-6查找1992年参加工作的男教师,并显示“姓名”、“性别”、“学历”、“职称”、“系别”和“电话号码”分析:要创建上述查询,需两个条件,一是性别值为“男”,二是工作时间值为1992,且两个字段值均应等于条件给定的值。故两条件是“与”关系164.2选择查询的创建4.2.2使用设计视图创建带条件的查询例4-6查找1992年参加工作的男教师,并显示“姓名”、“性别”、“学历”、“职称”、“系别”和“电话号码”174.2选择查询的创建4.2.3查询条件是指在查询中用于限制检索记录的条件表达式,由运算符、常量、字段值、函数和字段名组成运算符:是构成条件表达式的基本元素。Access提供了四种运算符,分别是算术运算符、关系运算符、逻辑运算符和特殊运算符184.2选择查询的创建4.2.3查询条件运算符算术运算符:+-*/关系运算符:==逻辑运算符:andornot其他:Between…and…,like,in,IsNull,IsNotNull194.2选择查询的创建4.2.3查询条件运算符函数数值函数:Abs,Int,Sqr,……字符函数:Left,Right,Len,…………204.2选择查询的创建4.2.3查询条件运算符函数条件表达式示例214.2选择查询的创建4.2.3查询条件设置查询条件时注意日期型数据两边加“#”,字符型数据两边加半角双引号在条件中字段名必须用方括号括起来两个以上条件时,同行相与,异行相或条件中引用表名时,应用方括号括起来,与字段名之间用“!”。如[教师档案表]![姓名]22设置查询条件例如:性别为“男”的教师23设置查询条件例如:高级职称的教师24设置查询条件例如:高级职称的“女”教师25设置查询条件例如:05级学生的成绩假定学号的前四位为年级26设置查询条件例如:没有联系电话的教师27设置查询条件例如:姓“李”的学生284.3在查询中进行计算4.3.1查询中的计算功能预定义计算是系统提供的用于对查询中的记录组或全部记录进行的计算包括:合计、平均值、最小值、最大值、计数等自定义计算用一个或多个字段进行数值、日期和文本计算需要在查询设计网格中直接添加字段294.3在查询中进行计算4.3.2总计查询例4-8统计教师人数。304.3在查询中进行计算4.3.2总计查询例4-9统计1992年参加工作的教师人数。314.3在查询中进行计算4.3.2总计查询例4-10在“1992年参加工作人数统计”查询中,将以“教师编号”字段统计的结果显示标题改为“教师人数”。324.3在查询中进行计算4.3.3分组总计计算将记录进行分组,对每个组的值进行统计分组统计时,只要在该字段的“总计”行上选择“分组”就可以了例4-11计算各类职称的教师人数,并显示“职称”和“人数”。334.3在查询中进行计算4.3.4计算字段统计的数据不在表中,或者用于计算的数据值来源于多个字段时例4-12计算每名教师的工龄,并显示“姓名”、“系别”、“职称”和“工龄”。按照题目要求,需将“工龄”设置为计算字段,其值可根据系统当前日期和工作时间计算得出。计算表达式为:Year(Date())-Year([工作时间])。344.3在查询中进行计算4.3.4计算字段统计的数据不在表中,或者用于计算的数据值来源于多个字段时例4-12计算每名教师的工龄,并显示“姓名”、“系别”、“职称”和“工龄”。354.4交叉表查询的创建4.4.1交叉表查询的概念所谓交叉表查询,就是将来源于某个表中的字段进行分组,一组列在数据表的左侧,一组列在数据表的上部,然后在数据表行与列的交叉处显示表中某个字段的各种计算值与Excel中的数据透视表一样364.4交叉表查询的创建4.4.3使用设计视图例4-15创建一个交叉表查询,使其显示各班每门课程的总评成绩的平均分。384.5参数查询的创建参数查询的含义利用对话框,提示用户输入参数,并检索符合所输参数的记录或值可以建立一个参数的查询,也可以建立多个参数的查询394.5参数查询的创建4.5.1单参数查询创建单参数查询,即指定一个参数。在执行单参数查询时,输入一个参数值例4-16按学生姓名查找某学生成绩,并显示“学生编号”、“姓名”、“课程名称”及“考试成绩”等。404.5参数查询的创建4.5.2多参数查询创建多参数查询,即指定多个参数。在执行多参数查询时,需依次输入多个参数值例4-17建立一个查询,使其显示某门课程某成绩范围内的学生“姓名”、“课程名称”和“总评成绩”。414.6操作查询的创建操作查询的含义操作查询是指仅在一个操作中更改许多记录的查询例如,在一个操作中删除一组记录,更新一组记录等等424.6操作查询的创建操作查询的类型生成表查询:利用一个或多个表中的数据创建一个新表删除查询:从一个或多个表中删除指定的数据更新查询:对一个或多个表中的记录进行更新追加查询:从一个或多个表中将一组记录追加到另一个或多个表中434.6操作查询的创建4.6.1生成表查询生成表查询是利用一个或多个表中的全部或部分数据生成一个新表例4-18将总评成绩在90分以上的学生信息存储到一个新表中,表名为“90分以上学生情况”,表内容为“学生编号”、“姓名”、“性别”、“年龄”和“考试成绩”等字段。444.6操作查询的创建4.6.2删除查询能够从一个或多个表中删除一条或多条记录例4-19将选课成绩表中总评成绩小于60分的记录删除。454.6操作查询的创建4.6.3更新查询例20将所有1988年及以前参加工作的教师职称改为副教授。464.6操作查询的创建4.6.4追加查询能将一个或多个表中经过选择的数据追加到另一个已存在表的尾部例4-21建立一个追加查询将考试成绩在80~90分之间的学生成绩添加到已建立的“90分以上学生情况”表中。474.6操作查询的创建注意:操作查询执行后,不能撤消刚刚做过的更改操作484.7SQL查询的创建4.7.1显示SQL语句在Access中,任何一个查询都对应着一条SQL语句。在创建查询时,系统会自动地将操作命令转换为SQL语句,只要打开查询,切换到SQL视图,就可以看到系统生成的SQL语句。494.7SQL查询的创建4.7.2常用SQL语句SQL语句查询:SELECT操纵:INSERT、UPDATE、DELETE定义:CREATE、DROP、ALTER控制:GRANT、REVOTE504.7SQL查询的创建4.7.2常用SQL语句INSERT语句格式:INSERTINTO表名[(字段名1[,字段名2…])]VALUES(常量1)[,常量2]…);514.7SQL查询的创建4.7.2常用SQL语句INSERT语句例4-22在“授课”表中插入一条新记录(8,105,96011)。INSERTINTO授课VALUES(8,105,96011);524.7SQL查询的创建4.7.2常用SQL语句UPDATE语句格式:UPDATE表名SET字段名1=表达式1[字段名2=表达式2]…[WHERE条件];534.7SQL查询的创建4.7.2常用SQL语句UPDATE语句例4-23将“教师”表中“教师编号”为“96011”教师的工作时间改为:1992-2-26。UPDATE教师SET工作时间=#1992-2-26#WHERE教师编号=96011;544.7SQL查询的创建4.7.2常用SQL语句DELETE语句格式:DELETEFROM表名[WHERE条件];554.7SQL查询的创建4.7.2常用SQL语句DELETE语句例4-24将“教师”表中教师编号为“98014”的记录删除。DELETE*FROM教师WHERE教师编号=98014;564.7SQL查询的创建4.7.2常用SQL语句SELECT语句格式:SELECT目标列表达式[,目标列表达式]…FROM表名1[,表名2]…[WHERE条件表达式][GROUPBY字段名1][ORDERBY字段名2[ASC|DESC]];574.7SQL查询的创建4.7.2常用SQL语句SELECT语句例4-25查找并显示“教师”表中“姓名”、“性别”、“工作时间”和“系别”4个字段。SELECT姓名,性别,工作时间,系别FROM教师;584.7SQL查询的创建4.7.2常用SQL语句SELECT语句例4-26查找1992年参加工作