文科计算机小公共课规划教材 Access 程序设计
总 目 录 第1章 数据库基础 第2章 数据库和表 第3章 查询 第4章 窗体 第5章 报表 第6章 宏 第7章 页 总 目 录 第1章 数据库基础 第2章 数据库和表 第3章 查询 第4章 窗体 第5章 报表 第6章 宏 第7章 页 第8章 模块与VBA程序设计 第9章 二级公共基础知识
第1章 数据库基础 1.1 数据库的基本概念 1.2 数据库系统发展 1.3 数据库系统的基本特点 1.4 数据模型 第1章 数据库基础 1.1 数据库的基本概念 1.2 数据库系统发展 1.3 数据库系统的基本特点 1.4 数据模型 1.5 关系模型与关系数据库 1.6 数据库设计与管理 1.7 Access数据库管理系统概述
E-R图基本概念 关系模型基本概念 关系代数 【教学目的、概要、难重点】 E-R图基本概念 关系模型基本概念 关系代数
【知识网络图】
1.1 数据库基础概念 1、基本概念 数据:实际上就是描述事物的符号记录。 1.1 数据库基础概念 1、基本概念 数据:实际上就是描述事物的符号记录。 数据库(DB):是数据的集合,具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序共享。 数据库管理系统(DBMS):一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,是数据库的核心。 数据库管理系统由以下三种数据语言组成: ①数据描述语言(Data Description Language,简称DDL)。负责数据的模式定义与数据的物理存取构建。 ②数据操纵语言(Data Manipulation Language,简称DML)。负责数据的操纵,如查询与增、删、改等。 ③数据控制语言(Data Control Language 简称DCL):负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等。
1.1 数据库基础概念 数据库管理系统功能: (1)数据模式定义:即为数据库构建其数据框架; 1.1 数据库基础概念 数据库管理系统功能: (1)数据模式定义:即为数据库构建其数据框架; (2)数据存取的物理构建:为数据模式的物理存取与构建提供有效的存取方法与手段; (3)数据操纵:为用户使用数据库的数据提供方便,如查询、插入、修改、删除等以及简单的算术运算及统计。 (4)数据的完整性、安生性定义与检查。 (5)数据库的并发控制与故障恢复。 (6)数据的服务:如拷贝、转存、重组、性能监测、分析等。
1.1 数据库基础概念 4. 应用程序 应用程序(Application)是在DBMS的基础上,由用户根据应用的实际需要开发的、处理特定业务的应用程序。 5. 数据库用户 用户(User)是指管理、开发、使用数据库系统的所有人员,通常包括数据库管理员、应用程序员和终端用户。 数据库管理员(Data Base Administrator,DBA)负责管理、监督、维护数据库系统的正常运行; 应用程序员(Application Programmer)负责分析、设计、开发、维护数据库系统中运行的各类应用程序; 终端用户(End-User)是在DBMS与应用程序支持下,操作使用数据库系统的普通用户。
1.2 数据库系统发展 (1)文件系统阶段 (2)层次数据库与网状数据库系统阶段 (3)关系数据库系统阶段 1.2 数据库系统发展 1.2 数据库系统发展 (1)文件系统阶段 (2)层次数据库与网状数据库系统阶段 (3)关系数据库系统阶段
1.3 数据库系统的基本特点 1.3 数据库系统的基本特点 (1)数据的集成性。 (2)数据的高共享性与低冗余性。 (3)数据独立性 1.3 数据库系统的基本特点 1.3 数据库系统的基本特点 (1)数据的集成性。 (2)数据的高共享性与低冗余性。 (3)数据独立性 物理独立性:存储结构变化时,逻辑结构可以不变。 逻辑独立性:逻辑结构变化时,应用程序可以不变。 (4)数据统一管理与控制。
1.3 数据库系统的基本特点 数据库之所以具有数据独立性,是因为具有三级模式以及三级模式之间的两种映射关系。 数据库系统的三级模式: 1.3 数据库系统的基本特点 数据库之所以具有数据独立性,是因为具有三级模式以及三级模式之间的两种映射关系。 数据库系统的三级模式: 概念模式:数据库系统中全局数据逻辑结构的描述,全体用户公共数据视图; 外模式:也称子模式与用户模式。是用户的数据视图,也就是用户所见到的数据模式; 内模式:又称物理模式,它给出了数据库物理存储结构与物理存取方法。 数据库系统的两级映射: 概念模式到内模式的映射。 外模式到概念模式的映射。
1.4 数据模型 1.5.2 数据模型 1、基本概念 是数据特征的抽象,从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表与操作提供一个抽象的框架。描述了数据结构、数据操作及数据约束。 在进行转换的三个层次上,模型分为概念模型、逻辑模型和物理模型,其中逻辑模型又称为数据模型 2、E-R模型的基本概念 (1)实体:现实世界中的客观存在并相互区分的事物。比如图书A是一个实体,图书B是一个实体,所有图书构成一个实体集。 (2)属性:事物的特性。图书有属性价格,图书A的价格值为19。 (3)值域:一个属性的取值范围称为值域,比如某门课成绩属性一般应该在0-100之间。
1.4 数据模型 (4)码:能唯一确定一个实体的属性或属性组合称为码,如学号为学生的码。 1.4 数据模型 (4)码:能唯一确定一个实体的属性或属性组合称为码,如学号为学生的码。 (5)实体型:用实体名及描述它的全部属性名集合称为实体型,比如:图书(图书编号,书名,价格,出版日期,作者)为图书的实体型。 (6)实体集:某实体型下的全部实体叫实体集。比如所有图书为一个图书实体集。 (7)联系:现实世界中事物间的关系。实体集的关系有一对一、一对多、多对多的联系。比如校长和学校之间是一对一联系,班级与学生之间是一对多关系,学生和教师之间是多对多关系。
1.4 数据模型 数据模型指数据库中数据与数据之间的关系,按照其结构有三种结构:关系模型、层次模型、网状模型。 层次模型 1.4 数据模型 数据模型指数据库中数据与数据之间的关系,按照其结构有三种结构:关系模型、层次模型、网状模型。 层次模型 层次模型的基本结构是树形结构,具有以下特点: (1)每棵树有且仅有一个无双亲结点,称为根; (2)树中除根外所有结点有且仅有一个双亲。 网状模型 从图论上看,网状模型是一个不加任何条件限制的无向图。 关系模型 关系模型采用二维表来表示,简称表,由表框架及表的元组组成。一个二维表就是一个关系,二维表中每行称为一个元组,每列标题称为一个属性名。
1.5 关系模型与关系数据库 1.关系 通常将一个没有重复行、重复列的二维表看成一个关系,每一个关系都有一个关系名。 2.元组 1.5 关系模型与关系数据库 1.关系 通常将一个没有重复行、重复列的二维表看成一个关系,每一个关系都有一个关系名。 2.元组 二维表的每一行在关系中称为元组。 3.属性 二维表的每一列在关系中称为属性,每个属性都有一个属性名,属性值则是各个元组属性的取值。 4.域 属性的取值范围称为域。域作为属性值的集合,其类型与范围具体由属性的性质及其所表示的意义确定。 5.关键字 关系中能惟一区分、确定不同元组的属性或属性组合称为该关系的一个关键字。单个属性组成的关键字称为单关键字,多个属性组合的关键字称为组合关键字。需要强调的是,关键字的属性值不能取“空值”,因为无法惟一区分、确定元组。 6.候选关键字 关系中能够成为关键字的属性或属性组合可能不是惟一的。凡在关系中能够惟一区分、确定不同元组的属性或属性组合都称为候选关键字。
1.5 关系模型与关系数据库 7.主关键字 在候选关键字中只能选定一个作为关键字,称为该关系的主关键字。关系中的主关键字是惟一的。 1.5 关系模型与关系数据库 7.主关键字 在候选关键字中只能选定一个作为关键字,称为该关系的主关键字。关系中的主关键字是惟一的。 8.外部关键字 关系中某个属性或属性组合并非关键字,但却是另一个关系的主关键字,称此属性或属性组合为本关系的外部关键字。关系之间的联系是通过外部关键字实现的。 9.关系模式 对关系的描述称为关系模式,其格式为: 关系名(属性名1,属性名2,…,属性名n) 关系既可以用二维表格描述,也可以用数学形式的关系模式来描述。一个关系模式对应一个关系的数据结构,也就是表的数据结构。 10.关系的基本特点 在关系模型中,关系具有以下基本特点: (1)关系必须规范化,属性不可再分割。 (2)在同一关系中不允许出现相同的属性名。 (3)在同一关系中元组及属性的顺序可以任意。 (4)任意交换两个元组(或属性)的位置,不会改变关系模式
1.5 关系模型与关系数据库 1.5.2 关系的完整性约束 1. 实体完整性 1.5 关系模型与关系数据库 1.5.2 关系的完整性约束 1. 实体完整性 实体完整性是指关系的主关键字不能取“空值”。比如在“用户”表中,用户号是主键,唯一表示用户实体,其值不能为空。 2.参照完全性约束 是关系之间的基本约束。图1.3中关系“用户”和“借书”存在关联,是一对多的关系,且“用户”为主表,如在表“借书”中存在某个用户号n,则该用户号n必定在关系“用户”表中出现,否则是不允许的。 3.用户定义的完整性约束 它反映了具体应用中数据的语义要求。图1.3中关系“用户”,“性别”属性的取值范围可以限定为“男”或“女”。
1.5 关系模型与关系数据库 1.5.3 关系代数 1、关系模型的基本运算 (1)插入:(2)删除:(3)修改:(4)查询: 1.5 关系模型与关系数据库 1.5.3 关系代数 1、关系模型的基本运算 (1)插入:(2)删除:(3)修改:(4)查询: 查询操作的三种运算: ①投影 ②选择 ③笛卡尔积 关系数据库系统的特点之一是它建立在数据理论的基础之上,有很多数据理论可以表示关系模型的数据操作,其中最为著名的是关系代数与关系演算。 2、关系模型的扩充运算: (1)交:得到在两个关系R、S中都存在元组集合,记为R∩S。 (2)并:得到两个关系R、S中所有元组集合,记为R∪S。
1.5 关系模型与关系数据库
1.6 数据库设计与管理 1.6.1 数据库设计概述 数据库设计是数据库应用的核心,主要包含四个阶段: 需求分析、概念设计、逻辑设计、物理设计 数据库设计的两种方法: 1.面向数据:以信息需求为主,兼顾处理需求; 2.面向过程:以处理需求为主,兼顾信息需求。 数据库的生命周期: 需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段(即维护阶段)
1.6 数据库设计与管理 1.6.2 数据库设计的需求分析 需求分析常用结构分析方法和面向对象的方法。结构化分析(简称SA)方法用自顶向下、逐层分解的方式分析系统。用数据流图(Date Flow Diagram简记为DFD)表达数据和处理过程的关系。对数据库设计来讲,数据字典是进行详细的数据收集和数据分析所获得的主要结果。 数据字典是各类数据描述的集合,包括5个部分: 数据项 数据结构 数据流(可以是数据项,也可以是数据结构) 数据存储 处理过程
1.6 数据库设计与管理 1.6.3 数据库概念设计 数据库概念设计的目的是分析数据内在语义关系。设计的方法有两种 1.6 数据库设计与管理 1.6.3 数据库概念设计 数据库概念设计的目的是分析数据内在语义关系。设计的方法有两种 1.集中式模式设计法(适用于小型或并不复杂的单位或部门) 由一个机构或人员设计一个综合的全局模式。 2.视图集成设计法 将一个单位分解成若干个部分,先对每个部分作局部模式设计,建立各个部分的视图,然后以个视图为基础进行集成。 设计方法:E-R模型与视图集成。 视图设计一般有三种设计次序: ①自顶向下:抽象到具体。 ②由底向上:具体到抽象。 ③由内向外:基本的到隐含的。 视图集成的几种冲突: ①命名冲突:比如“出生日期”和“生日”都表示出生时间,但名字却不同。 ②概念冲突:同一概念在一处为实体,而在另一处却为联系或属性。 ③域冲突:比如学号在成绩表里是文本型,而在学生表里却是整型。 ④约束冲突:表示“性别”的属性域在一处要求是“男”或“女”,在另一处却为“F”或“M”。
1.6 数据库设计与管理 1.6.4 数据库的逻辑设计 (1)E-R图转换为关系模式 一个实体转化为一个关系,实体的属性就是关系的属性。 1.6.4 数据库的逻辑设计 (1)E-R图转换为关系模式 一个实体转化为一个关系,实体的属性就是关系的属性。 一个联系转化为一个关系,联系所连接的实体的码转化为联系的属性。 合并关系:将与实体具有相同码的联系合并到实体中。 (2)关系视图设计 关系视图设计又称外模式设计,其作用如下: 提供数据逻辑独立性。 能适应用户对数据的不同需求; 有一定数据保密功能。
1.6 数据库设计与管理 1.6.5 数据库的物理设计 数据库的物理设计主要目标是对数据内部物理结构作调整并选 择合理的存取路径,以提高数据库访问速度有效利用存储空间。 1.6.6 数据库管理 数据库管理(Database administration),实施此项管理的人称为数据库管理员(DBA)。数据库管理的内容: (1)数据库的建立; (2)数据库的调整; (3)数据库的重组; (4)数据库安全性与完整性控制; (5)数据库的故障恢复; (6)数据库监控。
文科计算机小公共课规划教材 Access 程序设计
第2章 表的基本操作 2.1 数据库设计案例——图书借阅管理数据库 2.2 表的建立 2.3 数据类型 2.4 表的维护 2.5设置字段属性 2.1 数据库设计案例——图书借阅管理数据库 2.2 表的建立 2.3 数据类型 2.4 表的维护 2.5设置字段属性 2.6主键和索引 2.7 表间关系的建立与修改 2.8 表的其他操作 2.9 数据和数据库对象的导入和导出
表结构设计 字段有效性规则 主键创建 关系设置 【教学目的、概要、难重点】 表结构设计 字段有效性规则 主键创建 关系设置
【知识网络图】 创建结构(字段名、数据类型、字段大小) 输入数据 表的视图(设计视图、数据表视图) 表的创建 表的基本操作 表的创建 创建结构(字段名、数据类型、字段大小) 输入数据 表的视图(设计视图、数据表视图) 字段属性:字段大小、输入掩码、格式、标题、有效性规则、必填字段。 结构修改:添加字段、删除字段、修改字段 记录修改:添加记录、删除记录、修改记录 格式设置:字体、行高、列宽、列的隐藏和显示、列的冻结和解冻 表的维护 索引 主索引(主键)、唯一索引(无重复)、有重复索引 单字段索引、多字段索引 升序、降序 关系 关系建立:一对多、一对一 完整性约束:实施参照完整性、级联更新、级联删除 表的其他操作:数据查找、排序、筛选、数据的导入和导出
2.1 数据库设计案例—图书借阅管理数据库 关系的逻辑结构(课本P) 关系的完整性要求 : 实体完整性 2.1 数据库设计案例—图书借阅管理数据库 关系的逻辑结构(课本P) 关系的完整性要求 : 实体完整性 关系的完整性通过设置关系的主键(主关键字)来实现。 用户定义完整性 用户定义完整性要求关系的属性(字段)值满足什么条件,在access中可通过字段大小、输入掩码、有效性规则、必填字段等属性来设置。 参照完整性 参照完整性保证两个表之间数据的相对完整性,一般是相关表参照主表的内容 。
2.2 表的建立 Access表由表结构和表内容两部分构成。表结构有若干字段组成,字段相当于关系模型中的属性。每个字段都有一个名字,其命名规则是: 字段名长度为1~64个字符。 字段名可以包含字母、汉字、数字、空格和其他字符。 字段名不能包含句号(。)、惊叹号(!)、方括号([ ])和重音符号(’)。 对于字段,除了要定义它的名称外,还必须定义它的数据类型。
建立表结构 在确定了表的结构后,可以使用3种方法建立表结构。 (1)在“数据表视图”中直接输入各条记录值,这种方法比较简单,但无法对每一字段的数据类型、属性值进行设置,一般还需要在“设计”视图中进行修改。 (2)使用“设计”视图,并在“设计”视图中依次定义每个字段的名称、数据类型和属性,这是一种最常用的方法。 (3)通过“表向导”创建表结构,利用向导中模板快速创建一个表,然后对其进行修改。
2.3 数据类型 根据关系数据库的相关定义,数据表中同一列数据必须具有相同的数据特征,称为字段的数据类型。Access支持非常丰富的数据类型,因此能够满足各种各样的应用。下表中列出了常用的基本数据类型的含义以及大小。 表2-7给出了Access提供的基本数据类型的含义及大小。
2.4 表的维护 Access的表操作提供了两种视图:“数据表视图”和“设计”视图,前者用于修改表内容,后者用于修改表结构。 修改表结构 编辑表内容 调整表外观 设置字段属性
2.5设置字段属性 在Access表对象中,一个字段的属性是这个字段特征值的集合,该特征值集合将控制字段的工作方式和显示形式。 字段大小 格式 默认值 有效性规则 有效性文本 输入掩码 标题 必填字段 小数位数 查阅属性
2.5.1字段大小 “字段大小”属性只适用于数据类型为“文本”或“数字”字段。通过“字段大小”属性,可以控制输入文本字段使用的最大字符数或输入数字字段的数值范围以及种类。
2.5.2格式 使用“格式”属性可以指定字段的数据显示格式。预定义显示格式可用于自动编号、数字、货币、日起/时间 和 是/否型 字段,并且可以为这些字段自定义格式。 各种数据类型的格式设置取值如表2-9 所示。
2.5.3默认值 使用“默认值”属性可以指定添加新记录时自动输入的值。 【例2.3】 在图书管理系统中,假设用户的初始密码是“welcome”,则可在表用户的“设计”视图中定义密码字段的默认值。
2.5.3默认值 既可以使用常量作为默认值,也可以使用表达式作为默认值。 【例2.4】 在图书管理系统中借书表中,设置“借出日期”字段的默认值为当天的日期。
2.5.4 有效性规则 “有效性规则”是Access中另一个非常有用的属性,可以使用有效性规则控制数据在表中的字段的数据输入方式。利用该属性可以防止非法数据输入到表中。 【例2.5】用户表中的“可借册数”字段值的范围为10~30,通过定义有效性表达式“>=10 and <=30”来防止用户输入大于30或小于10的数值。设置如图2.9所示。
2.5.5有效性文本 有效性规则能够检查错误的输入或者不符合逻辑的输入。当系统发现输入错误时,会显示提示信息,为了使提示信息更加清楚、明确,可以定义有效性文本。有效性文本属性值将操作错误提示信息显示给操作者。 表2-11字段有效性规则及有效性文本设置示例 有效性规则设置 有效性文本设置 <>0 请输入一个非零值。 >=0 and <=100 请输入0到100之间的值。 <#2009-1-1# 输入一个 2009 年之前的日期。 >=#2008-1-1# and <=#2008-12-31# 日期必须是在 20080 年内。 "男" or "女" 性别只能输入男或者女!
2.5.6输入掩码 输入掩码用于设置字段中的数据格式,并可对允许输入的数值类型进行控制,由字面显示字符(如括号、句号和连字符)和掩码字符(用于指定可以输入数据的位置以及数据种类、字符数量)组成。 在输入数据时,如果希望输入的格式标准保持一致,或希望检查输入时的错误,可以使用Access提供的“输入掩码向导”来设置一个输入掩码。 如果不使用向导,还可以在属性表中定义输入掩码。对于大多数数据类型,都可以定义一个输入掩码。
2.5.6输入掩码 输入掩码由用来分隔输入空格的原义字符(例如空格、点、点划线、和括号)组成。 输入掩码属性设置则由文本字符和特殊字符组成,特殊字符将决定输入的数值类型。输入掩码主要用于文本型和日期/时间型字段,但也可以用于数字型或货币型字段。 输入掩码的属性最多可包含三个用分号(;)分隔的节。例如:00-99-99只由一个节组成。而输入掩码CCCCCC"@mail.gdufs.edu.cn";0;*则由三个用分号(;)分隔的节组成。
2.5.6输入掩码 表2-12 输入掩码的属性 节 含义 第一节 输入掩码本身。 第二节 确定是否保存原义显示字符。 0 = 以输入的值保存原义字符 1 或空白 = 只保存输入的非空格字符 第三节 显示在输入掩码处的非空格字符。可以使用任何字符。" "(双引号、空格、双引号)代表一个空格。如果省略该节,将显示下划线(_)。
2.5.6输入掩码 表2-13 输入掩码属性所使用格式字符的含义 字符 说明 数字(0 到 9,必选项;不允许使用加号〔+〕和减号〔-〕) 。 9 数字或空格(非必选项;不允许使用加号和减号)。 # 数字或空格(非必选项;空白将转换为空格,允许使用加号和减号)。 L 字母(A 到 Z,必选项)。 ? 字母(A 到 Z,可选项)。 A 字母或数字(必选项)。 a 字母或数字(可选项)。 & 任一字符或空格(必选项)。 C 任一字符或空格(可选项)。 < 使其后所有的字符转换为小写。 > 使其后所有的字符转换为大写。 \ 使其后的字符显示为原义字符。(例如, \A 显示为 A )。 密码 将“输入掩码”属性设置为“密码”,以创建密码输入项文本框。文本框中键入的任何字符都按原字符保存,但显示为星号(*)。
2.5.7标题 “标题”属性值出现在字段栏上面的标题栏中,它为每个字段设置一个标签。“标题”属性最多为255个字符。如果没有为字段设置标题属性,那么Access会使用该字段名代替。
2.5.8必填字段 “必填字段”属性有“是”和“否”两个取值。当取值为“是”时,表示必须填写本字段,不允许该字段数据为空;当取值为“否”时,表示可以不必填写本字段数据,也就是允许该字段数据为空。
2.5.9小数位数 通过设置小数位数属性,可以限制数据的输出显示的小数位数。 “小数位数”属性设置只影响显示的小数位数,而不影响所保存的小数位数。
2.5.10查阅属性 利用不同的查阅方式可以方便查阅和数据的输入,使数据输入更加简单。 具有查阅属性的字段类型主要有文本型、是否型。 对于文本型的字段来说,默认的显示控件是文本框,可以将显示控件设置为列表框或组合框,以方便数据的输入。
2.5.10查阅属性 【例2.6】在图书管理数据库中的用户表中,“学院”字段值取值范围有限而且确定,并且输入的重复率高,这样我们可以将用户表中的“学院”字段的查阅方式设置为组合框,以方便用户的输入。
2.6主键和索引 2.6.1 主键 2.6.2 索引
2.6.1 主键 主键又称主关键字,用于惟一标识标中每条记录的字段或字段组合。主键字段值具有惟一性,Access不允许主键中存入重复值和空值。 可以在 Microsoft Access 中定义三种类型的主键:自动编号、单字段及多字段。
2.6.1 主键 1.设置或更改主键 在“设计”视图中打开相应的表。 选择所要定义为主键的一个或多个字段。 如果要选择一个字段,请单击行选定器。 如果要选择多个字段,请按下 CTRL 键,然后对每一个所需的字段单击行选定器。 单击工具栏上的“主键” 按钮或右击在弹出的快捷菜单中选“主键”。
2.6.1 主键 2.删除主键 如果主键用在某个关系中,在删除主键之前,必须删除这个关系。 在“设计”视图中打开相应的表。 请单击当前使用的主键的行选定器,然后单击工具栏上“主键” 按钮。
2.6.2 索引 创建索引可以快速查找和排序记录,如果要加快排序或查找记录的速度,可以索引单个字段或字段的组合,在Access中,主键其实就是主索引。 创建单字段索引 在“设计”视图中打开表。 在窗口上部,单击要创建索引的字段。 在“常规”选项卡上的窗口下部,单击“索引”属性框内部,然后 单击“有(有重复)”或“有(无重复)”。 单击“有(无重复)”选项,可以确保任何两个记录的这一字段没有重复值。
2.7 表间关系的建立与修改 表间关系有一对一、一对多、多对多三种。多对多关系实际通过两个一对多关系实现,如“图书”和“用户”之间是多对多关系,通过“图书”和“借书”以及“用户”和“借书”这两个一对多关系实现的。所以在access中可以创建一对一、一对多联系,多对多联系不能直接创建。
2.7.1 表间建立关系的条件 两个表之间建立正确的关系,要满足以下条件: 两表有相关字段 建立关系的字段至少在其中一个表中是主键或唯一索引
2.7.2定义关系 单击“新建”按钮创建关系。 对于满足建立关系的两个,可以按以下步骤建立关系。 关闭所有打开的表,不能在已打开的表之间创建或修改关系。 单击工具栏上的“关系” 按钮,或鼠标指向数据库窗口的空白处,右击弹出快捷菜单,选择“关系”菜单项。 显示“关系”窗口。如果以前建立了关系,显示已定义的关系。如果还没有建立,将显示 “显示表”对话框,选择表或查询以添加到“关系”窗口中。 拖动主表的相应字段到另一个表中的相应字段上,其中建主键或唯一索引的表为主表,另一个表为相关表,系统自动识别。 单击“新建”按钮创建关系。
2.7.2定义关系 (1)若只有其中一个表的对应字段是主键或唯一索引,两表建立一对多关系,建立方法如下: 拖动任何一个表的相应字段到另一个表中的相应字段上,其中建主键或唯一索引的表为主表,另一个表为相关表,系统自动识别。 (2)若两个表的对应字段均为主键或唯一索引,两表建立一对一关系,建立方法如下: 拖动主表的相应字段到相关表中的相应字段上,由于两个表对应字段均为主键或唯一索引,系统无法识别哪个表是主表,因此系统按照拖放的次序决定谁是主表。因此这是需要用户自己判断哪个表是基本的表,将其作为主表。
2.7.3删除关系 关闭所有打开的表,因为不能删除已打开的表之间的关系。 单击工具栏上的“关系” 按钮。 如果要删除的表的关系没有显示,请单击工具栏上的“显示表” 按钮并双击每一个所要添加的表,然后单击“关闭”按钮。 单击所要删除关系的关系连线(当选中时,关系线会变成粗黑),然后按 DELETE 键。
2.7.4编辑已有的关系 关闭所有打开的表,因为不能修改已打开的表之间的关系。 单击工具栏上方的“关系” 按钮。 如果没有显示要编辑的表的关系,请单击工具栏上的“显示表” 按钮并双击每一个所要添加的表。 双击要编辑关系的关系连线。 在“编辑关系”窗口中设置关系的选项。
2.7.5查看已有的关系 单击工具栏上的“关系” 按钮。 如果要查看在数据库中定义的所有关系,请单击工具栏上的“显示所有关系” 按钮。 如果要查看特定表的关系,请单击相应的表,然后再单击工具栏上的“显示直接关系” 按钮。
2.7.6参照完整性 参照完整性就是在输入或删除记录时,为维持表之间已定义的关系而必须遵循的规则。如果实施了参照完整性,则当添加或修改数据时,Access会按所创建的关系来检查数据,若违反了这种关系,就会显示出错信息且拒绝这种数据。
2.7.6参照完整性 1.实施参照完整性步骤 (1)选定表间连线,右击弹出快捷菜单,选择“编辑关系”出现“编辑关系”窗口。 (2)在“编辑关系”窗口中根据需要选择“实施参照完整性”、“级联更新相关字段”、“级联更新相关记录”复选框。
2.7.6参照完整性 2.实施参照完整性的规则 当实行参照完整性后,必须遵守下列规则: (1)不能在相关表的外部键字段中输入不存在于主表的主键中的值。 (2)如果在相关表中存在匹配的记录,不能从主表中删除这个记录。 (3)如果某个记录有相关的记录,则不能在主表中更改主键值。
2.7.6参照完整性 3.实施参照完整性的级联更新和级联删除规则 (1)如果设置了“级联更新相关字段”复选框,在主表中更改主键值,将自动更新所有相关记录中的匹配值。 (2)如果设置了“级联删除相关记录”复选框,删除主表中的记录,将删除任何相关表中的相关记录。
2.7.6参照完整性 4.无法实施参照完整性的原因 若提示无法实施参照完整性的消息框,原因在于现存数据已经违反了参照完整性的要求,请检查相关表中的建立关联字段的值是否全部在主表中出现过。
2.8 表的其他操作 2.8.1查找或替换数据 2.8.2 排序记录 2.8.3 筛选记录
2.8.1查找或替换数据 使用“查找”对话框的方法。 在 “数据表”视图中,选择要搜索的字段,除非要搜索所有的字段(搜索单一字段比搜索整个窗体或数据表快)。 单击工具栏上的“查找” 按钮。 在“查找内容”框,输入要查找的内容。 如果不完全知道要查找的内容,可以在“查找内容”框中使用通配符来指定要查找的内容。关于通配符的示例和如何使用它们,请参考表2-16。
2.8.2 排序记录 排序是根据当前表中的一个或多个字段的值来对整个表中的所有记录来进行重新排列。 1.按一个字段排序 在 “数据表”视图,单击要用于排序记录的字段。执行下列操作之一: 若要升序排序,请单击工具栏中的升序按钮。 若要降序排序,请单击工具栏中的降序按钮。
2.8.2 排序记录 2.按多个字段排序 在Access中,不仅可以按一个字段排序,也可以按多个字段排序记录。按多个字段排序时,首先根据第一个字段指定的顺序进行排序,当第一个字段具有相同的值时,再按第二个字段排序,以此类推,直到按全部指定的字段排好为止。操作步骤: 打开要排序的表的 “数据表”视图。 单击“记录”菜单中的“筛选”命令,然后从级联菜单中选择“高级筛选/排序”命令。 在“筛选”窗口中单击设计网格中第一列字段行右侧的箭头按钮,从弹出的列表中选择第一排序字段,单击设计网格中相应的排序单元格右侧的箭头按钮,从弹出的列表中选择排序的方式。若有其他排序字段,用同样的方法设置。 单击“记录”菜单中的“筛选”命令,然后从级联菜单中选择“应用筛选”命令。这时Access就会按设定的排序方式对表中的记录进行排序。
2.8.3 筛选记录 筛选指的是只显示满足条件的记录,将不满足条件的记录暂时隐藏起来。可以使用四种方法筛选记录:“按选定内容筛选”、“按窗体筛选”、“输入筛选目标”以及“高级筛选/排序”。 取消筛选则可以将表中所有的数据显示出来。操作是:单击鼠标右键,在弹出的快捷菜单中选择“取消筛选、排序”命令
2.9 数据和数据库对象的导入和导出 2.9.1 数据和数据库对象的导入 2.9.2数据和数据库对象的导出
2.9.1 数据和数据库对象的导入 所谓导入就是将符合Access输入/输出协议的任一类型的数据导入到Access的数据库中。 导入的方法是: 从“文件”菜单中的“获取外部数据”子菜单中选择“导入”命令,在显示的“导入”对话框中选择要导入的数据所在位置的文件,并按向导的提示完成所有操作。 或在数据库窗口单击鼠标右键,在弹出的快捷菜单中选择“导入”命令,在显示对话框中选择要导入的数据所在位置的文件,并按向导的提示完成所有操作。
2.9.2数据和数据库对象的导出 导出是一种将数据和数据库对象输出到其他数据库、电子表格或文件格式的方法,以便其他数据库、应用程序或程序可以使用这些数据或数据库对象。 通常,使用“文件”菜单中的“导出”命令可以导出数据或数据库对象,可以将数据导出到各种的支持的数据库、程序和文件格式中。
文科计算机小公共课规划教材 Access 程序设计
3. 1 查询的作用及类型 3.2创建选择查询 3.3 交叉表查询 3.4操作查询 3.5 参数查询 3.6 SQL查询 第3章 查询的基本操作 3. 1 查询的作用及类型 3.2创建选择查询 3.3 交叉表查询 3.4操作查询 3.5 参数查询 3.6 SQL查询
【教学目的、概要、难重点】 查询是Access处理和分析数据的工具,能够根据给定的条件对数据表中的数据进行检索、分析和计算,并能实现对表内容的更改、删除和增加。查询建立后,可以被看成是一个简化的数据表,由它构成窗体、报表的来源,并可以以它为基础构成其他查询。 本章重点: 查询条件设置 汇总运算
【知识网络图】
3. 1 查询的作用及类型 3.1.1 查询的作用 3.1.2 查询的视图 3.1.3 查询的分类
3.1.1 查询的作用 查询的作用分为以下几个方面: (1) 按照一定的准则对一个表或多个表中的数据进行重新组合,使这些数据在一个虚拟表中显示出来。 (2) 对查询到的数据进行计算、统计、分析或者生成新表。 (3) 完成大量数据的更新,如添加、修改或删除。 (4) 为窗体或报表提供数据源。
3.1.2 查询的视图 1 设计视图 主要用来实现查询的设计功能,如添加查询表,指定查询字段,设置排序和查询准则等。 2 数据表视图 数据表视图可以查看查询的生成结果,以数据表的形式显示查询结果,此时的数据表字段是不可编辑的。 3 SQL视图 显示当前查询的SQL语句,或创建一个SQL查询。
3.1.3 查询的分类 1 选择查询 2 参数查询 3 交叉表查询 4 操作查询 5 SQL查询
3.2创建选择查询 最常见的查询类型是选择查询。选择查询通过使用用户指定的准则从表中检索数据,然后按照需要的次序显示数据。 可以用向导建立查询,也可在查询“设计”视图中创建查询。
3.2.1 使用向导创建查询 通过“简单选择查询向导”创建查询,可以在一个或多个表或查询中指定的字段检索数据。 【例3.1】查询数据库“图书借阅管理.mdb”中用户的借阅基本情况,输出用户号,姓名,图书编号,书名,借出日期,应还日期,是否已还等字段,查询的名称保存为“用户借阅情况查询”。 操作步骤(课本P)
3.2.2 使用设计器创建查询 在查询“设计”视图中自定义查询条件,可以新建查询的设计或修改已有的查询,也可以用来修改作为窗体、报表或数据访问页记录源的SQL语句 。 创建查询的操作的基本步骤是: (1)向查询添加表 (2)向查询添加字段 (3) 设置排序准则 (4) 设置查询条件 (5) 在不同视图下查看查询结果 (6) 保存查询
3.2.2 使用设计器创建查询 【例3.2】查询数据库“图书管理.mdb”中出版社是“电子工业出版社”的图书的基本信息,输出图书编号,书名,类别,单价,作者,出版日期,ISBN号,并按出版日期降序排列,查询的名称保存为“电子工业出版社图书查询”。 操作 步骤(见课本P)
3.2.2 使用设计器创建查询 本例子对应的SQL语句为: SELECT 图书.图书编号, 图书.书名, 图书.类别, 图书.单价, 图书.数量, 图书.作者, 图书.出版日期, 图书.ISBN号 FROM 图书 WHERE (((图书.出版社)="电子工业出版社")) ORDER BY 图书.出版日期 DESC;
3.2.3 多表查询 多表查询就是从多个表中检索相关的信息,并把相关的数据在一个视图显示出来 。 3.2.3 多表查询 多表查询就是从多个表中检索相关的信息,并把相关的数据在一个视图显示出来 。 将多个表或查询添加到查询中时,需要确定它们的字段列表使用联接线互相联接在一起,这样Access才知道如何连接彼此之间的信息,即使没有建立关系,如果添加到查询中的两个表都含有一个相同数据类型或兼容数据类型的字段,并且这两个联接字段中有一个是主键,Access将自动为其创建联接。 如果查询中的表不是直接或间接地联接在一起的,Access将无法知道记录和记录间的关系,因而会显示两表间记录的全部组合(称为“交叉乘积”或“卡氏乘积”)。
3.2.4使用条件检索数据 创建查询时,可以通过在“条件”单元格中输入条件表达式来限制结果中记录。 可以对相同的字段或不同的字段输入条件表达式。在多个“条件”单元格中输入表达式时,Access用And或Or运算符进行组合。 如果此表达式是在同一行的不同单元格中,Microsoft Access 将使用 And 运算符,表示将返回匹配所有单元格中条件的记录。 如果表达式是在设计网格的不同行中,Access 将使用 Or 运算符,表示匹配任何一个单元格中条件的记录都将返回 。
3.2.4使用条件检索数据 1.在条件表达式中使用比较运算符 比较运算符用于比较两个表达式的值,要比较的数据的数据类型必须匹配。 当在“设计”视图中创建查询时,可以在字段的“条件”单元格中输入要比较的表达式和所用的比较运算符,语法格式为: <表达式1> <比较运算符> <表达式2> 常见的比较运算符有“=”(等于)、“>”(大于)、“<”(小于)、“>=”(大于等于)、“<=”(小于等于)、“<>”(不等于)。 若要将某个字段值与某个表达式进行比较,则在该字段的“条件”单元格中输入比较运算符和改表达式即可,而不必输入改字段的名称。
3.2.4使用条件检索数据 【例3.3】建立查询“计算机操作及应用教程借阅情况查询”,在图书管理数据库中检索2008年6月1日以后(含2008年6月1日)的“计算机操作及应用教程”一书的借阅情况。 操作步骤 (见课本P)
3.2.4使用条件检索数据 本例子对应的SQL语句为: SELECT 借书.用户号, 用户.姓名, 用户.学院, 用户.读者类别, 借书.图书编号, 图书.书名, 图书.类别, 借书.借出日期, 借书.应还日期, 借书.是否已还 FROM 用户 INNER JOIN (图书 INNER JOIN 借书 ON 图书.图书编号 = 借书.图书编号) ON 用户.用户号 = 借书.用户号 WHERE (((图书.书名)="计算机操作及应用教程") AND ((借书.借出日期)>=#6/1/2008#));
3.2.4使用条件检索数据 2.在条件表达式中使用Like运算符和通配符 Like运算符用于测试一个字段串是否与给定的模式相匹配,模式则是由普通字符和通配符组成的一种特殊字符串。在使用Like运算符和通配符,可以搜索部分匹配或完全匹配的内容。在“条件”单元格中使用Like运算符时,应按照下面的语法格式输入: Like <模式>
3.2.4使用条件检索数据 【例3.4】建立查询“程序设计图书查询”,检索书名中含有“程序设计”字符串的图书的信息,输出字段图书编号, 书名, 类别, 数量, 剩余数量, 作者, 出版日期, 出版社, 简介, 是否可借。 操作步骤 (见课本P)
3.2.4使用条件检索数据 本例子对应的SQL语句为: SELECT 图书.图书编号, 图书.书名, 图书.类别, 图书.数量, 图书.剩余数量, 图书.作者, 图书.出版日期, 图书.出版社, 图书.简介, 图书.是否可借 FROM 图书 WHERE (((图书.书名) Like "*程序设计*"));
3.2.4使用条件检索数据 3.在条件表达式中使用Between运算符 Between运算符用于测试一个值是否位于指定范围内。在“条件”单元格中使用Between运算符时的格式如下: Between <起始值> And <终止值> 起始值和终止值必须和所在字段的数据类型相同。如果字段的值介于起始值和终止值之间,即大于等于起始值并且小于等于终止值,则相应的记录将包含在查询结果中。
3.2.4使用条件检索数据 【例3.5】建立查询“08年出版的计算机图书查询”,查询08年出版的类别为计算机的图书的相关信息。输出信息为图书编号,书名,数量,作者,出版日期,出版社,简介。 操作步骤 (见课本P)
3.2.4使用条件检索数据 本例子对应的SQL语句为: SELECT 图书.图书编号, 图书.书名, 图书.数量, 图书.作者, 图书.出版日期, 图书.出版社, 图书.简介 FROM 图书 WHERE (((图书.类别)="计算机") AND ((图书.出版日期) Between #1/1/2008# And #12/31/2008#));
3.2.4使用条件检索数据 4.使用in运算符 In运算符用于测试字段值是否在一个列表中。在“条件”单元格中使用In运算符的语法格式如下: 在某个字段的“条件”单元格中输入条件表达式时,如果要以该字段作为测试表达式,则不必输入测试表达式;若不是以该字段作为测试表达式,则必须输入该测试表达式。
3.2.4使用条件检索数据 【例3.6】建立查询,查询“清华大学出版社”,“电子工业出版社”,“航空工业出版社”出版的图书,输出信息包括图书编号,书名,作者,出版日期,ISBN,出版社等。查询名称为“清华大学出版社、电子工业出版社和航空工业出版社出版的图书”。 操作步骤(见课本P)
3.2.5在查询中进行计算 在查询中可以执行两类计算:一类是预定义计算,又称汇总计算,即针对查询结果的全部或部分记录进行计算,包括求和、求平均值、计数、求最大值和最小值以及计算标准偏差和方差等;另一类是自定义计算,用于对查询结果中的一个或多个字段进行数值、日期或文本计算,执行此类计算时需要在设计网格中定义计算字段。
1.汇总计算 汇总计算使用系统提供的汇总函数对查询中的记录组或全部记录进行分类汇总计算,需要单击工具栏上的“合计”按钮,在“设计视图”的设计网格中出现“总计”行。 【例3.7】使用“设计视图”创建选择查询,要求显示各学院各种类型读者的用户数,输出字段学院,读者类型,人数,查询名称为“各学院各种类型读者的用户数”。 操作步骤(见课本P)
1.汇总计算 本例子对应的SQL语句为: SELECT 用户.学院, 用户.读者类别, Count(用户.用户号) AS 人数 FROM 用户 GROUP BY 用户.学院, 用户.读者类别;
表3- 1 汇总函数 函 数 名 功 能 Sum(总计) 计算一组记录中某字段值的总和 Avg(平均值) 计算一组记录中某字段值的平均值 Min(最小值) 计算一组记录中某字段值的最小值 Max(最大值) 计算一组记录中某字段值的最大值 Count(计数) 计算一组记录中记录的个数 StPev(标准差) 计算一组记录中某字段值的标准偏差 Var(方差) 计算一组记录中某字段值的方差值 First(第一条记录) 一组记录中某字段的第一个值 Last(最后一条记录) 一组记录中某字段的最后一个值 Expression(表达式) 创建一个由表达式产生的计算字段 Where(条件) 设定分组条件以便选择记录
2.在查询中执行自定义计算 在查询中可以使用各种运算符或内置函数对一个或多个字段进行自定义计算,从而在查询中建立计算字段。 自定义计算一般需要设计者在“设计网格”中创建新的计算字段,并在新列字段单元格中,写出计算表达式来对一个或多个字段进行数值、日期或文本计算。 在计算表达式中如果包含字段名,需要用一对方括号“[ ]”括起字段名。
【例3.8】,假设图书馆中对于图书资料逾期未还者,按逾期每天每册0 【例3.8】,假设图书馆中对于图书资料逾期未还者,按逾期每天每册0.10元收取图书逾期滞纳金,请建立查询“罚款金额计算”,计算每册逾期未还的图书到今天为止应罚款多少钱,输出信息有用户号,姓名,图书编号,书名,应还日期,逾期罚款金额。 操作步骤 (见课本P)
2.在查询中执行自定义计算 本例子对应的SQL语句为: SELECT 借书.流水号, 借书.用户号, 用户.姓名, 借书.图书编号, 图书.书名, 借书.应还日期, 借书.是否已还, (Date()-[应还日期])*0.1 AS 逾期罚款金额 FROM 用户 INNER JOIN (图书 INNER JOIN 借书 ON 图书.图书编号 = 借书.图书编号) ON 用户.用户号 = 借书.用户号 WHERE (((借书.应还日期)<Date()) AND ((借书.是否已还)=False));
3.3 交叉表查询 交叉表查询显示来源于表或查询结果中某个字段的总结值(合计、计算以及平均),并将它们分别分组,一组在数据表的左侧作为行标题,一组在数据表的上部作为列标题,在行列交叉处显示某个字段的各种计算值。 建立交叉表查询可以使用交叉表查询向导,一步步按提示设置交叉表的行标题、列标题和相应的计算值;也可在设计视图的网格处,按右键选“查询类型”,“交叉表查询”,在网格处自己设置行标题、列标题和相应的计算值,并对行标题和列标题选择分组(group by)。
3.3 交叉表查询 【例3.9】用交叉表查询数据库“图书管理.mdb”中各学院各种类别读者的人数,学院为行标题,读者类别为列标题,人数为数值,查询的名称保存为“各学院各种类别读者人数-交叉表”。 操作 步骤(见课本P)
3.4操作查询 操作查询是复制或更改数据的查询。操作查询包括追加查询、删除查询、更新查询和生成表查询。
3.4.1 生成表查询 建立生成表查询的过程为: (1) 打开设计视图,先建立选择查询; (2) 选择要查询的数据表; (3) 设计好要查询的项目; (4) 在查询窗口按右键,或单击查询类型图标,选生成表查询; (5) 在弹出的对话框输入新表的名称; (6) 在数据表视图检查查询结果是否正确; (7) 单击工具栏的运行图标,将弹出对话框,提示正准备向新表粘贴数据,选择是来创建按指定名称的新生成表,如果新生成表的名称与数据库中原来表的名称重复,将删除原来的表,以新表代替。
3.4.1 生成表查询 【例3.10】建立生成表查询“教工用户生成表查询”,输出“读者类别”为“教授”,“副教授”,“讲师”及“助教”用户的所有字段,生成的新表名称为“教工用户”。 操作步骤(见课本P)
3.4.1 生成表查询 【例3.11】查询数据库“图书管理.mdb”,用生成表查询查询目前借出图书的数量汇总,输出图书编号,在借数量字段,新表的名称为“借出数量汇总”。 操作步骤(见课本P)
3.4.1 生成表查询 本例子对应的SQL语句为: SELECT 借书.图书编号, 图书.书名, Count(借书.图书编号) AS 借出数量 INTO 借出数量汇总 FROM 图书 INNER JOIN 借书 ON 图书.图书编号 = 借书.图书编号 WHERE (((借书.是否已还)=False)) GROUP BY 借书.图书编号, 图书.书名;
3.4.2 更新查询 利用数据表视图更新一个表或多个表的满足某些条件的记录操作起来比较麻烦,但是利用更新查询可以实现对一个或多个表中的一组记录作全局的更改。
3.4.2 更新查询 【例3.12】查询数据库“图书管理.mdb”,在“图书”表中增加了一个字段“剩余数量”,数字型,字段大小是整型。根据表中的数量以及借出数量字段更新图书表中的剩余数量字段,剩余数量的计算方法为数量减去借书数量,查询名称为“更新剩余数量”。 操作步骤 (见课本P)
3.4.3 追加查询 追加查询是从一个或多个表将一组记录追加到一个或多个表的尾部,再追加查询中,要被追加记录的表必须是已经存在的表。这个表可以是当前数据库的,也可以是另外一个数据库的,追加查询对于从表中筛选记录添加到另一个表中是很有用的。 在使用追加查询时,必须遵循以下规则:(l) 如果要被追加记录的表有主键字段,追加的记录不能有空值或重复的主键值。 (2) 如果追加记录到另一个数据库,必须指明数据库的路径位置和名称;(3) 添加有自动编号数据类型字段的记录时,如果被添加的表也有该字段和记录内容,就不要包括自动编号字段。
3.4.3 追加查询 【例3.13】建立追加生成表查询“用户追加查询”,在上例中生成的“教工用户表”中追加博士生用户的记录。 操作步骤(见课本P)
3.4.3 追加查询 本例子对应的SQL语句为: INSERT INTO 教工用户 ( 用户号, 密码, 姓名, 性别, 学院, 读者类别, 联系电话, 邮件地址, 可借册数, 已借册数, 期限 ) SELECT 用户.用户号, 用户.密码, 用户.姓名, 用户.性别, 用户.学院, 用户.读者类别, 用户.联系电话, 用户.邮件地址, 用户.可借册数, 用户.已借册数, 用户.期限 FROM 用户 WHERE (((用户.读者类别)="博士生"));
3.4.4 删除查询 删除查询是在指定的表中删除筛选出来的记录,在所有操作查询中,删除查询是最危险的,因为删除查询将永久地和不可逆地从表中删除记录。 【例3.14】建立删除查询“用户删除查询”,在“用户追加查询”例中生成的“教工用户表”中删除“博士生”用户的记录。 操作 步骤(见课本P)
3.4.4 删除查询 本例子对应的SQL语句为: DELETE 用户.读者类别 FROM 用户 WHERE (((用户.读者类别)="博士生"));
3.5 参数查询 参数查询在执行时显示对话框以提示用户输入信息,当用户在创建查询时不确定自己要输入的查询值,而在运行时,根据需要输入不同的查询值,可使用参数查询。
【例3.15】查询数据库“图书管理.mdb”,通过参数查询某图书的基本情况。要求运行查询时弹出对话框“请输入图书书名关键字:”输入部分书名,可以查询含有该文字的所有图书的基本信息,输出图书表中所有字段,查询的名称为“图书查询”。 操作步骤 (见课本P)
3.5 参数查询 本例子对应的SQL语句为: SELECT 图书.图书编号, 图书.书名, 图书.类别, 图书.单价, 图书.数量, 图书.借出数量, 图书.作者, 图书.出版日期, 图书.ISBN号, 图书.出版社, 图书.简介, 图书.封面, 图书.是否可借 FROM 图书 WHERE (((图书.书名) Like "*"+[请输入书名关键字]+"*"));
3.6 SQL查询 SQL查询是是使用SQL语句创建的查询,可以用SQL语句来查询、更新和管理Access这样的关系型数据库。
3.6.1 SQL语句 SQL即结构化查询语言,是使用关系模型的数据库应用语言 。 在SQL查询中用得最多的就是SELECT语句了,SELECT语句构成了SQL数据库语言的核心,它的语法包括5个主要子句,分别是FROM、WHERE、GROUP BY、HAVING、ORDER BY、INTO子句 。
3.6.1 SQL语句 SELECT语句的结构如下: SELECT 〈字段列表〉 FROM 〈表列表〉 [INTO <新表名>] [ WHERE〈行选择说明〉] [GROUP BY 〈分组说明〉] [ HAVING 〈组选择说明〉] [ORDER BY 〈排序说明〉];
3.6.1 SQL语句 联接查询 : SELECT 〈字段列表〉 FROM 〈表名1〉INNER JOIN 〈表名2〉 ON [表1.字段名] <关系运算符> [表2.字段名] 更新查询: UPDATE <表名> SET 字段名=表达式 [ WHERE〈行选择说明〉] 删除查询:DELETE FROM <表名> [ WHERE〈行选择说明〉] 追加查询:INSERT INTO <表名> (字段名1,字段名2) VALUES (值1,值2)
3.6.2创建SQL特定查询 SQL特定查询分为联合查询、传递查询、数据定义查询和子查询等 。 1.联合查询 创建将两个或多个表或查询中的对应字段组合成一个字段的联合查询,该查询使用 UNION 运算符来合并两个或更多选择查询的结果。 2.传递查询 传递查询,可以用于直接向 ODBC 数据库服务器发送命令。通过使用传递查询,可以直接使用服务器上的表,而不用让 Microsoft Jet 数据库引擎处理数据。 3.数据定义查询 数据定义查询,包含数据定义语言 (DDL) 语句的 SQL 特有查询。这些语句可用来创建或更改数据库中的对象。 4.子查询 子查询是一个SELECT选择查询,它返回单个值并且嵌套在另一个选择查询或操作查询中。任何允许使用表达式的地方都可以使用子查询。
创建子查询 子查询必须包含Select子句和From子句,并可根据需要来选用Where子句等。 【例3.16】在“图书管理”数据库中建立查询“价格在平均价格以上的图书”,检索图书的单价在所有图书的平均单价以上的图书。 操作步骤 (见课本P)
本章重点: 窗体的创建及属性修改 标签、文本框、按钮等常用控件的设计 常用控件属性修改 第4章 窗体 本章重点: 窗体的创建及属性修改 标签、文本框、按钮等常用控件的设计 常用控件属性修改
〖知识网络图〗
4.1窗体应用案例概述——图书借阅管理系统窗体 图书借阅管理系统提供了一个可视化窗口界面的图书馆管理图书借阅实用应用系统,用户通过该系统可方便的进行借阅用户的管理、图书资料的管理以及用户借阅图书的管理。
图4.1 用户登录
图4.2 主体导航窗体
图4.3用户资料编辑窗体
图4.10 图书借阅查询
4.2 在设计视图中创建窗体 1.使用向导创建。 通常当窗体需要和表或查询数据绑定时,采用此方式能够快速生成管理数据的各种类型窗体,用户只需要选择数据源以及窗体的样式布局等即可生成窗体主体界面,然后可根据需要进行窗体界面修改。 2.在设计视图中创建。 如果窗体没有和任何表或查询关联的控件,这时就不需要使用向导创建,用户通过工具箱上控件根据需要在窗体上创建各种个性化控件。
【例4.1】用户登录窗体设计。
控件工具箱
创建“登录窗口”控件 (1) 选择数据库窗口“对象”“窗体”,双击“窗体”页的“在设计视图中创建窗体”,自动创建一个空白窗体。(非向导) (2) 添加“用户登录”标签 (3) 添加未绑定文本框 (4) 添加命令按钮(“确定”不使用向导,“退出”使用向导)
1.窗体属性 (1) 标题属性 (2) 导航按钮 (3) 模式 (4) 关闭按钮 (5) 弹出方式 4.2.3 设置控件属性 1.窗体属性 (1) 标题属性 (2) 导航按钮 (3) 模式 (4) 关闭按钮 (5) 弹出方式
2.标签属性 (1) 名称属性 (2)标题属性 (3)字体属性 4.2.3 设置控件属性 2.标签属性 (1) 名称属性 (2)标题属性 (3)字体属性
3.文本框属性 (1)名称属性 (2)控件来源 (3)输入掩码 4.2.3 设置控件属性 3.文本框属性 (1)名称属性 (2)控件来源 (3)输入掩码
控件名称 属性名 属性值 英文属性名 说明 窗体 “用户登录”标签 “用户号”文本框 “密码”文本框 “确定”按钮 标题 用户登录 Caption 本章在设计窗体时,直接修改各个控件的属性,在后续章节中,将介绍如何在VBA代码中修改窗体的控件属性。 在代码中修改控件属性值的方法是: 控件名称.属性名称=值 这里控件名称为控件的“名称”属性值。 属性名称要使用其英文属性名。 比如,要在代码中将“用户登录”标签的字号变为24的代码是: Label0.fontsize=24 导航按钮 否 模式 是 关闭按钮 “用户登录”标签 名称 Label0 字体 楷体_GB2312 Fontname 字体大小 20 Fontsize “用户号”文本框 userid 控件来源 controlSource “密码”文本框 password 输入掩码 密码 “确定”按钮 Command1 确定 caption 表4-1 用户登录窗体控件属性
4.3 使用向导创建数据管理窗体 【例4.3】用户资料编辑窗体设计。 “用户资料编辑”窗体主要功能是对用户表中数据进行修改、删除、添加,这些工作都可在窗体上更加方便直观的完成。运行图见图4.3,设计视图见图4.22。以下几节将通过该例来讲解数据管理窗体的设计。
图4.22 用户资料编辑窗体设计视图
窗体各组成部分的作用: (1)窗体页眉:在运行或打印窗体时,窗体页眉出现在第一页的顶部。在窗体页眉的内容中,通常写窗体的标题、窗体的使用说明等。 (2)页面页眉:打印窗体时,页面页眉出现在每一页的顶部,运行窗体时,页面页眉不出现。在页面页眉的内容中,通常写标题、列标头等信息。 (3)主体:是窗体中显示数据和操作数据的部分。 (4)页面页脚:页面页脚只出现在每张打印页的底部。在页面页脚的内容中,通常写页码、总页数、日期等信息。 (5)窗体页脚:在打印或运行时,出现在窗体的最下方。在窗体页脚的内容中,通常写一些提示性信息,如命令按钮或窗体的使用说明等。
4.3.2 向导创建窗体主体 使用向导快速创建如图4.27窗体 图4.27 自动生成的数据管理窗体
4.3.3 窗体的修改 1.调整窗体布局 鼠标移动到主体节空白处,单击鼠标右键,选择“显示页面页眉/页脚”,鼠标分别移动到各节空白处,打开各节属性窗口,分别设置窗体页眉、页面页眉、主体、页面页脚、窗体页脚的“高度”属性为1cm、0.7cm、5cm、0.7cm、1cm。鼠标移动各节以外的深灰色区域,打开窗体属性窗口,设置窗体的宽度为15cm。 2.添加窗体页眉 在窗体页眉处添加一个标签,内容为“用户资料编辑”,字体为楷体_GB2312,字号22,其他默认。 3.添加页面页眉 在页面页眉处添加一个标签,内容为“图书用户资料打印列表”,其他属性采用默认值。 4.在主体节调整控件位置 使用鼠标选中图4.27中控件后,拖动鼠标调整成为如图4.22所示两列。
5.创建单选项按钮控件 使用单选按钮显示年级 (1)单击工具箱“ ”选项组符号,分别输入一年级、二年级、三年级、四年级。 4.3.3 窗体的修改 5.创建单选项按钮控件 使用单选按钮显示年级 (1)单击工具箱“ ”选项组符号,分别输入一年级、二年级、三年级、四年级。
输入每个选项对应的数字
在“在此保存选择该值”所对的下拉框中选择“年级”。这一步将单选项和年级字段进行了绑定
选择“选项按钮”
4.3.3 窗体的修改 6.组合框的设计 (1)单击工具箱“ ”组合框符号,单击窗体主体节合适位置,出现图4.32,由于没有专门记录学院名称的表,所以选择“自行键入所需的值”(即将会出现组合框里的选项)。 (2)单击“下一步”按钮,出现图4.33,输入现有学院名称。 (3)单击“下一步”按钮,出现图4.34,选择“将该数值保存在这个字段中”,选择“学院”字段。 (4)最后一步,填入组合框标题“学院”。
8.在页面页脚设置计算型文本框 (1)在页面页脚节添加两个个文本框,属性默认。 (2)打开文本框的属性窗口,见图4.35,单击控件来源属性框后“”符号,出现图4.36。 (3)分别选择“通用表达式”、“第N页,共M页”,在最后边框中显示:="第 " & [Page] & " 页,共 " & [Pages] & " 页",双击后显示在最上面文本框中,[Page]、[Pages]为系统变量,会自动显示当前页是第几页及总页数。 (4)同理,设置第二个文本框的控件来源,见图4.37,其控件来源为=date(),date()函数返回系统的当前日期。
【例4.4】“按用户号查找用户”窗体,运行图见图4.4,设计视图见图4.38。 4.4 使用设计视图创建数据管理窗体 【例4.4】“按用户号查找用户”窗体,运行图见图4.4,设计视图见图4.38。 图4.38 按用户号查找窗体设计视图
(1)使用“在设计视图中创建窗体”创建一个新窗体,窗体名为“按用户号查找用户”。适当调整窗体高度和宽度。 (2)在窗体上添加一个未绑定文本框,名称设置为userid。 (3)创建数据源。 由于要按用户号进行查询,所以数据源应该可以设置条件为用户编 号与userid文本框的值相等,可以通过查询中的条件设置来实现。
鼠标定位在条件框中,按鼠标右键,在弹出的快捷菜单中选择“生成器”菜单项,弹出如图4 鼠标定位在条件框中,按鼠标右键,在弹出的快捷菜单中选择“生成器”菜单项,弹出如图4.39,选择“窗体”|“按用户号查找用户”,双击userid,生成表达式:[Forms]![按用户号查找]![userid]
(4)设置控件数据来源 打开窗体属性窗口,如图4.40,设置“记录源”属性值为“按用户号查找用户”查询,弹出图4.41,选择所有字段,拖动到主体节,即可生成和各字段绑定的控件,适当调整各控件位置。
(5)窗体事件 打开“查询”按钮的属性窗口,选择“事件”页,见图4.43,选择单击属性值“[事件过程]”,单击“”,进入代码编写窗口,在以下三行代码中第一行和第三行为系统自动生成,输入第二行即可。 Private Sub Command25_Click() DoCmd.Requery ‘用户输入代码,表示重新查询数据 End Sub
4.5.2 数据透视图窗体 【例4.5】“各学院用户分布”窗体 图4.43 图表向导一
图4.44 图表向导二
图4.45 图表向导三
图4.46 图表向导四
4.5.3 数据透视表窗体 【例4.6】“用户类型统计”窗体
4.6 多窗体创建 【例4.7】“借书查询”窗体 “借书查询”窗体运行视图见图4.10,设计视图见图4.50,该窗体事实上有两个窗体构成,主窗体显示用户信息,主窗体上嵌入一个子窗体,子窗体显示该用户的借书记录。
4.6.1 主窗体设计 主窗体设计同普通的数据管理窗体相同,“借书查询”窗体同“按用户号查找用户”窗体类似,创建过程如下: (1)使用“在设计视图中创建窗体”创建创建“借书查询”。 (2)添加一个文本框,名称为userid。 (3)创建如图4.51查询,名为“用户查询”。 (4)设置窗体的“记录源”属性值为“用户查询”。图4.51 数据源查询设计 (5)拖动记录源窗口中个字段到窗体上,适当调整各控件位置。 (6)使用非向导方式添加命令按钮“查询”(如出现向导窗口,按“取消”键)。 (7)“查询”按钮的事件设计 参照“按用户号查找用户”窗体的查询设计方法,需要读者添加的代码完全一致。
4.6.2 子窗体设计 在子窗体显示的用户所借图书资料包含在图书和借书两个表中,并且要求条件为未还图书。 (1)设计查询数据源
(2)使用向导创建数据管理窗体,在窗体创建向导中选择布局为“表格”,名为“借书列表”,创建好的设计视图如图4.53。 (3)复选框,在借书列表中使用复选框显示“是否已还”字段(该字段类型为“是/否”),对于复选框的使用和其他控件同样设置,产生一个复选框后,设置其控件来源就可以将复选框和对应字段绑定,但字段类型要为“是/否”类型
4.6.3 在主窗体上添加子窗体 (1)打开“借书查询”窗体设计视图,单击工具箱上的“ ”子窗体控件,然后单击“借书查询”窗体,出现子窗体创建向导,如图4.54。
(2)子窗体要和主窗体数据进行同步显示,因此要选择两窗体数据间的同步设置条件,见图4 (2)子窗体要和主窗体数据进行同步显示,因此要选择两窗体数据间的同步设置条件,见图4.55,经分析,主窗体数据源和子窗体数据源都具有“用户号”字段,因此选择“用户号”作为两个窗体数据源的联接条件。