数据库原理与应用Access.pptx
第5章 查询 查询就是将一个或多个数据表中满足特定条件的数据检索出来。查询不仅可以基于数据表来创建,还可基于查询来创建,同时,查询不仅可以根据指定条件来进行数据的查找,还可对数据进行计算、统计、排序、筛选、分组、更新和删除等各种操作。第1页/共96页5.1 查询概述 查询是对数据库表中的数据进行查找,产生动态表的过程。在Access中可以方便地创建查询,在创建查询的过程中需要定义查询的内容和规则,运行查询时系统将在指定的数据表中查找满足条件的记录,组成一个类似数据表的动态表。第2页/共96页5.1.1 查询的功能1选择字段 2选择记录 3编辑记录 4计算 5建立新表 6建立基于查询的报表和窗体第3页/共96页5.1.2 查询的类型 1选择查询2交叉表查询 3参数查询 4操作查询 5SQL查询第4页/共96页1选择查询 选择查询是最常用的查询类型,它是根据用户定义的查询内容和规则,从一个或多个表中提取数据进行显示。在选择查询中,还可以对记录进行分组,并对分组后的记录进行总计、计数、平均及其他类型的计算等。第5页/共96页2交叉表查询 交叉表查询是将某个数据表中的字段进行分组,一组作为查询的行标题,一组作为查询的列标题,然后在查询的行与列交叉处显示某个字段的统计值。交叉表查询是利用表中的行或列来进行数据统计的。它的数据源是一张基础表。第6页/共96页3参数查询 选择查询是在建立查询时就将查询准则进行定义,条件是固定的。参数查询是在运行查询时利用对话框来提示用户输入查询准则的一种查询。参数查询可以根据用户每次输入的值来确定当前的查询条件,以满足查询的要求。第7页/共96页4操作查询 操作查询的查询内容和规则的设定与选择查询相同,但它们有一个很大的不同是:选择查询是按照指定的内容和条件查找满足要求的数据,将查找到的数据进行展示;而操作查询是在查询中对所有满足条件的记录进行编辑等操作,操作查询会对基础数据表产生影响或生成新的数据表,如生成表查询,即会生成一个新的数据表,更新查询,则会根据更新条件对原数据表中的数据进行修改。第8页/共96页Access的操作查询有如下几种:(1)生成表查询利用一个或多个表中的全部或部分数据生成一个新的数据表。生成表查询通常用于重新组织数据或创建备份表等。(2)删除查询删除查询是将满足条件的记录从一个或多个数据表中删除。此操作会将基础数据表中的记录删除掉。(3)更新查询更新查询是对一个或多个表中的一组记录进行修改的查询。如对教师基本工资表中所有副教授的基本工资涨10%等,可利用更新查询来实现。(4)追加查询追加查询是从一个或多个数据表中将满足条件的记录找出,并追加到另一个或多个数据表的尾部的操作。追加查询可用于多个表的合并等。第9页/共96页5SQL查询 SQL查询就是利用SQL语句来实现的查询。SQL查询将在下一章中详细介绍,此章不再赘述。第10页/共96页5.2 表达式 在Access中,表达式广泛地应用于表、查询、窗体、报表、宏和事件过程等。表达式由运算对象、运算符和括号组成,运算对象包括常量、函数和对象标识符。Access中的对象标识符可以是数据表中的字段名称、窗体、报表名称、控件名称、属性名称等。第11页/共96页5.2.1 常量 常量分为系统常量和用户自定义常量,系统常量如逻辑值True(真值)、False(假值)和Null(空值)。注意:空值不是空格或空字符串,也不是0,而是表示没有值。用户自定义常量又常称为字面值,如数值“100”、字符串“ABCD”和日期“#08/8/8#”等。Access的常量类型包括数值型、字符型、日期型和逻辑型。第12页/共96页1数值型 数值型常量包括整数和实数。整数如123;实数,用来表示包含小数的数或超过整数示数范围的数,实数既可通过定点数来表示,也可用科学计数法进行表示。实数如12.3或0.123E2。第13页/共96页2文本型 文本型常量由字母、汉字和数字等符号构成的字符串。定义字符常量时需要使用定界符,Access中字符定界符有两种形式:单引号()、双引号()。如字符串ABC或ABC。第14页/共96页3日期型 日期型常量即用来表示日期型数据。日期型常量用“#”作为定界符,如2008年7月18日,表示成常量即为#08-7-18#,也可表示为#08-07-18#。在年月日之间的分隔符也可采用“/”作为分隔符,即#08/7/18#或#08/07/18#。对于日期型常量,年份输入为2位时,如果年份在0029范围内,系统默认为20002029年;如果输入的年份在3099之间,则系统默认为19301999年。如果要输入的日期数据不在默认的范围内,则应输入4位年份数据。第15页/共96页4逻辑型 逻辑型常量有两个值,真值和假值,用 True(或-1)表示真值,用False(或0)表示假值。系统不区分True和False的字母大小写。注意在数据表中输入逻辑值时,如果需要输入值,则应输入-1表示真,0表示假,不能输入True或False。第16页/共96页5.2.2 Access常用函数 系统设计人员提供了上百个的函数以供用户使用。在Access使用过程中,函数名称不区分大小写。根据函数的数据类型,我们将常用函数分为:数学型、文本型、日期时间型、逻辑型和转换函数等。本节,我们将对一部分常用函数进行介绍,如果需要更多的函数,请查阅帮助或系统手册。第17页/共96页1数学函数 函数函数功能功能示例示例函数值函数值Abs(number)求绝对值求绝对值Abs(-12.5)12.5Exp(number)e指数指数Exp(2.5)12.1825Int(number)自变量为正时,返回整数部分,舍去自变量为正时,返回整数部分,舍去小数部分;自变量为负时,返回不大小数部分;自变量为负时,返回不大于原值的整数于原值的整数Int(8.7)Int(-8.4)8-9Fix(number)无论自变量为正或负,均舍去小数部无论自变量为正或负,均舍去小数部分,返回整数分,返回整数Fix(8.7)Fix(-8.4)8-8Log(number)自然对数自然对数Log(3.5)1.253Rnd(number)产生产生01之间的随机数。自变量可缺省之间的随机数。自变量可缺省Rnd(2)01之间的随机之间的随机数数Sgn(number)符号函数。当自变量的值为正时,返符号函数。当自变量的值为正时,返回回1;自变量的值为;自变量的值为0时,返回时,返回0;自变;自变量的值为负时,返回量的值为负时,返回-1Sgn(5)Sgn(0)Sgn(-5.6)10-1Sqr(number)平方根。自变量非负平方根。自变量非负Sqr(6)2.449Round(number,precision)四舍五入函数。第二个参数的取值为四舍五入函数。第二个参数的取值为非负整数,用于确定所保留的小数位非负整数,用于确定所保留的小数位数数Round(12.674,0)Round(12.674,2)1312.67第18页/共96页2字符函数 函数函数功能功能示例示例函数值函数值Left(stringexpr,n)求左子串函数。从表达式左侧开始取求左子串函数。从表达式左侧开始取n个字符。个字符。每个汉字也作为每个汉字也作为1个字符个字符Left(北京北京,1)Left(Access,2)北北AcRight(stringexpr,n)求右子串函数。从表达式右侧开始取求右子串函数。从表达式右侧开始取n个字符。个字符。每个汉字也作为每个汉字也作为1个字符个字符Right(#2008-07-22#,3)Right(1234.56,3)-22.56Mid(stringexpr,m,n)求子串函数。从表达式中截取字符,求子串函数。从表达式中截取字符,m、n是数是数值表达式,由值表达式,由m值决定从表达式值的第几个字符值决定从表达式值的第几个字符开始截取,由开始截取,由n值决定截取几个字符。值决定截取几个字符。n缺省,缺省,表示从第表示从第m个字符开始截取到尾部个字符开始截取到尾部Mid(中央财经大学中央财经大学,3,2)Mid(中央财经大学中央财经大学,3)财经财经财经大学财经大学Len(stringexpr)求字符个数。函数返回表达式值中的字符个数。求字符个数。函数返回表达式值中的字符个数。表达式可以是字符、数值、日期或逻辑型表达式可以是字符、数值、日期或逻辑型Len(#2008-7-22#)Len(中央财经大学中央财经大学)Len(True)1162UCase(stringexpr)将字符串中小写字母转换为大写字母函数将字符串中小写字母转换为大写字母函数UCase(Access)UCase(学习学习abc)ACCESS学习学习ABCLCase(stringexpr)将字符串中大写字母转换为小写字母函数将字符串中大写字母转换为小写字母函数LCase(Access)accessSpace(number)生成空格函数。返回指定个数的空格符号生成空格函数。返回指定个数的空格符号+Space(2)+InStr(C1,C2)查找子字符串函数。在查找子字符串函数。在C1中查找中查找C2的位置,即的位置,即C2是是C1的子串,则返回的子串,则返回C2在在C1中的起始位置,中的起始位置,否则返回否则返回0InStr(One Dream,Dr)InStr(One Dream,Dor)50Trim(stringexpr)删除字符串首尾空格函数删除字符串首尾空格函数Trim(AA+BB)AA BBRTrim(stringexpr)删除字符串尾部空格函数删除字符串尾部空格函数RTrim(数据库数据库)数据库数据库LTrim(stringexpr)删除字符串首部空格函数删除字符串首部空格函数LTrim(数据库数据库)数据库数据库 String(n,stringexpr)字符重复函数。将字符串的第一个字符重复字符重复函数。将字符串的第一个字符重复n次,次,生成一个新字符串生成一个新字符串String(3,你好你好)你你你你你你第19页/共96页3日期时间函数 函数函数功能功能示例示例函数值函数值Date()日期函数。返回系统当前日期。无参函数日期函数。返回系统当前日期。无参函数Date()2008-07-22Time()时间函数。返回系统当前时间。无参函数时间函数。返回系统当前时间。无参函数Time()下午下午 03:33:51Now()日期时间函数。返回系统当前日期和时间,含年、月、日期时间函数。返回系统当前日期和时间,含年、月、日、时、分、秒。无参函数日、时、分、秒。无参函数Now()2008-07-22 下午下午 03:33:51Day(dateexpr)求日函数。返回日期表达式中的日值求日函数。返回日期表达式中的日值Day(date()19Month(dateexpr)求月份函数。返回日期表达式中的月值求月份函数。返回日期表达式中的月值Month(date()3Year(dateexpr)求年份函数。返回日期表达式中的年值求年份函数。返回日期表达式中的年值Year(date()2009Weekday(dateexpr)求星期函数。返回日期表达式中的这一天是一周中的求星期函数。返回日期表达式中的这一天是一周中的第几天。函数值取值范围是第几天。函数值取值范围是17,系统默认星期日是一,系统默认星期日是一周中的第周中的第1天天Weekday(date()4Hour(timeexpr)求小时函数。返回时间表达式中的小时值求小时函数。返回时间表达式中的小时值Hour(Time()15Minute(timeexpr)求分钟函数。返回时间表达式中的分钟值求分钟函数。返回时间表达式中的分钟值Minute(Time()33Second(timeexpr)求秒函数。返回时间表达式中的秒值求秒函数。返回时间表达式中的秒值Second(Time()51DateDiff(interval,date1,date2)求时间间隔函数。返回值为日期求时间间隔函数。返回值为日期2减去日期减去日期1的值。日的值。日期期2大于日期大于日期1,得正值,否则得负值。时间间隔参数,得正值,否则得负值。时间间隔参数的不同将确定返回值的不同含义。具体使用参见表的不同将确定返回值的不同含义。具体使用参见表5-4 所示所示第20页/共96页表5.4 DateDiff函数用法及示例 时间间隔参数时间间隔参数含义含义示例示例函数值函数值yyyy函数值为两个日期相差的年份函数值为两个日期相差的年份DateDiff(yyyy,#2008-07-22#,#2009-05-08#)1q函数值为两个日期相差的季度函数值为两个日期相差的季度DateDiff(q,#2008-07-22#,#2009-05-08#)3m函数值为两个日期相差的月份函数值为两个日期相差的月份DateDiff(m,#2008-07-22#,#2009-05-08#)10y,d函数值为两个日期相差的天数,参数函数值为两个日期相差的天数,参数y和和d作作用相同用相同DateDiff(d,#2008-07-22#,#2009-05-08#)290w函数值为两个日期相差的周数(满函数值为两个日期相差的周数(满7天为一周)天为一周),当相差不足,当相差不足7天时,返回天时,返回0DateDiff(w,#2008-07-22#,#2009-05-08#)DateDiff(w,#2008-07-22#,#2008-07-26#)410第21页/共96页4转换函数 函数函数功能功能示例示例函数值函数值Asc(stringexpr)返回字符串第一个字符的返回字符串第一个字符的ASCII码码Asc(ABC)65Chr(charcode)返回返回ASCII码对应的字符码对应的字符Char(66)BStr(number)将数值转换为字符串。如果转换结果是正数,将数值转换为字符串。如果转换结果是正数,则字符串前添加一个空格。则字符串前添加一个空格。Str(12345)Str(-1234)12345-12345 Val(stringexpr)将字符串转换为数值型数据将字符串转换为数值型数据Val(12.3A)Val(124d.3A)12.3124第22页/共96页5.2.3 表达式 表达式是由运算符和括号将运算对象连接起来的式子。常量和函数可以看成是最简单的表达式。表达式通常根据运算符的不同将表达式分为算术表达式、字符表达式、关系表达式和逻辑表达式。第23页/共96页1算术表达式 算术表达式是由算术运算符和数值型常量、数值型对象标识符、返回值为数值型数据的函数组成。它的运算结果仍为数值型数据。运算符运算符功能功能表达式示例表达式示例表达式值表达式值-取负值,单目取负值,单目运算运算-42-42+-621652幂幂4216*、/乘、除乘、除16*2/56.4整除整除16*256Mod模运算(求余模运算(求余数)数)87 Mod 987 Mod-9-87 Mod 9-87 Mod-966-6-6+、-加、减加、减8+6-122第24页/共96页在进行算术运算时,要根据运算符的优先级来进行。算术运算符的优先级顺序如下:先括号,在同一括号内,单目运算的优先级最高,然后先幂,再乘除,再模运算,后加减。第25页/共96页注意:在算术表达式中,当“+”号运算符的两侧的数据类型不一致,一侧是数值型数据,一侧是数值字符串时,完成的是算术运算,当两侧均为数值符号串时,系统完成的是连接运算,而不是算术运算。第26页/共96页在使用算术运算符进行日期运算时,可进行的运算只有如两种情况:(1)“+”运算:加号可用于一个日期与另一个整数(也可以是数字符号串或逻辑值)相加,得到一个新日期。例如,表达式#2008-07-22#+56的值为2008-09-16;表达式#2008-07-22#+True的值为2008-07-21;表达式#2008-07-22#+5的值为2008-07-27。(2)“-”运算:减号可用于一个日期减去一个整数(也可以是数字符号串或逻辑值),得到一个新日期;减号也可用于两个日期相减,差为这两个日期相关的天数。例如,表达式#2008-07-22#-#2008-5-1#的值为82,表达式#2008-07-22#-82的值为2008-05-01。第27页/共96页2字符表达式 字符表达式是由字符运算符和字符型常量、字符型对象标识符、返回值为字符型数据的函数等构成的表达式,表达式的值仍为字符型数据。运算符运算符功能功能表达式示例表达式示例表达式值表达式值+连接两个字符型数据。连接两个字符型数据。返回值为字符型数据返回值为字符型数据123+123总计:总计:+10*35.4123123#错误错误&将两个表达式的值进行将两个表达式的值进行首尾相接。返回值为字首尾相接。返回值为字符型数据符型数据123&123123&123打印日期打印日期&Date()总计:总计:&10*35.4123123123123打印日期打印日期2008-07-22总计:总计:354第28页/共96页注意:(1)“+”运算符的两个运算量都是字符表达式时才能进行连接运算;(2)“&”运算符是将两个表达式的值进行首尾相接。表达式的值可以是字符、数值、日期或逻辑型数据。如果表达式的值非字符型,则系统先将它转换为字符,再进行连接运算。可用来将多个表达式的值连接在一起。第29页/共96页3关系表达式 关系表达式可由关系运算符和字符表达式、算术表达式组成,它的运算结果为逻辑值。关系运算时是运算符两边同类型的元素进行比较,关系成立,则表达式的值为真(True),否则为假(False)。第30页/共96页表5.8 关系运算符功能及示例 运算符运算符功能功能表达式示例表达式示例表达式值表达式值120False大于大于aAFalse=等于等于abc=AbcTrue 不等于不等于4 5True=小于等于小于等于3*3=大于等于大于等于TrueFalseFalseIs Null左侧的表达式值为空左侧的表达式值为空 Is NullFalseIs Not Null左侧的表达式值不为空左侧的表达式值不为空 Is Not NullTrueIn判断左侧的表达式的值是否判断左侧的表达式的值是否在右侧的值列表中在右侧的值列表中中中 In(大大,中中,小小)Date()In(#2008-07-01#,#2008-07-31#)20 In(10,20,30)TrueFalseTrueBetween And判断左侧的表达式的值是否判断左侧的表达式的值是否在指定的范围内。闭区间在指定的范围内。闭区间Date()Between#2008-07-01#And#2008-07-31#B Between a And z54 Between 60 And 78FalseTrueFalseLike判断左侧的表达式的值是否判断左侧的表达式的值是否符合右侧指定的模式符。如符合右侧指定的模式符。如果符合,返回真值,否则为果符合,返回真值,否则为假假abc Like abcde123 Like#2#x4e的的2 Like x#a-f?!4-7n1 Like NPT?False TrueTrueTrue第31页/共96页关系运算遵循如下规则:(1)数值型数据按照数值大小比较;(2)字符型数据按照字符的ASCII码比较,但字母不区分大小写。汉字默认的按拼音顺序进行比较;(3)日期型数据,日期在前的小,在后的大;(4)逻辑型数据,逻辑值False(0)大于True(-1);(5)Like在模式符中支持通配符。在模式符中可使用通配符“?”表示一个字符(字母、汉字或数字),通配符“*”表示零个或多个字符(字母、汉字或数字),通配符“#”表示一个数字。在模式符中使用中括号()可为Like左侧该位置的字符或数字限定一个范围。如a-d,即表示a、b、c、d中的任何一个符号;若在中括号内指定的字符或数字范围前使用“!”号,则表示不在该范围内,如!2-4,即除2、3、4之外的任意数字;(6)在运算符Like前面可以使用逻辑运算符Not,表示相反的条件。第32页/共96页4逻辑表达式 逻辑表达式可由逻辑运算符和逻辑型常量、逻辑型对象标识符、返回逻辑型数据的函数和关系运算符组成,其运算结果仍是逻辑值。第33页/共96页表5.9 算术运算符功能及示例 运算符运算符功能功能表达式示例表达式示例表达式值表达式值Not非非Not 3+4=7FalseAnd与与Aa And 1+3*615FalseOr或或Aa Or 1+3*615TrueXor异或异或Aa Xor 1+3*615TrueEqv逻辑等价逻辑等价Aa Eqv 1+3*615 False第34页/共96页注意:逻辑表达式的运算优先级从高到低是:括号,Not,And,Or,Xor,Eqv表达式运算的规则是:在同一个表达式中,如果只有一种类型的运算,则按各自的优先级进行运算;如果有两种或两种以上类型的运算时,则按照函数运算、算术运算、字符运算、关系运算、逻辑运算的顺序来进行 第35页/共96页查询准则练习1.要将“选课成绩”表中的成绩取整,可以使用_。A.Abs(成绩)B.Int(成绩)C.Srq(成绩)D.Sgn(成绩)2.函数Sgn(-2)返回值是_。A.0 B.1 C.-1 D.-2第36页/共96页3.特殊运算符“IsNull”用于指定一个字段为_。A.空值 B.空字符串 C.缺省值 D.特殊值4.返回一个值,该值是从字符表达式右侧第1个字符开始截取若干个字符的函数为_。A.Space B.String C.Left D.Right第37页/共96页5.假设某数据库表中有一个工作时间字段,查找15天前参加工作的记录的准则是_。A.=Data()-15 B.Data()-15 D.18 or 18 and 18 not 18 like 21”5.返回字符表达式中值的最小值的函数为_。A.Avg B.Count C.Max D.Min第39页/共96页界面第40页/共96页查询视图 Access 2003的每一个查询主要有三个视图:设计视图数据表视图SQL视图 三种视图可以通过工具栏上的“视图”按钮下拉列表框中的视图进行相互转换。第41页/共96页1、数据表视图“数据表”视图用来显示查询的结果数据。第42页/共96页2、设计视图“设计”视图用来对查询设计进行修改。第43页/共96页3、SQL 视图“SQL”视图用来显示与“设计”视图等效的SQL语句。第44页/共96页5.3 选择查询 创建查询的方法一般有两种:查询向导和“设计”视图。利用查询向导,可创建不带条件的查询。如果要创建带条件的查询,则必须要在查询设计视图中进行设置。第45页/共96页条件查询示例查询87年出生的女生或86年出生的男生的基本信息,并显示学生的姓名,性别,出生日期和所在班级信息第46页/共96页表达式生成器 在查询设计网格中,如果用户对表达式的书写规则不了解,对表达式中的操作符或要使用的函数不熟悉,可以在设计网格中的“条件”行单元格中启动“表达式生成器”第47页/共96页5.3.1 利用向导创建查询 1基于单表的简单查询向导 2基于多表的查询向导 第48页/共96页建立单表查询 查询学生的基本信息,并显示学生的姓名、性别、出生日期和专业编号。第49页/共96页第50页/共96页建立多表查询 查询学生的课程成绩,并显示学生的姓名、所选课程名称和考试成绩。(该查询涉及到3个表:“学生”表、“课程”表和“学生选课”表)第51页/共96页第52页/共96页5.3.2 利用“设计”视图创建查询 1查询“设计”视图 2使用“设计”视图创建查询 3查询设计网格的使用 第53页/共96页5.3.3 查询属性 1上限值 2记录集类型 3输出所有字段 4唯一值 第54页/共96页5.3.4 添加计算字段 在查询中,我们会常常关心数据表中的某些信息,而不是数据表的某个字段的完全信息,这就需要采用添加计算字段的方式来实现。例如,要查看学生基本信息表中所有学生的出生月份,最后显示学生的姓名和出生月份,并按出生月份升序排列。第55页/共96页添加计算字段 计算每个学生的“编译原理”课程的学期成绩(学期成绩平时成绩0.3+考试成绩0.7)第56页/共96页5.3.5 总计查询在建立总计查询时,人们更多的是关心记录的统计结果,而不是具体的某个记录。如学生的人数、各个学院的学生人数、选课学生的平均成绩等。在查询中,除了查询满足某些特定条件的记录外,还常常需要对查询的结果进行相应的计算,如求最大值、最小值、计数、求均值等等。总计查询分为两类:对数据表中的所有记录进行总计查询和对记录进行分组后再分别进行总计查询。注意:不能在总计查询的结果中修改数据。第57页/共96页1总计项 总计项总计项功能功能类别类别名称名称对应函数对应函数函数函数总计总计Sum求某字段(或表达式)的累加项求某字段(或表达式)的累加项平均值平均值Avg求某字段(或表达式)的平均值求某字段(或表达式)的平均值最小值最小值Min求某字段(或表达式)的最小值求某字段(或表达式)的最小值最大值最大值Max求某字段(或表达式)的最大值求某字段(或表达式)的最大值计数计数Count对记录计数对记录计数标准差标准差StDev求某字段(或表达式)值的标准偏差求某字段(或表达式)值的标准偏差方差方差Var求某字段(或表达式)值的方差求某字段(或表达式)值的方差其他总计项其他总计项分组分组Group By定义要执行计算的组定义要执行计算的组第一条记录第一条记录First求在表或查询中第一条记录的字段值求在表或查询中第一条记录的字段值最后一条记最后一条记录录Last求在表或查询中最后一条记录的字段值求在表或查询中最后一条记录的字段值表达式表达式Expression创建表达式中包含统计函数的计算字段创建表达式中包含统计函数的计算字段条件条件Where指定不用于分组的字段准则指定不用于分组的字段准则第58页/共96页2总计查询 创建总计查询的操作方式与普通的条件查询相同,唯一的区别是需要设计总计行,即在查询设计视图下,单击工具栏中的“总计”按钮 ,在设计网格中添加“总计”行,在总计行中对总计的方式进行选择。第59页/共96页总计查询也可具有分析功能,总计功能的目的就是将数据表的记录,予以组化后,再加以计算,故总计功能相当重要。让总计功能出现在查询设计视图中:第60页/共96页计数 统计学生总人数。第61页/共96页创建自定义查询 计算“男”同学的平均年龄。第62页/共96页3分组总计查询 在查询中,我们常常不仅需要对某一个字段进行统计,同时,还希望将记录进行分组,再对分级后的值进行统计。这样,在分组时,只需在查询中添加一列分组列,对分组后的结果进行统计。第63页/共96页平均值 统计“Access 数据库应用基础”课程的“考试成绩”平均分。第64页/共96页5.4 交叉表查询 在Access中进行查询时,可以根据条件查看满足某些条件的记录,也可以根据需求在查询中进行计算。但这两方面的功能并不能很好地解决在数据查询中的问题。如果我们需要查看每个学院的男女生各自的人数,采用分组查询时,每个学院均有男生和女生,则每个学院在查询的结果中均会出现两次,同样,在同一性别中,所属学院名称也会重复出现。在Access中,系统提供了一种很好地查询方式解决此类问题,即交叉表查询。第65页/共96页5.4.1 利用向导创建交叉表查询 使用交叉表查询向导创建查询时要求查询的数据源只能来源于一个表或一个查询,如果查询数据涉及到多表,则必须先将所有相关数据建立一个查询,再用该查询来创建交叉表。第66页/共96页使用“交叉表查询向导”建立查询 在“教师”表中统计各个系的教师人数及其职称分布情况。第67页/共96页第68页/共96页5.4.2 利用“设计视图”创建交叉表查询 在交叉表查询中,除了运用交叉表查询向导创建交叉查询外,还可利用查询设计视图创建交叉表查询。第69页/共96页使用设计视图建立交叉表查询 统计每个学生的选课情况。第70页/共96页5.5 操作查询 在对数据库进行维护时,常常需要大量的修改数据,如备份数据表、在数据表中删除不符合条件的数据、对数据表中的数据进行批量修改等操作。Access提供了相应的操作查询,可以轻松地完成相应的操作。Access提供的操作查询一共有4种:生成表查询、删除查询、更新查询、追加查询。第71页/共96页第72页/共96页5.5.1 生成表查询 查询是一个动态数据集,关闭查询,则动态数据集就不存在了,如果要将该数据集独立保存备份,或提交给其他的用户,则可通过生成表查询将动态数据集保存在一个新的数据表中。生成表查询可以利用一个或多个表的数据来创建新数据表。第73页/共96页生成表查询 在“成绩管理”数据库中,根据“学生”表和“学生选课”表建立一个查询,然后把查询结果存储为一个表。第74页/共96页第75页/共96页5.5.2 更新查询 更新查询可以根据条件对一个或多个数据表中的一批数据进行更新,大大提高了数据的维护效率和准确性。第76页/共96页更新查询 利用更新查询将“平时成绩”改为“平时成绩*30%”,将“考试成绩”改为“考试成绩*70%”。第77页/共96页5.5.3 追加查询 追加查询即是根据条件将一个或多个表中的数据追加到另一个数据表的尾部的操作,通常可以使用该操作来实现数据的备份等。第78页/共96页追加查询 将“新生”表的记录追加到“学生”表中。第79页/共96页5.5.4 删除查询 删除查询是从一个或多个数据表中删除满足条件的记录,这里删除的是记录,而不是数据表中某个字段的值,如果要删除某个字段的值,可利用更新查询来实现。第80页/共96页删除查询 删除查询可以从单个表中删除记录,也可以从多个相互关联的表中删除记录。如果要从多个表中删除相关记录,必须满足以下几点:在关系窗口中定义相关表之间的关系;在关系对话框中选择“实施参照完整性”复选项;在关系对话框中选择“级联删除相关记录”复选项。第81页/共96页删除查询删除“学生成绩生成表”中所有男生的记录。第82页/共96页5.6 参数查询 在前面创建的查询中,不管采用何种方式实现的查询,它的查询条件和方式都是固定的,如果我们希望按照某个字段或表达式不同的值来查看结果,就必须使用参数查询。严格地说,参数查询不能算是单独的一类查询,它是建立在选择查询、交叉表查询或操作查询基础上的。在建立选择查询、交叉表查询和操作查询后,可将它修改为参数查询。第83页/共96页5.6.1 单参数查询 创建单参数查询,即是在查询设计网格中指定一个参数,在执行参数查询时,根据提示输入参数值完成查询。创建参数查询的方式是在“设计网格”的“条件”行中,利用方括号将查询参数的提示信息括起来,通常我们也将括号内的内容称作参数名,同时将括号及其括起来的内容作为查询的条件参数。第84页/共96页参数查询根据所输入的专业编号查询该专业学生的基本信息。显示姓名、性别、专业编号。第85页/共96页5.6.2 多参数查询 我们不仅可以创建单参数查询,还可以根据需要创建多参数查询。如果创建了多参数查询,在运行查询时,则必须根据对话框提示依次输入多个参数值。第86页/共96页5.7 其他类型的查询 5.7.1 查找重复项查询 在数据维护过程中,我们常常需要对数据表或查询中一些数据进行查重处理,Access提供了查找重复项查询可以实现这个目的。5.7.2 查找不匹配项查询 在数据管理中,我们常常要对一些不匹配的数据进行查询,如没有选课的学生姓名,即学生基本情况表中存在的学生,但在学生成绩表中没有他的记录,同样,如没有开课的教师,即教师信息表中有的教师,但教师开课表中不存在该教师的记录等。第87页/共96页查找重复项查询 查找同年、同月、同日出生的学生信息。第88页/共96页第89页/共96页查找不匹配项查询 查找没有选课的学生姓名、性别及专业编号。第90页/共96页第91页/共96页5.8 查询的其他操作 5.8.1 查询的更名 5.8.2查询的复制 5.8.3查询的删除 第92页/共96页重命名查询字段 在查询结果中,将“专业名称”一列的字段名称改为“所修专业情况”第93页/共96页运行查询的方法 在数据库窗口“查询”对象下,双击要运行的查询;选择要运行的查询,单击“数据库”窗口工具栏上的“打开”按钮。在查询“设计”视图中,单击“执行”按钮。在查询“设计”视图中,单击“视图”按钮。第94页/共96页下课下课第95页/共96页感谢您的观看。第96页/共96页