第三章 查询
本章主要学习查询的基本操作,包括查询的概念、查询的创建和使用。
3.1 认识查询
3.1.1 查询的功能
查询是对数据库
中的数据进行查找,同时产生一个类似于表的结果,在 Access 中可以方便地创建查询,在创建查询的过程中定义要查询的内容和准则, Access 将根据定义的内容和准则在数据库表中搜索符合条件的记录。利用查询可以实现许多功能。
1. 选择字段
在查询中,可以只选择表中的部分字段如建立一个查询,只显示 “ 教师 ” 表中每名教师的姓名、性别、工作时间和系别。利用查询这一功能,可以通过选择一个表中的不同字段生成所需的多个表。
2. 选择记录
根据指定的条件查找所需的记录,并显示找到的记录。如建立一个查询,只显示 “ 教师 ” 表中 1992 年参加工作的男教师。
3. 编辑记录
编辑记录主要包括添加记录、修改记录和删除记录等。在 Access 中,可以利用查询添加、修改和删除表中的记录。如将 “ 计算机实用软件 ” 不及格的学生从 “ 学生 ” 表中删除。
4. 实现计算
查询不仅可以找到满足条件的记录,而且还可以在建立查询的过程中进行各种统计计算,如计算机每门课程的平均成绩。另外还可以建立一个计算字段,利用计算字段保存计算的结果。
5. 建立新表
利用查询得到的结果可以建立一个新表。如将 “ 计算机实用软件 ” 成绩在 90 分以上的学生找出来并存放在一个新表中。
6. 建立基于查询的报表和窗体
为了从一个或多个表中选择合适的数据显示在报表或窗体中,用户可以先建立一个查询,然后将查询的结果作为报表或窗体的数据源。每次打印报表或窗体时,该查询就从它的基表中检索出符合条件的最新记录。这样也提高了报表或窗体的使用效果。
3.1.2 查询的类型
1.选择查询
选择查询是最常见的查询类型,它根据指定的查询准则从一个或多个表中检索数据。也可以使用选择查询来对记录进行分组,并且对记录作总计、计数、平均值以及其他类型的总和的计算。
2.交叉表查询
交叉表查询显示来源于表中某个字段的
值(合计、计数以及平均),并将它们分组,一组列在数据表的左侧,一组列在数据表的上部,在数据表行与列的交叉处显示表中某字段统计值。
3.参数查询
参数查询是一种利用对话框来提示用户输入准则的查询。
4.操作查询
操作查询与选择查询类似,都是有用户指定查询记录的条件,但选择查询是检查符合特定条件的一组记录,而操作查询是在一次查询操作中对所得结果进行编辑等操作。操作查询共有四种类型:删除、更新、追加与生成表。
· 删除查询: 从一个或多个表中删除一组记录。
· 更新查询: 对一个或多个表中的一组记录作全局的更改。
· 追加查询: 从一个或多个表将一组记录追加到一个或多个表的尾部。
· 生成表查询:生成表查询是利用一个或多个表中的全部或部分数据新建表。
5.SQL 查询
SQL 查询是用户使用 SQL 语句创建的查询。 SQL 查询主要包括:联合查询、传递查询、数据定义查询和子查询。
· 联合查询 : 这种类型的查询将来自一个或多个表或查询的字段(列)组合为查询结果中的一个字段或列。
· 传递查询: 这种类型的查询使用服务器能接受的命令直接将命令发送到 ODBC 数据库。
· 数据定义查询: 这种类型的查询可以创建、删除、更改表或创建数据库中的索引。
· 子查询: 这种类型的查询包含另一个选择查询或操作查询中的 SQL SELECT 语句。可以在查询
网格的 “ 字段 ” 行输入这些语句来定义新字段,或在 “ 准则 ” 行来定义字段的准则。
3.1.3 建立查询的准则
1 .准则中的运算符
关系运算符: = (等于)、 <> (不等于)、 > (大于)、 < (小于)、 <= (大于等于)、 >= (小于等于)。
逻辑运算符: Not (非)、 And (且)、 Or (或)。
特殊运算符: In 如:年龄 In ( 17 , 18 , 19 )
Between 如:年龄 Between 17 and 20
Like 如:姓名 Like “ 王 %”
Is Null
Is Not Null
2. 准则中的函数
数值函数 : Abs() (绝对值)、 Int() (取整)、 Sqr() (平方根)、 Sgn() (符号)。
字符函数 : Space() (空格字符串)、 String() (重复字符串)、 Left() (取左串)、 Right() (取右串)、 Len() (长度)、 Ltrim() (去前导空格)、 Rtrim() (去后导空格)、 Trim() (去前后空格)、 Mid() (取中串)。
日期函数: Day() (日)、 Month() (月)、 Year() (年)、 Weekday() (周)、 Hour() (小时)、 date() (日期)。
统计函数: Sum() (汇总)、 Avg() (平均)、 Count() (记数)、 Max() (最大值)、 Min() (最小值)。
字段名
实 例
性 别
"男"
职 称
"教授" or "副教授"
姓 名
Like "王*"
姓 名
Like "王?"
姓 名
Left([姓名],1)= "王"
姓 名
Len([姓名])<=3
课程名称
Like "[A-Z]*"
姓 名
Not "王军”
姓 名
Is Null
姓 名
Is Not Null
联系电话
""
简 历
Rightt([简历],2)= "顺义"
学生编号
Mid([学生编号],3,2)= "03"
工作时间
Between #92-01-01# And #92-12-31#
工作时间
标准偏差值。
数字、日期 / 时间、货币和自动编号
Var
字段的方差值。
数字、日期 / 时间、货币和自动编号
选定
用于
Group By
定义要执行计算的组。例如,如果要按类别显示销售额总计,请对 “ 类别名称 ” 字段选定 Group By 。
Expression
创建表达式中包含合计函数的计算字段。通常在表达式中使用多个函数时,将创建计算字段。
Where
指定不用于分组的字段准则。如果选定这个字段选项, Microsoft Access 将清除 “ 显示 ” 复选框,隐藏查询结果中的这个字段。
Last
求在表或查询中最后一条记录的字段值
First
求在表或查询中第一条记录的字段值
3.3.2 分组总计查询
在“设计”视图中将用于分组的字段的“总计”设置成 Group By 。
例: 统计各类职称的教师人数。
( 1 )在“教学管理”数据库窗口中,单击“查询”对象,然后双击“在设计视图中创建查询”,出现查询“设计”视图,并显示一个“显示表”对话框,如图 3-6 所示。
( 2 )选择“表”选项卡,添加“教师”表,关闭“显示表”对话框。
( 3 )将“教师编号”字段和“职称”字段添加到“设计网格”的字段行中。
( 4 )单击“视图”菜单中的“合计”命令,或单击工具栏上的“合计”按钮,这时在“设计网格”中插入一个“合计”行,并自动将“教师编号”字段的“总计”单元设置成 Group by 。
( 5 )“职称”的“总计”行设为“ Group By ”。
( 6 )“教师编号”的“总计”设为 Count 。如图 3-16 所示。
( 7 )单击工具栏上的“保存”按钮,存储查询为“ 88 年参加工作的教师人数”。
( 8 )单击工具栏上的“视图”按钮,或单击工具栏上的“运行”按钮,切换到“数据表”视图。可以看到查询结果,如图 3-17 所示。
3.3.3 添加计算字段
计算字段是指根据一个或多个字段并使用表达式建立的新字段。它显示一个表达式的结果而不是所存储的数据。每当表达式中的某个值改变时,该值都重新计算。
例:查询每个学生的“入学日”。
( 1 )在“教学管理”数据库窗口中,单击“查询”对象,然后双击“在设计视图中创建查询”,出现查询“设计”视图,并显示一个“显示表”对话框。
( 2 )选择“表”选项卡,添加“学生”表,关闭“显示表”对话框。
( 3 )将“学生编号”、“姓名”字段添加到“设计网格”的字段行中。
( 4 )在字段行的第四列输入“入学日:Day([ 入学日期 ]) ”,如图 3-18 所示。
( 5 )单击工具栏上的“保存”按钮,保存为“学生入学日查询”。
3.4 创建交叉表查询
3.4.1 认识交叉表查询
将来源于某个表中的字段进行分组,一组列在数据表的左侧,一组列在数据表的上部,在行与列的交叉处显示表中某个字段的各种计算值。如图 3-20 ,就是一个交叉表查询。
3.4.2 创建交叉表查询
1.使用“查询向导”
例:查询每班男女生人数。
( 1 )在“教学管理”数据库窗口中,单击“查询”对象,然后单击“新建”按钮,出现“新建查询”对话框,如图 3-21 所示。
(2)双击“交叉表查询向导”,出现“交叉表查询向导”第一个对话框,如图 3-22 所示。
(3)交叉查询的数据源可以是表,也可以是查询。在此选择查询,并选“学生情况查询”,如图 3-23 所示。
(4)单击“下一步”按钮,出现“交叉表查询向导”第二个对话框,如图 3-24 所示。选择“班级”的值作为行标题。
(5)单击“下一步”按钮,出现“交叉表查询向导”第三个对话框,如图 3-25 所示。选择“性别”的值作为列标题。
( 6 )单击“下一步”按钮,出现“交叉表查询向导”第四个对话框,如图 3-26 所示。选择交叉处计算的数据为“姓名”计数。
( 7 )单击“下一步”按钮,出现“交叉表查询向导”最后一个对话框,如图 3-27 所示。输入查询名称。单击“完成”按钮。
2 .使用“设计”视图
( 1 )在“教学管理”数据库窗口中,单击“查询”对象,然后双击“在设计视图中创建查询”,出现查询“设计”视图,并显示一个“显示表”对话框。
( 2 )选择“表”选项卡,添加“学生”表、“课程”表和“选课成绩”表,关闭“显示表”对话框。
( 3 )双击“学生”列表中的“姓名”字段,将其放到“字段”行的第 1 列,然后双击“课程”列表中的“课程名称”字段和“选课成绩”表的“成绩”字段,将它们分别放到“字段”行的第 2 列和第 3 列。
( 4 )单击工具栏的“查询类型”按钮右侧的向下箭头按钮,然后从下拉列表中选择“交叉表查询”选项。
( 5 )设置“姓名”、“课程名称”、“成绩”列的总计行分别为“ Group by ”,“ Group by ”和“ First ”;
交叉表行分别为“行标题”,“列标题”及“值”。如图 3-28 所示。
( 6 )单击工具栏上的“保存”按钮,保存并命名为“学生课程成绩交叉表”。
( 7 )运行结果如图 3-29 所示。
3.5 创建参数查询
参数查询利用对话框,提示用户输入参数,并检查符合输入参数的记录或值。
3.5.1 单参数查询
创建单参数查询,就是在字段中指定一个参数,在执行参数查询时,用户输入一个参数值。
例: 按姓名查询学生的成绩。
( 1 )以“设计”视图打开“学生选课成绩”查询。
( 2 )在“姓名”字段的“准则”单元输入“ [ 请输入学生姓名: ] ”,如图 3-30 所示。
( 3 )单击工具栏上的“运行”按钮,这时屏幕上会出现“输入参数值”对话框,如图 3-31 所示。
( 4 )输入“刘力”,单击“确定”按钮,查询结果如图 3-32 所示。
( 5 )选择“文件”菜单中的“另存为”,保存名为“学生选课成绩参数查询”。
3.5.2 多参数查询
基本方法类似。只需在多个字段的准则栏中输入提示文本。
一、填空题
1、根据指定的查询准则从一个或多个的表中检索数据称为_________________。
2、SQL 查询是用户使用 SQL 语句创建的查询。 SQL 查询主要包括:________________ 。
3、“新建查询”对话框中有________________种建立查询的方式。
4、使用设计视图创建查询,可以在数据库窗口中,单击“查询”对象,然后双击________________。
5、创建带条件的查询这种查询需要通过“设计”视图来建立,在“设计”视图的________________行输入查询条件。
6、统计 1998 年参加工作的教师人数,使用 Between 操作符,条件表达式为:________________。
7、在“设计”视图中将用于分组的字段的“总计”设置成________________。
8、________________是指根据一个或多个字段并使用表达式建立的新字段。它显示一个表达式的结果而不是所存储的数据。
9、交叉表查询将来源于某个表中的字段进行分组,________________ ,在行与列的交叉处显示表中某个字段的个种计算值。
10、创建按姓名查询学生的成绩单参数查询,提示信息为“请输入学生姓名”,可以在“姓名”字段的“准则”单元输入________________。
二、选择题
1 .以下叙述中, ____是正确的。
A. 在数据较多、较复杂的情况下使用筛选比使用查询的效果好
B.查询只从一个表中选择数据.而筛选可以从多个表中获取数据
C. 通过筛选形成的数据表,可以提供给查询、视图和打印使用
D.查询可将结果保存起来,供下次使用
2 .利用对话框提示用户输入参数的查询过程称为( )。
A .选择查询 B .参数查询 C .操作查询 D .SQL 查询
3 .以下叙述中,( )是错误的。
A .查询是从数据库的表中筛选出符合条件的记录,构成 — 个新的数据集合
B .查询的种类有:选择查询、参数查询、交叉查询、操作查询和 SQL 查询
C .创建复杂的查询不能使用查询向导
D .可以使用函数、逻辑运算符、关系运算符创建复杂的查询
4 .查询中的 “ 英语精读 ” 的列记录的平均值,和班级 =“ 英语 A 班 ” 的条件应写在设计视图中( )行。
A. 总计 B. 字段 C. 准则 D. 显示
5 .筛选图书编号是 "01" 或 "02" 的记录,可以在准则中输入 ___________ 。(多选)
A . "01" or "02" B . not in ("01" , "02")
C . in ("01" , "02") D . not ("01" and "02")
6 .查看工资表中长安商品公司实发工资为 2000 元以上(除 2000 元)人员的记录 ,
表达式为 _________ 。 ( 多选 )
A. 部门 =" 长安商品公司 " AND 实发工资 >2000
B. 部门 =" 长安商品公司 " AND 实发工资 >=2000
C. 部门 = 长安商品公司 AND 实发工资 >=2000
D. 实发工资 >2000 AND 部门 =" 长安商品公司 "
7 . 内部计算函数 “Sum” 的意思是求所在字段内所有的值的 ______ 。
A. 和 B. 平均值 C. 最小值 D. 第一个值
8 . 内部计算函数 “Avg” 的意思是求所在字段内所有的值的 ______ 。
A. 和 B. 平均值 C. 最小值 D. 第一个值
9 . 在 SQL 查询 GROUP BY 语句用于 ____________ 。
A. 选择行条件 B. 对查询进行排序 C. 列表 D. 分组条件
10 .查看工资表中实发工资为 2000 元以上(除 2000 元)至 4000 元(除 4000 元)以下的人员记录 , 表达式为 ______ 。
A. 实发工资 >2000 OR 实发工资 <4000
B. 实发工资 >2000 AND 实发工资 <4000
C. 实发工资 >=2000 AND 实发工资 =<4000
D. 实发工资 (Between 2000 and 4000)
填空题
1.选择查询
2.联合查询、传递查询、数据定义查询和子查询
3.5种
4.“在设计视图中创建查询”
5.“准则”
6.Between #1998-1-1# and #1998-12-31#。
7.Group By。
8.计算字段
9.一组列在数据表的左侧,一组列在数据表的上部
10.“[请输入学生姓名:]”
选择题
D B C C AC AD A B D B
主讲教师:杨树林 北京印刷学院副教授, 硕士研究生
任教经历:
1988-7 —— 2002-10 辽宁师范大学计算机系
2002-10 —— 2004- 现在 北京印刷学院计算机系,北大青鸟 ACCP 计算学院
成就:
硕士生研究生证
清华大学访问学者
全国多媒体教育软件大赛三等奖
在省部级以上刊物发表文章30余篇,出版专著4部,主持与市级以上科研项目6项
多年从事计算机教育,有
正轨本科生的教育经历,也有 IT 培训的经历,教学经验丰富,专业知识扎实,熟悉常用软件的应用,有较强的科研能力。
辽宁省计算机学会理事
大连 CBE 及人工智能学会理事
全国计算机基础教育委员会会员