• 沒有找到結果。

Access数据库技术及应用 - 万水书苑-出版资源网

N/A
N/A
Protected

Academic year: 2021

Share "Access数据库技术及应用 - 万水书苑-出版资源网"

Copied!
32
0
0

加載中.... (立即查看全文)

全文

(1)第4章. 查询. 内容简介 查询是 Access 数据库的主要组件之一,也是 Access 数据库中最强的功能之一。 它是 Access 处理和分析数据的工具,能够把多个表中的数据抽取出来,供用户查看、 更改和分析。本章主要介绍查询的 5 种类型及根据具体使用目的选择不同的查询类 别,学会创建查询的方法及设计条件。 教学目标   . 了解查询的概念和类型。 熟练掌握创建查询的各种方法。 熟练掌握操作各类已建查询的技巧。. 4.1. 认识查询. 在实际工作中,常常需要按照各种格式查询数据。而在 Access 中,数据通常分类存放在 一个或多个表中。由于表的设计要按照数据库的标准范式进行,表结构与用户要求见到的数据 格式往往不同。因此,用户为了特定的目的使用表中的数据时,通常需要使用查询。使用查询 可以在不打开表的情况下,按照不同的方式查看、更改和分析数据。也可以使用查询作为窗体、 报表和数据访问页的记录源。 查询与表不一样,它不保存数据,只保存 Access 查询命令。查询是在运行时才从一个或 多个表中取出数据,因此查询是动态的数据集,它随数据表中数据的变化而变化。查询的数据 源既可以是一个表,也可以是多个相关联的表,还可以是其他已建查询。 4.1.1 查询的功能 1.选择字段 可以指定一个或多个字段,只有符合条件的记录才能在查询的结果中显示出来。 2.选择记录 可以指定一个或多个条件,只有符合条件的记录才能在查询的结果中显示出来。 3.分级和排序记录 可以对查询结果进行分级,并指定记录的顺序。 4.实现计算 查询不仅可以找到满足条件的记录,而且还可以在建立查询的过程中进行各种统计计算。 5.创建新表 利用查询得到的结果可以建立一个新表。 6.建立基于查询的报表和窗体 用户可以建立一个条件查询,将该查询的数据作为窗体或报表的记录源,当用户每次打.

(2) 第一篇 理论部分. 51. 开窗体或打印报表时,该查询从基本表中检索最新数据。 4.1.2 查询的类型 1.选择查询 选择查询是最常见的查询类型,它从一个表或多个表中检索数据,并按照用户所需要的 排列次序以数据表的方式显示结果。还可以使用“选择查询”来对记录进行分组,并且对记录 进行总计、计数、平均值以及其他类型的计算。 2.交叉表查询 交叉表查询显示来源于表中某个字段的汇总值(总计、计数以及平均值等),并将它们分 组,一组行在数据表的左侧,一组列在数据表的上部。 3.操作查询 操作查询不仅可以搜索、显示数据库,还可以对数据库进行动态的修改。操作查询与选 择查询的区别在于前者执行后并非显示结果,而是按某种规则更新字段值,删除表中记录,或 者将选择查询的结果生成一个新的数据表,也可以将选择查询的执行结果追加到一个数据表 中。操作查询有 4 种类型:生成表查询、追加查询、更新查询和删除查询。 4.参数查询 参数查询在运行时会显示一个对话框,要求用户输入参数,系统根据所输入的参数检索 符合条件的记录。 5.SQL 查询 SQL 查询是用户使用 SQL 语句创建的查询。SQL 是一种用于数据库的标准化查询语言, 许多数据库管理系统都支持该语言。在查询设计视图中创建查询时,Access 将在后台构造等 效的 SQL 语句。实际上,在查询设计视图的属性表中,大多数查询属性在 SQL 视图中都有等 效的可用子句和选项。如果需要,可以在 SQL 视图中查看和编辑 SQL 语句。 4.1.3 查询的条件 1.准则中的运算符 运算符是组成准则的基本元素。Access 中提供了算术运算符、关系运算符、逻辑运算符 和特殊运算符等。 (1)算术运算符。算术运算符可进行常见的算术运算,按运算的优先级次序由高到低排 列为:^(乘方)、–(负号) 、*(乘)、/(除)、Mod(求余)、+(加)、–(减)。 (2)关系运算符。关系运算符用来比较两个值或者两个表达式之间的大小,包括:>(大 于)、<(小于)、>=(大于等于) 、<=(小于等于)、<>(不等于)、=(等于)。关系运算的值 为 True 或 False。 (3)逻辑运算符。逻辑运算符用来实现逻辑运算,按优先级次序由高到低排序:Not(非)、 And(与)、Or(或) 。逻辑运算符通常与关系运算符一起使用,构成复杂的用于判断比较的表 达式,运算的值为 True 或 False。 (4)特殊运算符。特殊运算符的符号及含义如表 1-4-1 所示。 2.准则中的函数 Access 提供了大量的标准函数,如数值函数、字符函数、日期/时间函数、统计函数等。 这些函数为用户更好地构造查询准则提供了极大的便利,也为用户更准确地进行统计计算、实.

(3) 52. Access 数据库技术及应用. 现数据处理提供了有效的方法。 表 1-4-1 特殊运算符的符号及含义 特殊运算符. 说明. In. 用于指定一个字段值的列表,列表中的任意一个值都可与查询的字段相匹配. Between. 用于指定一个字段值的范围。指定的范围之间用 And 连接. Like. 用于指定查找文本字段的字符模式。在所定义的字符模式中,用“?”表示该位置 可匹配任何一个字符;用“*”表示该位置可匹配零或多个字符;用“#”表示该 位置可匹配一个数字;用方括号描述一个范围,用于表示可匹配的字符范围. Is Null. 用于指定一个字段为空. Is Not Null. 用于指定一个字段非空. (1)数值函数。数值函数用于数值的计算,常用的数值函数及说明如表 1-4-2 所示。 表 1-4-2 数值函数及说明 函数. 说明. Abs(数值表达式). 返回数值表达式的值的绝对值. Int(数值表达式). 返回数值表达式的值的整数部分. Sqr(数值表达式). 返回数值表达式值的平方根. (2)字符函数。字符函数又称为文本处理函数,用于处理字符串。常用字符函数及说明 如表 1-4-3 所示。 表 1-4-3 字符函数及说明 函 数. 说明. Space(数值表达式). 返回由数值表达式的值确定的空格个数组成的空字符串. Left(字符表达式,数值表达式). 返回一个值,该值是从字符表达式左侧第 1 个字符开始截取的若干个字 符。其中,字符个数是数值表达式的值。当字符表达式是 Null 时,返回 Null;当数值表达式值为 0 时,返回一个空串;当数值表达式大于或等 于字符表达式的字符个数时,返回字符表达式. Right( 字 符 表 达 式 , 数 值 表 达 式). 返回一个值,该值是从字符表达式右侧第 1 个字符开始截取的若干个字 符。其中,字符个数是数值表达式的值。当字符表达式是 Null 时,返回 Null;当数值表达式值为 0 时,返回一个空串;当数值表达式大于或等 于字符表达式的字符个数时,返回字符表达式. Len(字符表达式). 返回字符表达式的字符个数,当字符表达式是空值时,返回空值. Mid(字符表达式,数值表达式 1[,数值表达式 2]). 返回一个值,该值是从字符表达式最左端某个字符开始,截取到某个字 符为止的若干个字符。其中数值表达式 1 的值是开始的字符位置,数值 表达式 2 的值是终止的字符位置。数值表达式 2 可以省略,若省略了数 值表达式 2,则返回值是从字符表达式最左端某个字符开始,截取到最 后一个字符为止的若干个字符. (3)日期/时间。日期/时间函数常用于处理字段中的日期/时间值,可以通过日期/时间函 数抽取日期的一部分及时间的一部分。常用日期/时间函数及说明如表 1-4-4 所示。 (4)统计函数。统计函数常用于对数据的统计分析。常用统计函数及说明如表 1-4-5 所示。.

(4) 第一篇 理论部分 表 1-4-4 日期/时间函数及说明 函数. 说明. Day(date). 返回给定日期 1~31 的值,表示给定日期是一个月中的哪一天. Month(date). 返回给定日期 1~12 的值,表示给定日期是一年中的哪个月. Year(date). 返回给定日期 100~9999 的值,表示给定日期是哪一年. Weekday(date). 返回给定日期 1~7 的值,表示给定日期是一周中的哪一天. Hour(date). 返回给定日期 0~23 的值,表示给定日期是一天中的哪个小时. Date( ). 返回当前系统日期 表 1-4-5 统计函数及说明 函数. 说明. Sum(字符表达式). 返回字符表达式中值的总和. Avg(字符表达式). 返回字符表达式中值的算术平均值. Count(字符表达式). 返回字符表达式中非空值的个数,即统计记录个数. Max(字符表达式). 返回字符表达式中值的最大值. Min(字符表达式). 返回字符表达式中值的最小值. 3.使用文本作为查询条件 在 Access 中建立查询,经常使用文本值作为查询准则。使用文本值作为查询的准则可以 方便地限定查询范围和查询条件,实现一些相对简单的查询。如表 1-4-6 所示中列出了以文本 值作为准则的示例和它们的功能。 表 1-4-6 使用文本值作为查询条件示例 字段名 职称. 姓名. 准则. 功能. "教授". 查询职称为"教授"的记录. "教授" Or "副教授". 查询职称为"教授"或"副教授"的记录. In( "高瑞","许红")或 "高瑞" Or "许红". 查询姓名是"高瑞"或"许红"的记录. Not Like "高瑞". 查询姓名不是"高瑞"的记录. Like "王*" Left( [姓名],1) = "王". 查询姓"王"的记录. Instr([姓名] ,"王")=1 Len( [姓名]) = 3. 查询姓名为 3 个字的记录. 课程名称. Like "计算机*". 查询课程名称以“计算机”开头的记录. 籍贯. Right( [籍贯], 1) = "市". 查询籍贯最后一个字为“市”的记录. 学生编号. Mid( [学生编号], 4, 2) = "31". 查询学生编号第 4 个和第 5 个字符为"31"的记录. Instr([学生编号], "31")=4. 注意:在查找职称为“教授”的教师信息中,查询条件可以表示为="教授",但为了输入 方便,Access 允许在条件中省去“=”,所以可以直接表示为"教授"。输入时如果没有加双引号, Access 会自动加上双引号。. 53.

(5) 54. Access 数据库技术及应用. 4.使用处理日期作为查询条件 在 Access 中建立查询,经常使用以计算或处理日期作为查询准则。使用计算或处理日期 作为查询的准则可以方便地限定查询时间范围。如表 1-4-7 所示列出了以计算或处理日期作为 准则的示例。 表 1-4-7 使用计算或处理日期作为查询条件示例 字段名. 准则. 功能. 工作时间. Between #99-01-01# And #99-12-31#. 查询 99 年参加工作的教师. 工作时间. < Date()-15. 查询 15 天前参加工作的记录. 工作时间. Between Date( ) And Date ( ) -20. 查询 20 之内参加工作的记录. 出生日期. Year([出生日期])=1985. 查询 1985 年出生的学生记录. 工作时间. Year([工作时间])=2000 And Month([工作时间])=9. 查询 2000 年 9 月参加工作的记录. 注意:书写这类条件时应注意,日期常量要用英文的“#”号括起来。 5.使用空字段值作为查询条件 空值是使用 Null 或空白来表示字段的值;空字符串是用双引号括起来的字符串,且双引 号中间没有空格。表 1-4-8 中列出了使用空值或空字符串作为准则的示例。 表 1-4-8 使用空字段值作为查询条件示例 字段名. 准则表达式. 功能. 姓名. Is Null. 查询姓名为 Null(空值)的记录. 姓名. Is Not Null. 查询姓名有值(不是空值)的记录. 联系电话. "". 查询没有联系电话的记录. 4.2. 创建选择查询. 选择查询是 Access 中最常用的一种查询类型,它从一个或多个表中查询数据,查询的结 果是一组数据记录,用户可以对这组数据进行删除、修改等操作,并且这种改变会同时反映在 数据表中。此外,通过选择查询还可以对表中的数据进行分组、求和、计算平均值以及其他类 型的计算操作。 4.2.1 简单查询向导 查询向导一般用来创建相对简单的查询,或者用来初建基本查询,以后再用设计视图进 行修改。使用“简单查询向导”可以创建一个简单的选择查询。 在数据库的“查询”对象窗口中,双击“使用向导创建查询”选项,或者单击工具栏上 的“新建”按钮,并选择“简单查询向导”选项,都可以启动“简单查询向导”。按照向导提 示即可创建简单的选择查询。 【例 1.4.1】在“学生成绩管理系统”数据库中,创建一个“学生基本情况查询”,查找学 生的姓名、性别、专业和班级。 具体操作步骤如下:.

(6) 第一篇 理论部分. ① 在“学生成绩管理系统”数据库中,单击“查询”对象,然后双击“使用向导创建查 询”选项,即可打开“简单查询向导”对话框。 ② 在“表/查询”下拉列表框中选择“表:学生”选项,并分别选中“姓名”、“性别”、 “班级”和“所属专业”字段,加入到“选定的字段”列表中,如图 1-4-1 所示。 ③ 单击“下一步”按钮,为查询指定标题“学生基本情况查询” 。 ④ 单击“完成”按钮,自动运行查询,并显示查询结果,如图 1-4-2 所示。. 图 1-4-1. “简单查询向导”对话框. 图 1-4-2. “学生基本情况查询”结果. 本例是从一个表中检索自己需要的数据,如果需要查找的信息在多个表中,也可以利用 查询从多个数据表中获取相关信息。 【例 1.4.2】创建“学生成绩查询”,查找学生的姓名、课程名称和成绩。 姓名、课程名称和成绩分别在“学生”、“课程”和“学生课程成绩”表中,查询的具体 操作步骤如下: ① 在“学生成绩管理系统”数据库中,单击“查询”对象,然后双击“使用向导创建查 询”选项,即可打开“简单查询向导”对话框,如图 1-4-3 所示。 ② 在“表/查询”下拉列表框中选择“表:学生”选项,选中“姓名”字段加入到“选定 的字段”列表中,再依次选择“表:课程”中的“课程名称”字段和“表:学生课程成绩”中 的“成绩”字段加入到“选定的字段”列表中,如图 1-4-3 所示。 ③ 单击“下一步”按钮,选择“明细”单选按钮,如图 1-4-4 所示。. 图 1-4-3. “简单查询向导”对话框(一). 图 1-4-4. “简单查询向导”对话框(二). ④ 单击“下一步”按钮,在弹出的对话框中输入查询名称“学生成绩查询”,单击“完. 55.

(7) 56. Access 数据库技术及应用. 成”按钮,显示查询结果,如图 1-4-5 所示。. 图 1-4-5. “学生成绩查询”结果. 注意:① 在创建多表间的查询时,前提条件是多个表间设置了“关系”,否则会报错。 ② 在步骤③中选择“明细”单选按钮,是查看查询结果的详细信息;如选择“汇总”单 选按钮,则是对一组或全部记录数据进行各种统计,即对数字型数据进行“总计”、 “平均”、 “最大值”和“最小值”等汇总。 4.2.2 在设计视图中创建条件查询 在日常工作中,用户的查询并非只是简单的查询,往往是带有一定的条件。这就需要通 过设计视图来建立查询。 1.认识设计视图 在 Access 中查询有 5 种视图:设计视图、数据表视图、SQL 视图、数据透视表视图和数 据透视图视图。在设计视图中,既可以创建不带条件的查询,也可以创建带条件的查询,还可 以对已建查询进行修改。 “查询”设计视图窗口分为上下两部分,上半部分为“字段列表”区域,显示所选表的 字段;下半部分为“设计网格”区域,由一些字段列和已命名的行组成。其中,已命名的行共 有 7 行,其作用如表 1-4-9 所示。 表 1-4-9 查询“设计网格”中行的作用 行的名称. 作用. 字段. 可以在此输入或添加字段名. 表. 字段所在的表或查询的名称. 总计. 用于确定字段在查询中的运算方法. 排序. 用于选择查询所采用的排序方法. 显示. 利用复选框来确定是否在数据表中显示. 条件. 用于输入一个条件来限定记录的选择. 或. 用于输入条件“或”的条件来限定记录的选择.

(8) 第一篇 理论部分. 2.单个条件查询 单条件查询指查询的条件只与某一个字段相关,与其他字段无关,如查询“及格”的学 生信息。如果需要查询“及格”的“男”同学信息,则需要使用多条件查询。 【例 1.4.3】创建“成绩在 80~90 分间的学生信息”查询,查找成绩在 80~90 分之间的 学生姓名、课程名称和成绩。 具体操作步骤如下: ① 在“学生成绩管理系统”数据库中,单击“查询”对 象,然后双击“在设计视图中创建查询”选项,即可打开“设 计”视图,弹出“显示表”对话框,如图 1-4-6 所示。 ② 在“显示表”对话框中选择“表”选项卡,选择“学 生”表,再单击“添加”按钮,或双击“学生”表将“学生” 图 1-4-6 “显示表”对话框 表添加到设计视图。以同样的方法添加“课程”表、“学生课 程成绩”表,然后关闭“显示表”对话框。 ③ 在“字段列表”区域,双击“学生”表中的“姓名”字段、“课程”表中的“课程名 称”字段、“学生课程成绩”表中的“成绩”字段,将这些字段添加到下部的设计网格中。 ④ 在“成绩”字段列的“条件”单元格中输入查询准则“between 80 and 90”,如图 1-4-7 所示。也可以在“成绩”字段列的“条件”单元格中输入条件“>=80 and =<90”。 ⑤ 单击工具栏上的“保存”按钮 ,弹出“另存为”对话框,在“查询名称”文本框中 输入“成绩在 80~90 分间的学生信息” ,然后单击“确定”按钮。 ⑥ 单击工具栏上的“视图”按钮 ,或单击工具栏上的“运行”按钮 ,切换到“数 据表”视图,显示查询的运行结果,如图 1-4-8 所示。. 图 1-4-7. 设置准则. 图 1-4-8. “成绩”查询结果. 补充知识点 ① 数据源的添加与删除。如在操作中发现字段列表中少添加了数据源,可单击工具栏上 的“显示表”按钮 ;也可在字段列表区空白处右击并选择“显示表”命令;如发现多添加 了数据源,可先选定该表或查询,然后选择“编辑”→“删除”命令或右击并选择“删除表” 命令,删除多添加的数据源。 ② 字段的添加与删除。如在操作中发现缺少需要的字段,可在字段列表中双击该字段; 如发现多余字段,可选中要删除字段的字段选定器,选择“编辑”→“删除列”命令或按【Del】 键,如图 1-4-9 所示。 3.多条件查询 单条件查询只能查询与某一个字段相关的信息,如果需要查询两个以上字段相关的信息,. 57.

(9) 58. Access 数据库技术及应用. 可使用多条件查询。例如,查询“及格”的“男”同学信息,便需要使用多条件查询。. 字段选定器. 图 1-4-9. 选定要删除的字段列. 【例 1.4.4】创建“95 年前工作的副教授信息”查询,查找工作时间在 1995 年之前(不 包括 1995 年)且职称为副教授的教师信息。 具体操作步骤如下: ① 在“学生成绩管理系统”数据库中,单击“查询”对象,然后双击“在设计视图中创 建查询”选项,即可打开“设计”视图,并弹出“显示表”对话框。 ② 在“显示表”对话框中选择“表”选项卡,选择“教师”表,再单击“添加”按钮, 添加到设计视图,然后关闭“显示表”对话框。 ③ 在“字段列表”区域,双击“教师”表中的“*”,将“*”加入到下部的设计网格中, 再双击“职称”、 “参加工作日期”字段,取消选择这两个字段对应列“显示”复选框,表示不 显示(“*”已将所有字段显示) 。 ④ 在“职称”字段的“条件”单元格中输入“副教授”,在“参加工作日期”字段“条 件”单元格中输入“< #1995-01-01#”,两准则在设计网格中同行,如图 1-4-10 所示。 ⑤ 单击工具栏上的“保存”按钮 ,弹出“另存为”对话框,在“查询名称”文本框中 输入“95 年前工作的副教授信息”,单击“确定”按钮。 ⑥ 单击工具栏上的“视图”按钮 ,或单击工具栏上的“运行”按钮 ,切换到“数 据表”视图,显示查询的运行结果,如图 1-4-11 所示。. 图 1-4-10. 设置查询字段和准则. 图 1-4-11 “95 年前工作的副教授信息”查询结果. 注意:由于条件是“工作时间在 1995 年之前且职称为副教授”即 And,因此两准则在设 计网格中同行;若此题查询条件"为"或即 Or,则两准则在设计网格中不同行。如果行与列同 时存在,则行比列优先(即 And 比 Or 优先)。.

(10) 第一篇 理论部分. 4.2.3 在设计视图中创建总计查询 1.在查询中创建计算字段 Access 数据库为经常用到的数值汇总提供了丰富的“总计”选项,即对查询中的记录 组或全部数据进行计算,包括总和、平均值、计数、最大值、最小值、标准偏差或方差等。 在查询的设计视图中单击工具栏上的“总计”按钮 ,在设计网格中就会出现“总计”行。 “总计”行用于在运行时设置选项。单击“总计”下拉按钮会列出 12 个选项,其名称及含 义如下:  分组:指定进行行数值汇总的分组字段。  总计:求每一组中的指定字段的累加值。  平均值:求每一组中的指定字段的平均值。  最小值:求每一组中的指定字段的最小值。  最大值:求每一组中的指定字段的最大值。  计数:求每一组中的指定字段的记录个数。  标准差:求每一组中的指定字段的标准差。  方差:求每一组中的指定字段的方差。  第一条记录:返回组中第一个记录指定字段的值。  最后一条记录:返回组中最后一个记录指定字段的值。  表达式:在设计网格的“字段”行建立计算字段。  条件:指定查询条件。 以上的功能描述中,字段也可以是表达式。 2.总计查询 建立查询时,可能更关心的是记录的统计结果,而不是表中的记录。因此,为了获取这 些数据,就需要使用 Access 提供的总计查询功能,完成一定的计算查询。 【例 1.4.5】创建“学生平均成绩”查询,统计每个学生的平均成绩,并将结果按平均成 绩的降序排列。 具体操作步骤如下: ① 在“学生成绩管理系统”数据库中,单击“查询”对象,然后双击“在设计视图中创 建查询”选项,即可打开“设计”视图,并弹出“显示表”对话框。 ② 在“显示表”对话框中选择“表”选项卡,选择“学生”表,再单击“添加”按钮, 用同样的方法添加“学生课程成绩”表,然后关闭“显示表”对话框。 ③ 在“字段列表”区域,双击“学生”表中的“姓名”和“学生课程成绩”表中“成绩” 字段,将它们添加到第一列和第二列中。 ④ 单击工具栏上的“总计”按钮 ,在设计网格中就会出现“总计”行,并自动将“姓 名”和“成绩”字段的“总计”行设置成“分组”。 ⑤ 由于要求计算每名学生的平均成绩,因此需要对“成绩”字段求平均值。单击“成绩” 字段的“总计”单元格,并单击右侧的下拉按钮,然后从下拉列表中选择“平均值”函数。 ⑥ 由于要求将结果按平均成绩的降序排列,单击“成绩”字段的“排序”单元格,并单 击单元格右侧的下拉按钮,从下拉列表中选择“降序”选项,如图 1-4-12 所示。 ⑦ 单击工具栏上的“保存”按钮 ,弹出“另存为”对话框,在“查询名称”文本框中. 59.

(11) 60. Access 数据库技术及应用. 输入“学生平均成绩” ,然后单击“确定”按钮。 ⑧ 单击工具栏上的“视图”按钮 ,或单击工具栏上的“运行”按钮 据表”视图,显示查询的执行结果,如图 1-4-13 所示。. 图 1-4-12. 设置总计项和排序方式. 图 1-4-13. ,切换到“数. “学生平均成绩”查询结果. 补充知识点 选择查询的运行结果一般以数据输入的物理顺序显示。若想按特定的顺序显示,可通过设 置排序方式来实现。排序可以把具有相同属性的记录放在一起。在 Access 中有两种排序方式: 升序和降序。 可以按一个字段排序,也可以按多个字段排序。若按多个字段排序,则要特别注意字段 在“设计”视图中的网格列排序。不同的网格列排序会得到不同排列的记录集,因为排序规则 是先按前面的字段排序,再按后面的字段排序。 【例 1.4.6】创建“课程成绩高低分差” ,统计每门课程成绩最高分和最低分之差,结果显 示课程名称和分数差。 该查询的设计如图 1-4-14,查询结果如图 1-4-15 所示。. 图 1-4-14. 设置查询总计设计. 4.3. 图 1-4-15. 查询结果. 创建参数查询. 前面介绍的查询在准则处输入的都是常量。若准则发生变化,则必须重新设计查询,修 改准则中的常量才能进行满足另外一个条件的查询,这对不熟悉 Access 的用户来说有非常大.

(12) 第一篇 理论部分. 的难度,这样的查询是不能满足用户要求的。使用参数查询可以有效地解决这个问题,用户运 行查询时通过在对话框中输入不同的查询参数,就可以得到不同的查询结果。 4.3.1 单参数查询 创建单参数查询,就是在字段中指定一个参数,在执行参数查询时,由用户输入一个参 数值。 【例 1.4.7】在“学生成绩管理系统”数据库中,创建一个“教师基本信息查询”,按姓名 查询某教师的全部信息。 具体操作步骤如下: ① 在“学生成绩管理系统”数据库中,单击“查询”对象,然后双击“在设计视图中创 建查询”选项,即可打开“设计”视图,并弹出“显示表”对话框。 ② 在“显示表”对话框中选择“表”选项卡,选择“教师”表,再单击“添加”按钮, 然后关闭“显示表”对话框。 ③ 在“字段列表”区域,双击“教师”表中的“*”和“姓名”字段,将它们添加到 第 1 列和第 2 列中。取消选择“姓名”字段对应列“显示”复选框,表示不显示,如图 1-4-16 所示。 ④ 在“姓名”字段的“条件”单元格中输入“[请输入教师姓名:]”,如图 1-4-17 所示。. 图 1-4-16. 图 1-4-17. 设置字段的查询条件. ⑤ 单击工具栏上的“保存”按钮,保存查询设计,查询名为“教师基本信息查询” 。 ⑥ 双击该查询或单击工具栏上的“运行”按钮,弹出“输入参数值”对话框,如图 1-4-18 所示。 ⑦ 输入某个教师姓名,如“王天” ,单击“确定”按钮,即可查询出该教师的全部信息, 如图 1-4-19 所示。. 图 1-4-18. “输入参数值”对话框. 图 1-4-19. 查询结果. 【例 1.4.8】创建一个“某专业年龄小于 26 岁学生信息”,按用户输入的所属专业查询年 龄小于 26 岁学生的姓名、性别、年龄和所属专业。. 61.

(13) 62. Access 数据库技术及应用. 具体操作步骤如下: ① 在“学生成绩管理系统”数据库中,单击“查询”对象,双击“在设计视图中创建查 询”选项,即可打开“设计”视图,并弹出“显示表”对话框,选择“学生”表,再单击“添 加”按钮,然后关闭“显示表”对话框。 ② 在“字段列表”区域,双击“学生”表中的“姓名”、“性别” 、“出生日期”和“所属 专业”字段,将这些字段加入到下部的设计网格中,如图 1-4-20 所示。 ③ 将第三列“字段”行中的“出生日期”修改为: “年龄: Year(Date())-Year([出生日期])”, 并在“条件”单元格中输入“<26” ;另在“所属专业”列的“条件”单元格中输入“[请输入 所属专业:]”,如图 1-4-21 所示。. 图 1-4-20. 图 1-4-21. 设置新字段和条件. ④ 保存查询设计,查询名为“某专业年龄小于 26 岁学生信息”。 ⑤ 单击“运行”按钮,弹出“输入参数值”对话框,如图 1-4-22 所示。输入专业名称, 如“计算机应用技术”,单击“确定”按钮,即可查询出该专业年龄小于 26 岁的学生信息,如 图 1-4-23 所示。. 图 1-4-22. 输入参数. 图 1-4-23. 查询结果. 补充知识点 当需要统计的数据在表中没有相应的字段,或者用于计算的数据值来源于多个字段时, 需要在“设计网格”中添加一个计算字段。计算字段是指根据一个或多个表中的一个或多个字 段并使用表达式建立的新字段,通常计算字段都包含计算公式或函数条件。 例如,在例 1.4.8 中,查询是通过“出生日期”字段计算出学生的年龄,显然必须采用函 数构成表达式的方式增加新字段,使其显示为“年龄”。 再如,在例 1.4.5 中,查询是通过“成绩”字段统计平均成绩,在查询结果中统计字段名 称显示为“成绩之平均值”,可读性差,可重命名此字段,即在设计网格中字段名的左边,输 入新字段名“平均成绩”后,再输入英文冒号“:” ,如图 1-4-24 所示,则查询结果将以新字段.

(14) 第一篇 理论部分. 名显示,如图 1-4-25 所示。. 图 1-4-24. 新字段命名. 图 1-4-25. 查询结果. 4.3.2 多参数查询 用户不仅可以创建单个参数查询,也可以创建多个参数查询。在执行多个参数查询时, 用户可以依次输入多个参数值。 【例 1.4.9】创建一个“某课程成绩区间学生信息”,按课程名称和成绩区间查询学生成绩 信息。 具体操作步骤如下: ① 在“学生成绩管理系统”数据库中,单击“查询”对象,双击“在设计视图中创建查询” 选项,即可打开“设计”视图,并弹出“显示表”对话框,按住【Ctrl】键并依次单击“学生”表、 “课程”表和“学生课程成绩”表,再单击“添加”按钮,然后关闭“显示表”对话框。 ② 在“字段列表”区域,双击“学生”表中的“姓名”字段、“课程”表中的“课程名 称”字段和“学生课程成绩”表中的“成绩”字段,将这些字段加入到下部的设计网格中,如 图 1-4-26 所示。 ③ 在“课程名称”字段的“条件”单元格中输入表达式“[请输入课程名称:]”,在“成 绩”字段的“条件”单元格中输入表达式“Between [请输入成绩下限:] And [请输入成绩上限:]”, 如图 1-4-27 所示。. 图 1-4-26. 图 1-4-27. 输入参数条件. ④ 保存查询设计,查询名为“某课程成绩区间学生信息”。单击“运行”按钮,弹出“输 入参数值”对话框,输入课程名称“大学英语”后,如图 1-4-28 所示。 ⑤ 单击“确定”按钮,再输入分数下限 70,单击“确定”按钮,继续输入分数上限 90, 如图 1-4-29 和图 1-4-30 所示。 ⑥ 单击“确定”按钮,显示查询结果如图 1-4-31 所示。. 63.

(15) 64. Access 数据库技术及应用. 图 1-4-28. 输入课程名称. 图 1-4-30. 输入成绩上限. 4.4. 图 1-4-29. 图 1-4-31. 输入成绩下限. 运行结果. 创建交叉表查询. 使用交叉表查询计算和重构数据可以简化数据分析。交叉表查询计算数据的总和、平均 值、计数或其他类型的总计值,而这种数据又分为两部分信息:一部分在数据表左侧向下,另 一部分在数据表顶端。 4.4.1 认识交叉表查询 所谓交叉表查询,就是将源于某表中的字段进行分组,一组列在数据表的左侧,一组列 在数据表的上部,然后在数据表行与列的交叉处显示表中某个字段的各种计算值。 在创建交叉表查询时,需要指定 3 类数据:一是在数据表左端的行标题,它是把某一个 字段或相关的数据放入指定的一行中;二是在数据表最上面的列标题,它是把每一列指定的字 段或表进行统计,并将统计结果放入列中;三是放在数据表行与列交叉处的字段,用户需要指 定总计项。对于交叉表查询,用户只能指定一个总计类型的字段。 4.4.2 创建交叉表查询 创建交叉表查询有两种方法:“交叉表查询向导”和“设计”视图。 1.使用“交叉表查询向导” 【例 1.4.10】在“学生成绩管理系统”数据库中,创建一个“统计各班男女生人数查询” , 显示每个班级的男女生人数。 具体操作步骤如下: ① 在“学生成绩管理系统”数据库中,单击“查询”对象,然后单击工具栏上的“新建” 按钮 ,弹出“新建查询”对话框,如图 1-4-32 所示。 ② 选择“交叉表查询向导”选项,单击“确定”按钮,弹出“交叉表查询向导”的第一 个对话框,选择数据的来源。在视图中有 3 个选项,即“表”、“查询”和“两者”。由于此题 是关于男女生人数的查询,故选择“学生”表,如图 1-4-33 所示。 ③ 单击“下一步”按钮,打开“交叉表查询向导”的第二个对话框,选定“班级”字段 作为交叉表的“行标题”,如图 1-4-34 所示。 ④ 单击“下一步”按钮,打开“交叉表查询向导”的第三个对话框,选定“性别”字段.

(16) 第一篇 理论部分. 作为交叉表的“列标题”,如图 1-4-35 所示。. 图 1-4-32. 图 1-4-34. “新建查询”对话框. 选择交叉表的“行标题”. 图 1-4-33. 图 1-4-35. “交叉表查询向导”对话框. 选择交叉表的“列标题”. ⑤ 单击“下一步”按钮,打开“交叉表查询向导”的第四个对话框,选定“学号”字段 和“计数”函数,并选择“是,包括各行小计”复选框,如图 1-4-36 所示。 ⑥ 单击“下一步”按钮,在“请指定查询的名称:”文本框中输入“统计各班男女生人 数查询”,如图 1-4-37 所示。. 图 1-4-36. 选择交叉表的“数据项”计算字段. 图 1-4-37. 指定查询标题. 65.

(17) 66. Access 数据库技术及应用. ⑦ 输入完成后,单击“完成”按钮,显示 查询结果,如图 1-4-38 所示。 补充知识点 ① 使用“交叉表查询向导” ,其数据源只能 来自一个表(查询)中的字段。对于涉及多个表 的交叉表查询需建立在已有的查询基础上,或者 图 1-4-38 “统计各班男女生人数查询”结果 采用“设计”视图方式创建。 ② 在选择“行标题”时,最多可以设定 3 个字段;而在选择“列标题”时,只能设定 1 个字段。 2.使用“设计”视图 【例 1.4.11】创建一个“每位学生每门课成绩查询” ,显示学生姓名、课程名称和成绩。 具体操作步骤如下: ① 在“学生成绩管理系统”数据库中,单击“查询”对象,然后双击“在设计视图中创 建查询”选项,即可打开“设计”视图,并弹出“显示表”对话框。 ② 在“显示表”对话框中选择“表”选项卡,选择“学生”表,再单击“添加”按钮, 用同样的方法将“课程”表和“学生课程成绩”表也添加到设计视图中,然后关闭“显示表” 对话框。 ③ 单击工具栏上的“查询类型” 下拉按钮,然后从下拉列表中选择“交叉表查询” 选项,此时查询窗口的设计网格中会出现“交叉表”一栏,替换了原有的“显示”。 ④ 在“字段列表”区域,双击“学生”表中的“姓名”字段,为了将“姓名”放在每行 的左边,在“交叉表”下拉列表框中选择“行标题”选项;双击“课程”表中的“课程名称” 字段,为了将“课程名称”放在最顶端,在“交叉表”下拉列表框中选择“列标题”选项;双 击“学生课程成绩”表中的“成绩”字段,为了在交叉处显示成绩数值,在“交叉表”下拉列 表框中选择“值”选项,并且在“总计”栏中选择“第一条记录”函数,如图 1-4-39 所示。 ⑤ 保存查询设计,查询名为“每位学生每门课成绩查询”。单击“运行”按钮,查询结 果如图 1-4-40 所示。. 图 1-4-39. 设置交叉表选项. 图 1-4-40. “每位学生每门课成绩查询”结果. 补充说明 交叉表通常是由行标题、列标题和值组成,在有些情况下,字段仅设置条件不显示,可 在“交叉表”单元格中选择“不显示”。交叉表中的“行标题”和“列标题”一般“总计”项 均为“分组” ,而“值”的“总计”项由具体要求确定。.

(18) 第一篇 理论部分. 4.5. 创建操作查询. 如果用户在一次查询中要更改多个记录信息,利用其他查询实现起来比较麻烦,而用操 作查询会容易些。 4.5.1 认识操作查询 操作查询是指仅在一个操作中更改或移动记录的查询,操作查询共有 4 种类型:生成表 查询、删除查询、更新查询和追加查询。 操作查询与选择查询、参数查询及交叉表查询有所不同。选择查询、参数查询和交叉表 查询只是根据要求选择数据,并不对表中的数据进行修改,而操作查询除了从表中选择数据外, 还对表中数据进行修改。由于运行操作查询时,可能会对数据库中的表做大量的修改,因此, 为了避免因错误操作引起的不必要变化,Access 在数据库窗口中的每个操作查询图标后显示 一个感叹号,以引起用户注意。 4.5.2 生成表查询 生成表查询就是将查询的结果存在一个新表中,这样就可以使用已有的一个或多个表中 的数据创建表。 【例 1.4.12】创建一个名为“生成 60 以下学生信息查询”,将成绩小于 60 分的学生的“姓 名”、“性别” 、“所属专业”、“课程名”和“成绩”存储到一个新表中,新表名为“成绩 60 以 下学生信息” 。 具体操作步骤如下: ① 在“学生成绩管理系统”数据库中,单击“查询”对象,然后双击“在设计视图中创 建查询”选项,即可打开“设计”视图,并弹出“显示表”对话框。 ② 在“显示表”对话框中选择“表”选项卡,将“学生”表、“课程”表和“学生课程 成绩”表添加到“设计”视图中,然后关闭“显示表”对话框。 ③ 在“字段列表”区域,双击“学生”表中的“姓名”、“性别”和“所属专业”字段, “课程”表中的“课程名称”字段,“学生课程成绩”表中的“成绩”字段,将这些字段加入 到下部的设计网格中。 ④ 单击工具栏上的“查询类型”下拉按钮 , 从下拉列表中选择“生成表查询”选项,弹出“生成 表”对话框。在“表名称”文本框中输入要创建的表 名称“成绩 60 以下学生信息”,然后选择“当前数据 库”单选按钮,将新表放入当前的“学生成绩管理系 图 1-4-41 “生成表”对话框 统”数据库中,完成设置后,单击“确定”按钮,如 图 1-4-41 所示。 ⑤ 在“成绩”字段的“条件”单元格中输入“<60” ,如图 1-4-42 所示。 ⑥ 单击工具栏上的“视图”按钮 ,预览“生成表查询”新建的表。可以再次单击工 具栏上的“视图”按钮 ,返回到“设计”视图,对查询进行修改。单击工具栏上的“保存” 按钮 ,在“另存为”对话框的“查询名称”文本框中输入“生成 60 以下学生信息查询”,. 67.

(19) 68. Access 数据库技术及应用. 然后单击“确定”按钮,运行效果如图 1-4-43 所示。. 图 1-4-42. 设置生成表查询. 图 1-4-43. 生成表查询结果. 注意:在运行生成表查询后,新表生成之后不能撤销所做的更改。如果修改生成表查询, 需重新生成,而且必须将所生成的新表删除后方可再次生成。 4.5.3 追加查询 追加查询就是将一组记录追加到一个或多个表原有记录的后面。追加查询的结果是向有 关表中自动添加记录。 【例 1.4.13】创建一个名为“追加电商成绩 60-70 间学生信息”查询,将电子商务专业的 成绩在 60~70 分之间的学生的“姓名”、 “性别” 、“所属专业”、 “课程名”和“成绩”追加到 “成绩 60 以下学生信息”表中。 具体操作步骤如下: ① 在“学生成绩管理系统”数据库中,单击“查询”对象,然后双击“在设计视图中创 建查询”选项,即可打开“设计”视图,并弹出“显示表”对话框。 ② 在“显示表”对话框中选择“表”选项卡,将“学生”表、“课程”表和“学生课程 成绩”表添加到设计视图中,然后关闭“显示表”对话框。 ③ 单击工具栏上的“查询类型”下拉按钮 ,从下拉列表中选择“追加查询”选项, 弹出“追加”对话框。在“表名称”下拉列表框中选择表名称“成绩 60 以下学生信息”,然后 选择“当前数据库”单选按钮,将新表放入当前的“学生成绩管理系统”数据库中,如图 1-4-44 所示。完成设置后,单击“确定”按钮。 ④ 在“字段列表”区域,双击“学生”表中的“姓名”、“性别”、 “所属专业”字段,“课 程”表中的“课程名称”字段, “学生课程成绩”表中的“成绩”字段,将这些字段加入到下 部的设计网格中。 ⑤ 在“成绩”字段的“条件”单元格中输入“>=60 And <=70”,在“所属专业”字段的 “条件”单元格中输入“"电子商务"” ,如图 1-4-45 所示。 ⑥ 单击工具栏上的“视图”按钮 ,预览“追加查询”新建的表。可以再次单击工具 栏上的“视图”按钮 ,返回到“设计”视图,对查询进行修改。单击工具栏上的“保存” 按钮 ,在“另存为”对话框的“查询名称”文本框中输入“追加电商成绩 60-70 间学生信息”, 然后单击“确定”按钮,运行结果如图 1-4-46 所示。 ⑦ 在“设计”视图中,单击工具栏上的“运行”按钮 ,这时屏幕上显示一个提示对话 框,如图 1-4-47 所示,单击“是”按钮,即完成向表中追加相关记录。.

(20) 第一篇 理论部分. 图 1-4-44. 图 1-4-46. “追加”对话框. 预览追加查询结果. 图 1-4-45. 图 1-4-47. 设置追加查询. 追加查询提示对话框. 4.5.4 更新查询 更新查询就是对一个或多个表中的一组记录做全局的更改。使用更新查询,可以更改已 有表中的数据。 【例 1.4.14】创建一个名为“成绩加 5 分”的更新查询,将“成绩 60 以下学生信息”表 中的高等数学课程成绩都增加 5 分。 具体操作步骤如下: ① 在“学生成绩管理系统”数据库中,单击“查询”对象,然后双击“在设计视图中创 建查询”选项,即可打开“设计”视图,并弹出“显示表”对话框。 ② 在“显示表”对话框中选择“表”选项卡,选择“成绩 60 以下学生信息”表,再单 击“添加”按钮,然后关闭“显示表”对话框。 ③ 在“字段列表”区域,双击表中的“课程名称”和“成绩”字段,将这些字段加入到 下部设计的网格中。 ④ 单击工具栏上的“查询类型”下拉按钮 ,从 下拉列表中选择“更新查询”选项。此时查询窗口的设 计网格中会出现“更新到”一栏,替换原有的“显示”。 在“课程名称”字段的“条件”单元格中输入“"高等数 学"”;要求成绩加 5 分,即在原有的成绩数据上再加上 5,故在“成绩”字段的“更新到”单元格中输入“[成 绩]+5” ,如图 1-4-48 所示。 ⑤ 单击工具栏上的“保存”按钮 ,弹出“另存 图 1-4-48 设置更新查询 为”对话框,在“查询名称”文本框中输入“成绩加 5 分”,然后单击“确定”按钮。 ⑥ 在“设计”视图中,单击工具栏上的“运行”按钮 ,这时屏幕上显示一个提示对话 框,如图 1-4-49 所示,单击“是”按钮,即向表中更新相关记录。. 69.

(21) 70. Access 数据库技术及应用. ⑦ 进入“数据表”窗口,打开“成绩 60 以下学生信息”表,结果如图 1-4-50 所示。. 图 1-4-49. 更新查询提示对话框. 图 1-4-50. 表更新结果. 4.5.5 删除查询 删除查询就是从已有的一个或多个表中删除满足查询条件的记录。 【例 1.4.15】创建一个名为“删除 60 分以下学生信息”查询,该查询将“成绩 60 以下学 生信息”表中成绩低于或等于 60 分的记录删除。 具体操作步骤如下: ① 在“学生成绩管理系统”数据库中,单击“查询”对象,然后双击“在设计视图中创 建查询”选项,即可打开“设计”视图,并弹出“显示表”对话框。 ② 在“显示表”对话框中选择“表”选项卡,选择“成绩 60 以下学生信息”表,再单 击“添加”按钮,然后关闭“显示表”对话框。 ③ 单击工具栏上“查询类型”下拉按钮 ,从下拉列表中选择“删除查询”选项。此 时查询窗口的设计网格中会出现“删除”一栏。 ④ 双击“成绩 60 以下学生信息”字段列表中的“*”号,这时第一列上显示“成绩 60 以下学生信息*”,表示已将该表中的所有字段放在“设 计网格”中。同时,在字段删除行单元格中显示 From, 表示从何处删除记录。 ⑤ 双击“成绩 60 以下学生信息”字段列表中的“成 绩”字段,这时该字段出现在第二列。同时在该字段的 删除行单元格中显示 Where,表示要删除哪些记录。在 “成绩”字段的“条件”单元格中输入“<60”,如图 1-4-51 所示。 ⑥ 单击工具栏上的“视图”按钮 ,预览“删除 图 1-4-51 设置删除查询 查询”检索到的记录。如果预览到的一组记录不是要删 除的,可以再次单击“视图”按钮 ,返回到“设计”视图,对查询进行修改。 ⑦ 在“设计”视图中,单击工具栏上的“运行”按钮 ,屏幕上显示一个提示对话框, 如图 1-4-52 所示。单击“是”按钮,Access 将删除属于同一组的所有记录;单击“否”按钮, 不删除记录。 ⑧ 单击“保存”按钮 ,弹出“另存为”对话框,在“查询名称”文本框中输入“删除 60 分以下学生信息” ,然后单击“确定”按钮。 ⑨ 进入“数据表”窗口,打开“成绩 60 以下学生信息”表,60 分以下的记录已经被删 除,结果如图 1-4-53 所示。.

(22) 第一篇 理论部分. 图 1-4-52. 删除查询提示对话框. 图 1-4-53. 表删除结果. 注意:删除运行查询一定要谨慎,记录删除后不能撤销所做的更改。. 4.6 SQL 查询 SQL 查询是用户使用 SQL 语句创建的自定义查询,它是一个用于显示当前查询的 SQL 语句窗口,在这个窗口中用户可以查看和改变 SQL 语句,从而达到查询的目的。 4.6.1 使用 SQL 修改查询中的准则 使用 SQL 语句可以直接在 SQL 视图中修改已建查询中的条件。 【例 1.4.16】用 SQL 修改“95 年前工作的副教授信息”查询,使查询的结果显示为“95 年前工作的教授信息” 。 具体操作步骤如下: ① 在“学生成绩管理系统”数据库中,选择“95 年前工作的副教授信息”查询对象。单 击“设计”按钮,打开查询。 ② 选择“视图”→“SQL 视图”命令,或单击工具栏上的“视图”下拉按钮,从下拉列 表中选择“SQL 视图”选项,这时屏幕显示如图 1-4-54 所示。. 图 1-4-54. 修改前 SQL 视图. ③ 在该窗口中选择要进行修改的部分,然后输入修改后的准则,如图 1-4-55 所示。. 图 1-4-55. 修改后 SQL 视图. ④ 单击工具栏的“视图”按钮,选择“数据表视图”选项,预览查询结果,如图 1-4-56 所示。. 图 1-4-56. 预览查询结果. 71.

(23) 72. Access 数据库技术及应用. ⑤ 选择“文件”→“另存为”命令,弹出“另存为”对话框,修改查询名称为“95 年前 工作的教授信息”,如图 1-4-57 所示。 ⑥ 单击“确定”按钮,保存成功。 4.6.2 SQL 基础知识 SQL 是 Structured Query Language(结构化查询语 图 1-4-57 “另存为”对话框 言)的缩写。SQL 是专为数据库而建立的操作命令集, 是一种功能齐全的数据库语言。 SQL 语句按其功能的不同可以分为以下 3 类:  数据定义语句(data-definition language,DDL) 定义数据库的逻辑结构,包括定义数据库、基本表、视图和索引 4 部分。其命令动词有 CREATE、DROP、ALTER。  数据操作语句(data-manipulation language,DML) 包括数据查询和数据更新两大类操作,其中数据更新又包括插入、删除和更新 3 种操作。 其命令动词有 SELECT、INSERT、DELETE、UPDATE。  数据控制语句(data-control language,DCL) 对用户访问数据的控制有基本表和视图的授权、完整性规则的描述,事务控制语句等。 其命令动词有 GRANT、REVOKE。 本书将根据实际应用的需要,主要介绍数据定义、数据操作的基本语句。 1.CREATE 语句 【格式】CREATE TABLE <表名 1>(<字段名 1><数据类型 1>[(<宽度>[,<小数位数>]) ][完 整性约束][NULL|NOT NULL][,<字段名 2><数据类型 2>…])[PRIMARY KEY|UNIQUE] [DEFAULT <表达式>]; 【功能】定义(也称创建)一个表。 【说明】 在一般的语法格式描述中,使用的符号有如下约定: “<>”:表示必选项。 “[]” :表示可以根据需要进行选择,也可以不选。 “|”:表示多项只能选择其中之一。 其中,<表名>定义表的名称。<字段名>定义表中一个或多个字段的名称,<数据类型> 是对应字段的数据类型,<宽度>字段的数据类型对应的字段大小。[NULL | NOT NULL] 字 段允许或不允许为空值。[PRIMARY KEY | UNIQUE] 主关键字或候选索引。[DEFAULT]设 置默认值。 【例 1.4.17】使用 CREATE TABLE 语句创建 stud 表,它由以下字段组成:学号(C,10) ; 姓名(C,8);性别(C,2);班级名(C,10);系别代号(C,2);地址(C,50);是否团 员(L);备注(M)。 CREATE table stud(st_no char(10) PRIMARY KEY,st_name char(8), st_sex char(2),st_class char(10), st_depno char(2),st_add char(50),st_leag logical,st_memo memo);. 补充知识点 Access 中的几个基本数据类型如表 1-4-10 所示。.

(24) 第一篇 理论部分 表 1-4-10 基本数据类型 数据类型. SQL 类型. 数据类型. SQL 类型. 数字(长整型). INTEGER/INT. 文本型. TEXT/CHAR. 数字(整型). SMALLINT. 货币型. MONEY. 数字(双精度). FLOAT/DOUBLE. 日期型. DATE. 数字(单精度). REAL. 逻辑型. LOGICAL/BIT. 数字(字节). TINYINT. 备注型. MEMO. 2.ALTER 语句 【格式】ALTER TABLE <表名> [ADD <新字段名><数据类型>[(<宽度>)][完整性约束][NULL | NOT NULL]] [DROP <字段名> …] [ALTER <字段名><数据类型>]; 【功能】修改表结构。 其中,ADD 子句用于增加指定表的字段名、数据类型、宽度和完整性约束条件;DROP 子句用于删除指定的字段;ALTER 子句用于修改原有字段属性。 【例 1.4.18】在 stud 表中,增加一个出生日期字段。 ALTER TABLE ADD st_date date;. 【例 1.4.19】在 stud 表中,修改 st_sex 字段数据类型为文本型,字段大小为 1。 ALTER TABLE stud ALTER st_sex char(1);. 3.DROP 语句 【格式】DROP TABLE <表名>; 【功能】删除指定数据表的结构和内容。 注意:谨慎使用。如果只是想删除一个表中的所有记录,则应使用 DELETE 语句。 4.INSERT 语句 【格式】INSERT INTO <表名> [(<字段名 1>[,<字段名 2>…])] VALUES (<表达式表>); 【功能】在指定的表末尾追加一条记录。用表达式表中的各表达式值赋值给<字段名表> 中的相应的各字段。 注意:如果某些字段名在 INTO 子句中没有出现,则新记录在这些字段名上将取空值(或 默认值)。但必须注意的是,在表定义说明了 NOT NULL 的字段名不能取空值。 【例 1.4.20】在 stud 表中插入一条新记录。 INSERT INTO STUD VALUES ("G0842001","王魁","男","计 0801","05","肥东",true,"曾担任班长",#1989-10-1#). 【例 1.4.21】将一条新记录插入到 stud 表中,其中学号为"G0842002",姓名为"李伟",性 别为"男"。 INSERT INTO STUD (st_no,st_name, st_sex)VALUES ("G0842002","李伟","男"). 5.UPDATE 语句 【格式】UPDATE <表文件名> SET <字段名 1>=<表达式> [,<字段名 2>=<表达式>…] [WHERE <条件>];. 73.

(25) 74. Access 数据库技术及应用. 【功能】更新指定表中满足 WHERE 条件子句的数据。其中 SET 子句用于指定列和修改 的值,WHERE 用于指定更新的行,如果省略 WHERE 子句,则表示表中所有行。 【例 1.4.22】将学生课程成绩表中,所有课程号为“06”的成绩加 5 分。 UPDATE 学生课程成绩 WHERE 课程号="06";. SET 成绩=成绩+5. 6.DELETE 语句 【格式】DELETE FROM <表名> [WHERE <表达式>]; 【功能】从指定的表中删除满足 WHERE 子句条件的所有记录。如果在 DELETE 语句中 没有 WHERE 子句,则表示该表中的所有记录都将被删除。 【例 1.4.23】将籍贯为“合肥市”的学生信息删除。 DELETE FROM 学生 WHERE 籍贯="合肥市". 7.SELECT 语句 【格式】SELECT [ALL | DISTINCT] <字段列表> [AS 别名] FROM <表名 1>[,<表名 2>]… [WHERE <条件表达式> ] [GROUP BY<字段名> [HAVING <组条件表达式>]] [ORDER BY<字段名> [ASC|DESC]]; 【功能】从指定的表中,创建一个由指定范围内、满足条件、按某字段分组、按某字段 排序的指定字段组成的新记录集。 其中,ALL 表示检索所有符合条件的记录,默认值为 ALL;DISTINCT 表示检索要去掉 重复行的所有记录。FROM 子句说明要检索的数据来自哪个或哪些表;WHERE 子句说明检索 条件;GROUP BY 子句用于对检索结果进行分组汇总;HAVING 必须跟随 GROUP BY 子句使 用,用来限定分组必须满足的条件;ORDER BY 子句用来对检索结果进行排序,ASC 为升序, DESC 为降序,默认升序。 通过几个典型的实例,简单介绍 SELECT 语句的基本用途和用法: (1)检索表中所有字段的所有记录。 【例 1.4.24】查询所有学生的基本信息。 SELECT * FROM 学生;. (2)检索表中满足条件的记录和指定的字段。 【例 1.4.25】查询“计算机应用技术”专业的女学生基本信息。 SELECT * FROM 学生 WHERE 性别="女" And 所属专业="计算机应用技术";. (3)进行分组,并新增字段。 【例 1.4.26】查询每名学生的平均成绩。 SELECT 学号, Avg(成绩) AS 平均成绩 FROM 学生课程成绩 GROUP BY 学号;. (4)将多表连接一起查询。 【例 1.4.27】查询每名学生每门课程的成绩。 SELECT 学生.姓名, 课程.课程名称, 学生课程成绩.成绩 FROM 学生,课程,学生课程成绩 WHERE 课程.课程编号 = 学生课程成绩.课程编号 AND 学生.学号 = 学生课程成绩.学号;.

(26) 第一篇 理论部分. 4.6.3 创建 SQL 查询 SQL 查询分为联合查询、传递查询、数据定义查询和子查询 4 种。其中联合查询、传递 查询、数据定义查询不能在查询“设计”视图中创建,必须直接在“SQL”视图中创建 SQL 语句。对于子查询,要在查询设计网格的“字段”行或“条件”行中输入 SQL 语句。 1.创建联合查询 联合查询功能由 UNION 子句实现,其含义是将两个 SELECT 命令的查询结果合并成一个 查询结果。 子句格式:[UNION[ALL]<SELECT 命令>] 其中 ALL 表示结果全部合并。若没有 ALL,则重复的记录将被自动去掉。合并的规则是: (1)不能合并子查询的结果。 (2)两个 SELECT 命令必须输出同样的列数。 (3)两个表列出相应的数据类型必须相同,数字和字符不能合并。 (4)仅最后一个 SELECT 命令中可以用 ORDER BY 子句,且排序选项必须用数字说明。 【例 1.4.28】创建名为“合并学生信息”的查询,查询“成绩 60 以下学生信息”表中学 生信息和“学生”表中“营销与策划”专业学生信息,显示学生的姓名、性别和所属专业字段。 具体操作步骤如下: ① 在“学生成绩管理系统”数据库中,选择查询对象,单击“新建”按钮,打开“设计” 视图,并弹出“显示表”对话框,直接单击“关闭”按钮。 ② 选择“查询”→“SQL 特定查询”→“联合”命令,在打开的窗口中输入 SQL 语句, 如图 1-4-58 所示。 ③ 单击工具栏上的“保存”按钮 ,将查询命名为“合并学生信息”,然后单击“确定” 按钮。 ④ 单击工具栏上的“运行”按钮 切换到数据表视图,结果如图 1-4-59 所示。. 图 1-4-58. 设置 SQL 语句. 图 1-4-59. 联合查询结果. 2.创建传递查询 传递查询是 SQL 特定查询之一,Access 传递查询是自己并不执行而传递给另一个数据库 来执行的查询。传递查询可直接将命令发送到 ODBC 数据库服务器中。使用传递查询时,不 必与服务器上的表链接,就可以直接使用相应的表。应用传递查询的主要目的是减少网络负荷。 一般创建传递查询时,需要完成两项任务,一是设置要链接的数据库,二是在 SQL 窗口 中输入 SQL 语句。 3.建立数据定义查询 数据定义查询与其他查询不同,利用它可以直接创建、删除或更改表,或者在数据库中 创建索引。在数据定义查询中要输入 SQL 语句,每个数据定义查询只能由一个数据定义语句 组成。. 75.

(27) 76. Access 数据库技术及应用. 【例 1.4.29】将【例 1.4.17】题中 stud 表定义并生成。 具体操作步骤如下: ① 选择查询对象,单击“新建”按钮,打开“设计”视图,并弹出“显示表”对话框, 直接单击“关闭”按钮。 ② 选择“查询”→“SQL 特定查询”→“数据定义”命令,在打开的窗口中输入 SQL 语句,如图 1-4-60 所示。 ③ 单击工具栏上的“保存”按钮 ,将查询命名为“数据定义查询 1”,然后单击“确定” 按钮。 ④ 单击工具栏上的“运行”按钮 ,查看对象“表”中的 stud 表,如图 1-4-61 所示。. 图 1-4-60. 设置 SQL 语句. 图 1-4-61. 查看 stud 表. 4.使用子查询 在对 Access 表中的字段进行查询时,可以利用子查询的结果进行下一步的查询,但不能 将子查询作为单独的一个查询,其必须与其他查询相结合。 【例 1.4.30】创建名为“成绩大于平均分”的查询,显示“学生课程成绩”表中成绩高于 平均成绩的学生课程成绩记录。 具体操作步骤如下: ① 选择查询对象,单击“新建”按钮,打开“设计”视图,并弹出“显示表”对话框, 添加“学生课程成绩”表后,单击“关闭”按钮。 ② 在“字段列表”区域,双击“学生课程成绩”表中的“学号”、“课程编号”和“成绩” 字段。 ③ 在“成绩”字段的“条件”单元格中输入 SQL 语句及表达式“>(select avg(成绩) from 学生课程成绩)”,如图 1-4-62 所示。 ④ 单击工具栏上的“保存”按钮 ,弹出“另存为”对话框,在“查询名称”文本框中 输入“成绩大于平均分”,然后单击“确定”按钮。 ⑤ 单击工具栏上的“视图”按钮 ,或单击工具栏上的“运行”按钮 ,切换到“数 据表”视图,这时可以看到查询的执行结果,如图 1-4-63 所示。. 图 1-4-62. 选择字段及设置子查询. 图 1-4-63. 子查询结果.

(28) 第一篇 理论部分. 本章小结 查询是 Access 数据库的主要组件之一,它包括选择查询、参数查询、交叉表查询、操作 查询和 SQL 查询,其中操作查询又包括更新查询、生成表查询、追加查询、删除查询。每种 不同类型查询实现不同的功能,需灵活掌握其创建方法和运行方式。. 习题四 一、选择题 1.在 Access 中,查询的数据源可以是( ) 。 A.表 B.查询 C.表和查询 D.表、查询和报表 2.若在 tEmployee 表中查找所有姓“王”的记录,可以在查询设计视图的“条件”行中 输入( ) 。 A.Like"王" B.Like"王*" C.="王" D.="王*" 3.如果在查询的条件中使用了通配符方括号“[]” ,它的含义是( )。 A.通配任意长度的字符 B.通配不在括号内的任意字符 C.通配方括号内列出的任一单个字符 D.错误的使用方法 4.使用查询向导,不可以创建( )。 A.单表查询 B.多表查询 C.不带条件的查询 D.带条件的查询 5.若要查询某字段的值为 JSJ 的记录,在查询设计视图对应字段的“条件”中,错误的 表达式是( )。 A.JSJ B."JSJ" C."*JSJ*" D.Like "JSJ" 6.在一个 Access 的表中有字段“专业”,要查找包含“信息”两个字的记录,正确的条 件表达式为( )。 A.Left([专业],2)= "信息" B.Like"*信息*" C.="信息*" D.Mid([专业],1,2)= "信息" 7.在查询设计器中若不想显示选定的字段内容,则可将该字段的( )项对号取消。 A.排序 B.显示 C.类型 D.条件 8.下列对 Access 查询叙述错误的是( )。 A.查询的数据源来自于表或已有的查询 B.查询的结果可以作为其他数据库对象的数据源 C.Access 的查询可以分析、追加、更改、删除数据 D.查询不能生成新的数据表 9.如图 1-4-64 所示的查询返回的记录是( )。 A.不包含 80 分和 90 分 B.不包含 80~90 分数段. 77.

(29) 78. Access 数据库技术及应用. 图 1-4-64. 第 9 题图. C.包含 80~90 分数段 D.所有的记录 10.排序时如果选取了多个字段,则输出结果是( )。 A.按设定的优先次序依次进行排序 B.从最右边的列开始排序 C.按从左向右优先次序依次排序 D.无法进行排序 11.在 Access 中已建立了“工资”表,表中包括“职工号”、“所在单位” 、“基本工资” 和“应发工资”等字段;如果要按单位统计应发工资总数,那么在查询设计视图的“所在单位” 的“总计”行和“应发工资”的“总计”行中分别选择的是( )。 A.Sum,Group By B.Count,Group By C.Group By,Sum C.Group By,Count 12.在创建交叉表查询时,列标题字段的值显示在交叉表的位置是( ) 。 A.第一行 B.第一列 C.上面若干行 D.左面若干列 13.将表 A 的记录添加到表 B 中,要求保持表 B 中原有的记录,可以使用的查询是( )。 A.选择查询 B.生成表查询 C.追加查询 D.更新查询 14.将表 A 的记录复制到表 B 中,且不删除表 B 中的记录,可以使用的查询是( ) 。 A.删除查询 B.生成表查询 C.追加查询 D.交叉表查询 15.下列不属于操作查询的是( )。 A.查询参数 B.生成表查询 C.更新查询 D.删除查询 16.如图 1-4-65 所示显示的是查询设计视图的设计网格部分,从图所示的内容中,可以 判断出要创建的查询是( ) 。. 图 1-4-65. A.删除查询 B.追加查询 17.SQL 的含义是( ) 。 A.结构化查询语言 C.数据库查询语言. 第 16 题图. C.生成表查询. D.更新查询. B.数据定义语言 D.数据库操纵与控制语言.

(30) 第一篇 理论部分. 18.如图 1-4-66 所示的是使用查询设计器完成的查询,与该查询等价的 SQL 语句是(. 图 1-4-66. ) 。. 第 18 题图. A.Select 学号,数学 From SC Where 数学>(Select Avg(数学)From SC) B.Select 学号 Where 数学>(Select Avg(数学) From SC) C.Select 数学 Avg(数学) From SC D.Select 数学>(Select Avg(数学) From SC) 19.在 Access 中已建立了“学生”表,表中有“学号”、“姓名”、 “性别”和“入学成绩” 等字段。执行如下 SQL 命令的结果是( )。 Select 性别,Avg(学生表!入学成绩)From 学生 Group by 性别 A.计算并显示所有学生的性别和入学成绩的平均值 B.按性别分组计算并显示性别和入学成绩的平均值 C.计算并显示所有学生的入学成绩的平均值 D.按性别分组计算并显示所有学生的入学成绩的平均值 20.SQL 查询能够创建( ) 。 A.更新查询 B.追加查询 C.选择查询 D.以上各类查询 21.下列关于空值的叙述中,正确的是( )。 A.空值是双引号中间没有空格的值 B.空值是等于 0 的数值 C.空值是用 NULL 或空白来表示字段的值 D.空值是用空格表示的值 22.在书写查询条件时,日期型数据应该使用适当的分隔符括起来,正确的分隔符是 ( )。 A.* B.% C.& D.# 23.下列关于 SQL 语句的说法中,错误的是( )。 A.INSERT 语句可以向数据表中追加新的数据记录 B.UPDATE 语句用来修改数据表中已经存在的数据记录 C.DELETE 语句用来删除数据表中的记录 D.CREATE 语句用来建立表结构并追加新的记录 24.已知“借阅”表中有“借阅编号”、“学号”和“借阅图书编号”等字段,每个学生 每借阅一本书生成一条记录,要求按学生学号统计出每个学生的借阅次数,下列 SQL 语句中, 正确的是( )。 A.Select 学号, count(学号) from 借阅. 79.

(31) 80. Access 数据库技术及应用. B.Select 学号, count(学号) from 借阅 group by 学号 C.Select 学号, sum(学号) from 借阅 D.Select 学号, sum(学号) from 借阅 order by 学号 25.假设有一组数据:工资为 800 元,职称为“讲师”,性别为“男”,在下列逻辑表达 式中结果为“假”的是( ) 。 A.工资>800 AND 职称="助教" OR 职称="讲师" B.性别="女" OR NOT 职称="助教" C.工资=800 AND (职称="讲师" OR 性别="女") D.工资>800 AND(职称="讲师" OR 性别="男") 26.在建立查询时,若要筛选出图书编号是“T01”或“T02”的记录。可以在查询设计 视图条件中输入( )。 A."T01"or"T02" B."T01"and"T02" C.In("T01"and "T02") D.not in("T01"and"T02") 27.在 Access 数据库中使用向导创建查询,其数据可以来自( )。 A.多个表 B.一个表 C.一个表的一部分 D.表或查询 28.创建参数查询时,在查询设计视图条件行中应将参数提示文本放置在( )。 A.{}中 B.()中 C.[]中 D.<>中 29.在下列查询语句中,与 Select TAB1.* From TAB1 where InStr([简历],"篮球")<>0 功能 相同的语句是( ) 。 A.Select TAB1.* From TAB1.简历 Like "篮球" B.Select TAB1.* From TAB1.简历 Like "*篮球" C.Select TAB1.* From TAB1.简历 Like "*篮球*" D.Select TAB1.* From TAB1.简历 Like "篮球*" 30.在 Access 数据库中创建一个新表,应该使用的 SQL 语句是( ) 。 A.Create Table B.Create Index C.Alter Table D.Create Database 31.在显示查询结果时,如果要将数据表中的“籍贯”字段名显示为“出生地” ,可在查 询设计视图中改动( )。 A.排序 B.字段 C.条件 D.显示 32.通配符“#”的含义是( )。 A.通配任意个数的字符 B.通配任何单个字符 C.通配任意个数的数字字符 D.通配任何单个数字字符 33.假设“公司”表中有编号、名称、法人等字段,查找公司名称中有“网络”二字的 公司信息,正确的命令是( )。 A.SELECT * FROM 公司 FOR 名称 = " *网络* " B.SELECT * FROM 公司 FOR 名称 LIKE "*网络*" C.SELECT * FROM 公司 WHERE 名称="*网络*" D.SELECT * FROM 公司 WHERE 名称 LIKE"*网络*" 34.利用对话框提示用户输入查询条件,这样的查询属于( ) 。.

參考文獻

相關文件

按行业及在职员工数目抽选。对于在职员工为 20 人或以上的店铺,以及场所总 数较少的分层会进行全面统计。. 统计结果推算

修订数字 百分率 百分点 少于. 绝对数值为零 不适用

其中﹕四小时或以上 展览入场人数 奖励活动参与人数

样条插值的算例 三次样条的概念.

线性拟合与二次拟合 数据拟合的线性模型 一次多项式拟合公式..

超定方程组QR分解算法 数据拟合确定常微分方程..

一、 重积分计算的基本方法 二、重积分计算的基本技巧 三、重积分的应用.. 重积分的

圖 3-29 基礎震害損壞示意圖