1、1第五章第五章 查询设计查询设计 2本章概要本章概要 本章学习,主要掌握以下几点:本章学习,主要掌握以下几点:v 数据库查询概念数据库查询概念v 创建查询的方法创建查询的方法v 正确书写查询表达式的方法正确书写查询表达式的方法v SQL查询的概念及相关命令查询的概念及相关命令35.1 查询概念查询概念 一、查询一、查询 查询是指从不同的角度观看数据表中的记录查询是指从不同的角度观看数据表中的记录的构成信息。的构成信息。Access将查找数据的方式称为将查找数据的方式称为“查查询询”,将由多条记录所构成的查询结果称为,将由多条记录所构成的查询结果称为“记记录集录集”。查询本身并未保存数据,只保存
2、。查询本身并未保存数据,只保存SQL查查询命令。询命令。二、查询种类二、查询种类 查询的种类分为选择查询、参数查询、交叉查询的种类分为选择查询、参数查询、交叉表查询、表查询、操作查询操作查询、SQL查询等。查询等。45.2 用查询向导创建查询用查询向导创建查询 建立查询的建立查询的3种方法:种方法:一、直接采用手工书写方式一、直接采用手工书写方式 二、使用查询设计视图二、使用查询设计视图 三、利用查询向导三、利用查询向导51、简单查询向导、简单查询向导 选择简单查询向导可以创建简单的选择查选择简单查询向导可以创建简单的选择查询,包括询,包括明细查询明细查询和和汇总查询汇总查询。6789注意:为
3、查询所起的名字不要与表名重复。注意:为查询所起的名字不要与表名重复。1011122、交叉表查询向导、交叉表查询向导 交叉表查询可以按照两个字段进行分组,交叉表查询可以按照两个字段进行分组,对第对第3个字段或记录数目进行统计(合计、计个字段或记录数目进行统计(合计、计算以及求平均值等),一个分组数据列在数据算以及求平均值等),一个分组数据列在数据表的左侧,另一组列在数据表的上部。统计数表的左侧,另一组列在数据表的上部。统计数据位于两个分组数据的交叉点。据位于两个分组数据的交叉点。注意:行标题可以有多个,但最多有注意:行标题可以有多个,但最多有3个。个。131415162、重复项查询向导、重复项查
4、询向导“新建”-“查找重复项查询向导”-选择源表-选择字段-选择其它字段作为其他查询字段如果要查询姓名重复3次、4次以上的学生名单,可以修改刚才所生成的查询,进入“查询设计视图”“SQL视图”练习:查询民族重复3次以上的民族名单173、查找不匹配项查询向导、查找不匹配项查询向导有时需要查询一个表中所含有而另一个表中没有的记录,利用不匹配项查阅向导可以完成这种查询。练习:查询学生基本情况表中男同学的一些信息185.3 查询设计视图查询设计视图1、设计视图、设计视图 为了满足特殊要求的查询时,需要自己为了满足特殊要求的查询时,需要自己创建查询视图。创建查询视图。列选择器列选择器数据源数据源子窗口子
5、窗口设计网格设计网格192、添加表、添加表/查询查询20213、选择字段、选择字段单一字段加入法:单一字段加入法:1、双击表或查询中的某个字段、双击表或查询中的某个字段 2、鼠标拖动、鼠标拖动 3、先选择一个表或者查询,然后在第二行、先选择一个表或者查询,然后在第二行 选择某个字段选择某个字段所有字段的加入法:所有字段的加入法:拖动表的所有字段标签的星状符号拖动表的所有字段标签的星状符号“*”删除所选字段删除所选字段 “选中选中”-“Delete”224、查询设计要素、查询设计要素v 查询的数据源查询的数据源v 显示的字段显示的字段v 排序准则排序准则v 是否显示是否显示v 条件准则条件准则v
6、 联接关系联接关系v 分组要素与统计函数要素分组要素与统计函数要素v 子查询子查询235.4 查询条件准则查询条件准则1、SQL表达式表达式24表达式表达式:是由常量、运算符、文字、函数与:是由常量、运算符、文字、函数与 字段名、控件和属性所组成的一个字段名、控件和属性所组成的一个 字符串。字符串。分类分类:数值表达式、字符表达式、关系表达:数值表达式、字符表达式、关系表达 式和逻辑表达式。式和逻辑表达式。注注:(1 1)在设计网格中输入表达式时,系统将)在设计网格中输入表达式时,系统将 在光标改变时替用户插入特定的字符。在光标改变时替用户插入特定的字符。(2 2)如果所输入的表达式长度超过标
7、准的)如果所输入的表达式长度超过标准的 输入区域,则可以在输入区域,则可以在“显示比例显示比例”对话对话 框中输入表达式。框中输入表达式。(3 3)可以借助)可以借助“表达式生成器表达式生成器”来完成表达来完成表达 式的输入。式的输入。252、字符串表达式作为准则、字符串表达式作为准则 对于文本型、备注型和超链接型字段,对于文本型、备注型和超链接型字段,以字符串表达式作为查询条件准则。以字符串表达式作为查询条件准则。(1)字符串常数)字符串常数 文本两侧加上半角双引号。在条件表达式文本两侧加上半角双引号。在条件表达式中输入时可以不用加双引号,系统自动加上。中输入时可以不用加双引号,系统自动加上
8、。如果文本本身就有双引号,可以在字符串常数如果文本本身就有双引号,可以在字符串常数上加上半角单引号。上加上半角单引号。2627(2)包含通配符的字符串表达式)包含通配符的字符串表达式 包含通配符的字符串表达式通常以包含通配符的字符串表达式通常以“Like”作为运算符,表示执行匹配运算。作为运算符,表示执行匹配运算。28(3)排除查询)排除查询 排除查询的表达式需要用到逻辑运算符排除查询的表达式需要用到逻辑运算符“NOT”。(4)多条件查询)多条件查询 多条件查询可分成两类:条件之间的关系是多条件查询可分成两类:条件之间的关系是“AND”,条件之间的关系是条件之间的关系是“OR”。练习:练习:1
9、、查询所有姓、查询所有姓“李李”的学生的记录。的学生的记录。2、查询所有不姓、查询所有不姓“李李”的学生的记录。的学生的记录。3、查询所有姓李且是山东籍的学生。、查询所有姓李且是山东籍的学生。4、查询所有姓李的或者姓王的学生。、查询所有姓李的或者姓王的学生。5、查询籍贯是、查询籍贯是“安徽省安徽省”或或“江苏省江苏省”的所有学生的记录。的所有学生的记录。(也可以用(也可以用in)293、数值表达式作为准则、数值表达式作为准则 在自动编号型、数字型和货币型字段的条在自动编号型、数字型和货币型字段的条件栏中输入数值表达式作为条件准则。数值常件栏中输入数值表达式作为条件准则。数值常数直接输入即可,无
10、需分隔符。数直接输入即可,无需分隔符。304、逻辑值作为条件表达式、逻辑值作为条件表达式 是是/否型定段否型定段5、日期、日期/时间表达式作为准则时间表达式作为准则 例:日期例:日期#2006-8-3#时间格式时间格式#17:40:49#练习:练习:1、查询出生日期为、查询出生日期为1994-3-12的学生的记录。的学生的记录。2、查询、查询1994年出生的所有学生的记录。年出生的所有学生的记录。3、查询生日是今天的所有学生的记录。、查询生日是今天的所有学生的记录。316、包含空值的表达式作为准则、包含空值的表达式作为准则 空值:空值:Null 字段中没有数据或者未知的值。字段中没有数据或者未
11、知的值。空字符串:表示长度为空字符串:表示长度为0的字符串。彼此之间没有空的字符串。彼此之间没有空格的双引号。格的双引号。注注:如果在定义字段的查询条件时使用表达式如果在定义字段的查询条件时使用表达式Like“*”,则,则查询结果中此字段会包含空字符串,而不含查询结果中此字段会包含空字符串,而不含Null.按照升序对字段进行排序时,字段中包含按照升序对字段进行排序时,字段中包含null的记录将的记录将列于第一位,如果同时包含列于第一位,如果同时包含null和空字符串,则排序结果和空字符串,则排序结果中值中值null列于第一位,紧接着是空字符串。列于第一位,紧接着是空字符串。练习:练习:1、查询
12、出生日期未知的所有学生的记录。、查询出生日期未知的所有学生的记录。2、查询所有有照片的所有学生的记录。、查询所有有照片的所有学生的记录。3、查询简历是空字符串的所有学生的记录。、查询简历是空字符串的所有学生的记录。327 7、设置查询属性作为准则、设置查询属性作为准则操作:“视图”-“属性”-“查询属性”例:求出年龄最大的10名学生名单 求出全校学生民族的类别 设置选择查询的结果只能是查看335.5 统计查询统计查询 在字段中显示计算结果时,结果数据并未存储在字段中显示计算结果时,结果数据并未存储在表中,在每次执行查询时,系统都将重新进行计在表中,在每次执行查询时,系统都将重新进行计算,以使计
13、算结果永远以数据库中最新的数据为准。算,以使计算结果永远以数据库中最新的数据为准。新建一个查询,进入设计视图,单击工具栏上新建一个查询,进入设计视图,单击工具栏上的的“总计总计”按钮,在查询设计视图的下半部分就会按钮,在查询设计视图的下半部分就会出现出现“总计总计”行。单击总计行的下拉组合框按钮,行。单击总计行的下拉组合框按钮,弹出所有弹出所有12选项。选项。34练习:练习:1、统计、统计10信息管理与信息系统班的总人数。信息管理与信息系统班的总人数。2、按性别统计全校学生的人数。、按性别统计全校学生的人数。3、按班级分组统计全校学生家庭收入的总计、按班级分组统计全校学生家庭收入的总计、平均值
14、、最大最小值。平均值、最大最小值。4、分组统计各班报到的第一位学生、最后一位、分组统计各班报到的第一位学生、最后一位学生。学生。5、按班级分组统计最小年龄、最大年龄。、按班级分组统计最小年龄、最大年龄。35 例例3、统计学费的总计、平均值、最大值、统计学费的总计、平均值、最大值、最小值、标准差、方差。最小值、标准差、方差。36 例例4、统计学费最大值、最小值和极差。、统计学费最大值、最小值和极差。37 例例5、统计最小年龄、最大年龄。、统计最小年龄、最大年龄。385.6 操作查询操作查询 操作查询包括删除、更新、追加与查询生成表。操作查询包括删除、更新、追加与查询生成表。一、删除查询一、删除查
15、询 可以再数据表中手工删除一条或多条记录,可以再数据表中手工删除一条或多条记录,利用删除查询可以自动批量或单个删除记利用删除查询可以自动批量或单个删除记录,一经删除,无法恢复。录,一经删除,无法恢复。例:删除未确定出生日期的学生记录。例:删除未确定出生日期的学生记录。例:删除英语例:删除英语70分以下的学生记录。分以下的学生记录。39二、更新查询二、更新查询 更新查询可以在数据表中手工修改一条或多条记更新查询可以在数据表中手工修改一条或多条记录的字段,利用更新查询可以自动批量的修改记录录的字段,利用更新查询可以自动批量的修改记录中的一个或多个记录。一经更新,不可恢复。中的一个或多个记录。一经更
16、新,不可恢复。40练习:练习:1、学生编号为、学生编号为10123,改为,改为2010123.2、把民族为回族的学生的英语分加、把民族为回族的学生的英语分加10分。分。3、单价增加、单价增加5%。4、日期更新到当前日期。、日期更新到当前日期。5、单价前加个、单价前加个“总总”41三、追加查询三、追加查询42四、用查询生成表四、用查询生成表43445.7 参数查询参数查询454647参数查询练习:参数查询练习:1、查找姓李的学生的所有记录。、查找姓李的学生的所有记录。like 请输入姓李的学生请输入姓李的学生&”*”2、查找中间是平的学生的记录。、查找中间是平的学生的记录。like”*”&平平&
17、“*”3、查询各民族的学生记录,以民族为参数。、查询各民族的学生记录,以民族为参数。between 起始日期起始日期and 终止日期终止日期485.8 SQL查询查询在Access中,SQL查询特指SQL特定查询,SQL特定查询大都不能由生成器生成SQL语句,SQL特定查询包括:u子查询(字段或条件行中输入SQL)u传递查询u联合查询u数据定义查询直接在直接在SQL视图中创建视图中创建SQL语句语句49一、联合查询一、联合查询5051二、常用查询二、常用查询SQL命令命令 SELECT FROM 参与查询的表列表参与查询的表列表 WHERE GROUP BY HAVING ORDER BY A
18、SC DESC 52 整个语句的含义为:根据整个语句的含义为:根据 WHERE子句中子句中的条件表达,从基本表的条件表达,从基本表(或视图或视图)中找出满足条中找出满足条件的元组按件的元组按SELECT子句中的目标列,选出子句中的目标列,选出元组中的分量形成结果表。如果有元组中的分量形成结果表。如果有ORDER子句,子句,则结果表要根据指定的表达式按升序则结果表要根据指定的表达式按升序(ASC)或或降序降序(DESC)排序。如果有排序。如果有GROUP子句,则将子句,则将结果按列名分组,根据结果按列名分组,根据 HAVING指出的条件,指出的条件,选取满足该条件的组予以输出。选取满足该条件的组
19、予以输出。53例例1 在学生基本情况表中查询学生姓名、系名和在学生基本情况表中查询学生姓名、系名和年龄。年龄。SELECT 姓名姓名,系名系名,year(now()-year(出生日期出生日期)as 年龄年龄FROM 学生基本情况表学生基本情况表54例例2 在学生基本情况表中查询民族为汉族的所有在学生基本情况表中查询民族为汉族的所有学生的姓名。学生的姓名。SELECT 姓名姓名 FROM 学生基本情况表学生基本情况表 WHERE 民族民族=“汉族汉族”;55例例3 在学生基本情况表中查询年龄较大的前在学生基本情况表中查询年龄较大的前25名名学生的姓名。学生的姓名。SELECT TOP 25 姓名姓名 FROM 学生基本情况学生基本情况表表 ORDER BY 出生日期出生日期;