1、11. 数据库基础知识1.1 数据库的发展: 数据库技术 的主要目的是能 有效地管理和存取大量的数据资源 数据管理技术 经历了 人工管理阶段、文件系统和数据库系统、分布式数据库系统、面向对象数据库系统 5 个发展阶段。1.2 数据库系统基本概念: 数据库 DB:存储在计算机存储设备、结构化相关数据的集合。它不仅包括描述 事物本身 ,而且包括 相关事物之间的关系 。 数据库管理系统 DBMS:是数据库的机构,是一种系统软件,负责数据库中的数据组织、数据操纵、控制及保护和数据服务等。 DBMS 是位于用户与操作系统之间的数据库管理系统,是属于OS 支持下的系统文件。 DBMS 的组成包括 1 数据
2、定义语言及其翻译处理程序 2 数据操纵语言及其编译(解释)程序 3 数据库运行控制程序 4 实用程序 DBMS 六个功能。1 数据模式定义 2 数据存取的物理建构 3 数据操纵 :包括对数据库数据的 检索、插入、修改和删除 等基本操作。4 数据的完整性、安全性定义与检查 5 数据库中的并发控制与故障修复 6 数据的服务。 DBMS 三种数据语言:1 数据定义语言 DDL 负责数据模式定义与数据物理存取构建 2 数据操纵语言 DML 负责数据的操纵,如查询与增、删、改等 3 数据控制语言 DCL 负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等 数据库系统 DBS:由 5 部分组成:
3、硬件系统、数据库、数据库管理系统及相关软件、数据库管理员和用户 。其中数据库管理员可以管理数据库应用系统、数据库管理系统、操作系统。 DBS 特点: 1 共享度高,数据冗余度小 2 采用特点的数据模型3 具有较高的数据独立性 4 有统一的数据控制功能 DBS 三级模式:1 概念模式。 是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。2 外模式。 也称子模式或用户模式。它是用户的数据视图,也就是用户所见到的数据模式,由概念模式推导而出。3 内模式。 又称物理模式。给出了数据库物理存储结构与物理存储方法。1.3 数据模型基本概念: 数据模型:其不仅表示反映事物本身的数据,而且表示 相
4、关事物之间的联系 。数据模型所表示的内容有三个部分, 数据结构、数据操作与数据约束 。 在 ER 图中用 矩形表示实体 , 椭圆形表示属性 , 菱形表示联系 。 实体 。客观存在并相互区别的事物称为实体。 属性 。描述实体的特性称为属性。 联系 。现实世界中事物间的关联称为联系。实体集 。同类型的实体的集合。 实体型 。属性值的集合表实体,而属性的集合表实体的类型。1.4 关系数据库基本概念: 关系 :一个关系就是一张二维表,每个表都有一个关系名。在 Access 中,一个关系存储为一张表,具有一个表名。 元组 :在一个二维表中,水平方向的行称为元祖。元祖对应表中的具体 记录 。 属性 :二维
5、表中垂直方向的列。每一列有一个属性名。在 Access 中表示为 字段 名。每个字段的数据类型、宽度等在创建表的结构时规定。 数据项 :也称为分量,是每个记录中的一个字段的值 域 :属性的取值范围。 关键字 :其值能够唯一标识一个元祖的属性或属性的组合。在 Access 中表示为字段或字段的集合。 外部关键字 :如果表中的一个字段不是本表的主关键字,而是另一个表的主关键字和候选关键字,这字段就称为外关键字。 关系数据模型 :用 二维表 结构来表示实体以及实体之间联系的模型。数据模型所表示的内容有三个部分, 数据结构、数据操作与数据约束 数据关系操作:数据查询、数据删除、数据插入、数据修改 数据
6、约束:1 实体完整性 约束:该约束要求主键中属性不能为空值。2 参照完整性 约束:是关系之间相关联的约束,不允许关系引用不存在的元组。3 用户定义完整性 约束:针对具体数据环境与应用环境由用户具体设置的约束,反应了具体应用中数据的语义要求。1.5 关系运算基本概念:1 选择 运算:从关系中找出满足给定条件的元祖的操作 2 投影 运算 :从关系模式中指定若干属性组成新的关系 3 连接 运算:连接是关系的横向结合,连接运算将两个关系模式拼接成一个更宽的关系模式,生产新关系中包含满足连接条件的元祖 4 自然连接 :在连接运算中,按照字段值对应相等为条件进行的连接操作为等值连接,自然连接时 去掉重复属
7、性的等值连接1.6 数据库设计基础 设计原则 1 关系数据库的设计应遵从概念单一化“一事一地”原则 2 避免在表之间出现重复字段 3 表中的字段必须是原始数据和基本数据元素 4 用外部关键字保证有关联的表之间的联系 设计步骤 1 需求分析。 (信息需求、处理要求、安全性和完整性要求)2 确定需要的表。 (每个表只包含一个关于主题的信息;表中不应该包含重复信息,且信息不应该在表之间复制)3 确定所需字段。 (每个字段直接和表的实体相关;以最小的逻辑单位存储信息;表中字段必须是原始数据;确定主关键字字段)4 确定关系 5 设计求精 数据库设计采用生命周期法: 需求分析阶段、概念设计阶段、逻辑设计阶
8、段、物理设计阶段、编码阶段、测试阶段、运行阶段 。1.7Access 系统简介: (1)Access 不仅能处理 Access 格式的数据库,也能对诸如DBASE、FOXBASE、Btrieve 等格式的数据库进行访问(2)Access采用 OLE 技术,能够方便地创建和编辑多媒体数据库,包括文本、声音、图像和视频等对象(3)Access 支持 ODBC 标准的 SQL 数据库的数据(4)可以采用 VBA(Visual Basic Application)编写数据库应用程序 数据库的设计一般要经过 1 分析建立数据库的目的 2 确定数据库中的表 3 确定表中的字段 4 确定主关键字 5 确定表
9、之间的关系 Access 数据库的结构层次是: 数据库、数据表、记录、字段 。定义为一个扩展名 .mdb 文件,7 种基本对象:表,查询,窗体,报表,页,宏,模块。 表 Access 允许一个数据库中有多个表。 查询 查询时数据库设计目的的体现,其结果是静态的。 窗体 是数据库和用户联系的界面,利用窗体输入界面。 报表 打印输出数据,创建计算字段,对记录分组。 页 直接与数据库中数据相连,进行查看、编辑、更新、删除、筛选、分组以及排序。 宏 一系列操作的集合。 模块 建立复杂的 VBA 程序。 关闭 Access:Alt+F4或Alt+F+X2. 数据库和表的基本操作2.1 创建数据库: 创建
10、空数据库。 使用向导创建数据库。2.2 表的建立: 表的组成包括 字段 和 记录 。 Access 表由 表结构 和 表内容 两部分构成。 表的结构:指数据表的框架,主要包括 表名 和 字段属性 。1 表名:是该表存储在磁盘上(用户访问数据)的唯一标识 2 字段属性:即表的组织形式,包括表中字段的个数,每个字段的名称、数据类型、字段大小、格式、输入掩码、有效性规则。 字段命名规则:长度 1 至 64 个字符,不能以空格开头,不包.! 数据类型:10 种。1 文本 。文本型字段可以保存文本或文本与数字的组合。2 备注 。可保存较长的文本。3 数字 4 日期/时间 5货币 6 自动编号 7 是/否
11、 8OLE 对象 表中字段的数据类型 OLE 对象是指字段允许单独的“链接“或“嵌入“OLE 对象。可以链接或嵌入表中的 OLE 对象是指在其它使用 OLE 协议程序创建的对象。例如2Word 文档、Excel 电子表格、图像、声音或其它二进制数据。9超级链接 10 查阅向导 建立表结构:1 使用向导 2 使用表设计器 。在 Access 数据库的表设计器中可以修改字段类型、设置索引和增加字段。要想删除表中的记录,需要打开表进行删除。3 使用数据表 4 定义主键 。主键,也称主关键字,是表中能够唯一标识记录的一个字段或多个字段的组合。在 Access 中,可定义 3 种类型主键,即自动编号,单
12、字段,多字段 设置字段属性。1 字段大小 2 格式 3 输入掩码 :输入掩码用来指定输入到字段中值的范围。 0 必须输入数字。 9 可以选择输入数据或空格。 #可以选择输入数据或空格。 L 必须输入字母。 ? 可以选择输入字母(AZ)。 A 必须输入字母或数字。 a 可以选择输入字母或数字。 &必须输入一个任意的字符或一个空格。 C 可以选择输入任何的字符或一个空格。 所有字符转化成大写。Access 只为 “文本” 和 “日期/时间” 型字段提供输入掩码向导 4 默认值 :是指当用户没有为字段输入值时,系统将自动为其赋予一个事先设定的值。5 有效性规则 :用来判断输入的值是否符合设置的逻辑条
13、件。6 有效性文本 7 索引 。索引时非常重要的属性,能根据键值加速在表中查找和排序的速度,并且能对表中的记录实施唯一性。同一个表可以创建多个唯一索引,其中一个可设置为主索引,且一个表只有一个主索引。 输入数据:直接输入数据,获取外部数据。 表间关系的建立与修改。 表间关系的概念:一对一,一对多。 建立表间关系。在 Access 中,每个表都是数据库独立的一个部分,但每个表又不是完全孤立的,表与表之间是通过一个共同字段 联系在一起的。 设置参照完整性。 参照完整性 是一个规则系统,Microsoft Access 使用这个系统用来确保相关表中记录之间关系的有效性,并且不会意外地删除、插入或更改
14、相关数据。2.3 表的维护。 修改表结构:添加字段,修改字段,删除字段,重新设置主关键字。 编辑表内容:定位记录,选择记录,添中记录,修改记录,删除记录,复制记录。 调整表外观。1 改变字段显示次序 2 调整行显示高度 3 调整列显示宽度 4 隐藏不需要的列 5 显示隐藏的列 6 冻结列 7 设置数据表格式 8 改变字体。在数据表中,设置字体格式都是对整个数据表,不能单独设置某个或某几个字段的格式2.4 表的其他操作。查找数据。替换数据。排序记录。筛选记录。3. 查询的基本操作3.1 查询的功能: 1 选择字段 2 选择记录 3 编辑记录。在查询中,编辑记录主要包括添加记录、修改记录、删除记录
15、 4 实现计算。在查询中,查询不仅可以找到满足条件的记录,而且还可以在建立查询的过程中进行各种统计计算 5 建立新表 6 为窗体、报表或页提供数据3.2 查询分类: 选择查询 是根据用户指定的查询的准则,从一个或多个表中获取数据并显示结果,但不能追加数据。在查询中,选择查询可以只选择表中的部分字段,通过选择一个表中的不同字段生成 多个表 。也可以使用选择查询对记录进行分组,并且对记录进行总结、计数、平均以及其他类型的计算。 参数查询 是一种利用对话框来提示用户输入准则的查询 交叉表查询 在创建交叉表查询时,需要指定 3 种字段:一是放在交叉表最左端的 行标题 ,它将某一字段的相关数据放入指定的
16、行中;二是放在交叉表最上面的 列字段 ,它将某一字段的相关数据放入指定的列中;三是放在交叉表行与列交叉位置上的字段,需要为该字段指定一个总计项,如总计、平均值、计数等。在交叉表查询中,只能指定一个列字段和一个总计类型的字段。 操作查询 有四种 1 生成表查询 是根据查询结果生成一张新表。2 删除查询 3 更新查询 是将原来的旧值用新值替换,因此不能保持原数据不变。操作查询与选择查询相似,但不同的是操作查询是在一次查询操作中对所得的结果进行编辑等操作。4 追加查询 SQL 查询 包括四种 1 联合查询 2 传递查询 直接将命令发送ODBC 数据,它使用服务器能接受的命令,利用它可以检索或更改记录
17、 3 数据定义查询 4 子查询 如果一个查询的数据源仍是查询,而不是表,则该查询称为子查询 SQL 查询就是用户用 SQL 语句来创建的一种查询。 ACCESS 的所有查询都可以认为是一个 SQL 查询 ,因为 ACCESS查询就是以 SQL 语句为基础来实现查询功能的 SELECT 语句。 WHERE 子句 说明检索条件,条件表达式可以是关系表达式,也可以是逻辑表达式。 ORDER BY 子句 可以根据一个列或者多个列来 排序查询结果 ,在该子句中,既可以使用列名,也可以使用相对列号。 GROUP BY 子句 用于对检索结果进行分组。3.3 查询准则:1 运算符。 Between 用于指定一
18、个字段值的范围,指定的范围之间用 And 连接。 IN 用于指定一个字段值的列表,列表中的任一值都可与查询的字段相匹配。 Is Null 用于指定一个字段为空。 Is Not Null 用于指定一个字段为非空。2 函数。3 表达式 ? 是通配任意单个字符 *通配任意字符和字符串 通配 内的任意单个字符 #通配任意单个数字。 Like 用于指定查找文本字段的字符模式3.4 创建查询:查询可以根据 已建查询和数据表查询 创建查询。查询的视图包括 设计、数据表和 SQL 视图、数据透视表视图、数据透视图视图 使用向导创建查询。 使用设计视图创建查询。在查询设计视图中既可以添加数据库表也可以添加查询。
19、 在查询中计算。查询中的两种基本运算时 预定义计算和自定义计算1.5 操作已创建的查询:1 运行已创建查询 2 编辑查询中的字段 3编辑查询中的数据源 4 排序查询的结果4. 窗体的基本操作4.1 认识窗体: 窗体是 Access 数据库应用中一个非常重要的工具,可以 用于显示表和查询中的数据,并输入数据、编辑数据和修改数据 。 窗体有多个部分组成,每个部分称为一个“ 节 ”,大部分窗体只有 主体节 。4.2 窗体分类:1 纵栏式窗体 将窗体的一个显示记录按列分隔,每列的左边显示字段名,右边显示字段内容 2 表格式窗体 在一个窗体中显示多条记录的内容 3 主/子窗体 通常用于显示多个表或查询中
20、的结果 4 数据表窗体 在外观上跟数据表和查询数据的界面相同5 图表窗体 6 数据透视表窗体4.3 窗体视图:1 设计视图 2 窗体视图 3 数据表视图 4 数据透视表5 数据透视图4.4 创建窗体:1 使用向导创建窗体 2 使用设计器创建窗体 创建窗体可以使用 人工 和使用 向导 两种方式4.5 设计窗体:1 设计户视图组成:窗体设计视图是设计窗体的窗口,它由 5 个节组成,分别是主题、窗体页眉、页面页眉、页面页脚和窗体页脚。在默认情况下,窗体“设计“视图只显示主体节。2 工具栏 3工具箱 4 字段列表 在窗体“设计“视图中,窗体和控件的属性都可以在“属性“对话框中设定。4.6 控件4.6.
21、1 控件的含义及种类控件 是窗体上用于 显示数据、执行数据、装饰窗体 的对象 窗体控件类型分为 绑定型、未绑定型与计算型 3 种。 绑定型控件主要用于显示、输入、更新数据库中的字段; 未绑定型控件没有 数据源 ,可以用来显示信息; 计算型控件 用表达式作为数据源,表达式可以利用窗体或报表索引用的表或查询字段中的数据,也可以是窗体或报表上的其它控件中的数据。 1 标签控件:主要用来在窗体或报表上显示说明性文本 2 文本框控件 :主要用来输入或编辑字段数据 3 复选框、切换按钮、选项按钮控件3 4 选项组控件 :是选择列表工具 1 如果选项组结合到某个字段,则只有组框架本身结合到此字段,而不是组框
22、架的复选框、选项按钮或切换按钮 2 选项组可以设置为表达式或非结合选项组,也可以在自定义对话框中使用非结合选项组来接受用户的输入, 可以根据输入的内容来执行相应的操作 3 选项组是由一个组框、一个复选框、选项按钮或切换按钮组成 5 列表框或组合框控件 :在窗体中输入的数据总是取自于查询或取自某固定内容的数据,或者某一个表中记录的数据,可以使用列表框或组合框控件。使用组合框既可以选择又可以输入文本,这是和列表框最大的不同,组合框的应用比列表框的应用要广泛。 6 命令按钮控件 7 选项卡控件 :是分页工具 8 图像控件4.6.2 在窗体中添加和修改控件4.6.3 窗体和控件属性 1 格式属性: 主
23、要针对控件的外观或窗体显示格式设置的属性。2 数据属性: 控件数据属性:控件来源、输入掩码、有效性规则、有效性文本、默认值、是否有效、是否锁定。窗体数据属性:记录源、排序依据、允许编辑、数据入口。3 事件属性 4 其他属性5 全部属性 在窗体属性中,要使窗体中没有记录选定器,必须把“记录选定器“的属性值设置为 否 窗体“属性“对话框中“控件来源“属性可以设置文本框的数据源 控件不可见属性是:控件名称visible false 名称行属性是是唯一能够标识某一控件的属性5. 报表的基本操作5.1 报表的概念 报表的 数据来源 与窗体相同,可以是已有的 数据表、查询或者是新建的 SQL 语句 ,但报
24、表只能查看数据,不能通过 报表修改或输入数据 。Access 报表对象的数据源可以设置为 表名或查询名 。 报表有三种视图。 设计视图 ,用于创建和编辑报表的结构。打印预览视图 ,用于查看报表的页面数据输出形态。 版面预览视图 ,用于查看报表的版面设置。 报表设计区:报表页眉节、页面页眉节、组页眉节、主体节、组页脚节、页面页脚节、报表页脚节5.2 报表分类:1 纵栏式报表 2 表格式报表 3 图表报表 4 标签报表。5.3 创建报表:1 使用向导创建报表 2 使用设计视图创建报表 “自动创建报表”向导分为 自动创建报表:纵栏式 和 自动创建报表:表格式 两种 报表设计时分页符以 短虚线 标志显
25、示在报表的左边界上5.4 编辑报表:1 设置报表格式 2 添加背景图案 3 添加日期和时间4 添加分页符和页码: =”第”&Page&”页/总”&Pages&”页”5 使用节 6 绘制线条和矩形:要设计出带表格的报表,需要向报表中添加 直线或矩形 完成表格线的显示。5.5 报表排序与分组:默认情况下,报表记录是按照 自然顺序 排列的。要实现排序与分组的统计操作,通过设置 排序与分组属性进行。5.6 使用计算控件:报表设计中页码的输出、分组统计数据的输出等均是通过设置绑定控件的控件源为计算表达式形式而实现的,这些控件就称为 计算控件 。 文本框 是最常用的计算控件。计算控件的 来源属性 一般设置
26、为 等号 开头的计算表达式。5.7 创建子报表:一个主报表最多只能包含 两级 子窗体或子报表6. 页的基本操作6.1 数据访问页的概念:有两种视图方式: 页视图和设计视图 Access 中数据访问页的作用是 发布数据库中的数据 在数据访问页的工具箱中,图标的名称是 图像链接6.2 创建数据访问页:1 自动创建数据访问页 2 使用向导数据访问页滚动字体图标 记录浏览图标 展开/收缩图标 添加命令按钮图标7. 宏7.1 宏的基本概念:1 宏是由一个或多个操作组成的集合,其中每个操作都能自动执行,并实现特定的功能。2 宏可以在“宏“窗口、“数据库“窗口、菜单中单独运行,也可以运行宏组中的宏或另一个宏
27、,还可以为响应窗体、报表上的控件上所发生的事件而运行宏。3 通过定义宏可以选择或更新数据。4 宏可以是窗体或报表上的事件代码。5 宏并不能单独执行,必须有一个触发器,而这个触发器通常是由窗体、页及其上面的控件的各种事件来担任的7.2 宏的基本操作:多个操作构成的宏,执行时按 排列顺序 依次执行 创建一个宏:创建宏时至少要定义一个宏操作,并要设置对应的 宏操作参数 。在宏的设计窗口中,可以隐藏的是 宏名和条件 。打开可以添加宏的名词,关闭也可以添加宏的名词。命名为AutoExec 的宏在打开数据时会自动运行 创建宏组:调用宏组中宏的格式为: 宏组名.宏名 在宏中使用条件。对于重复条件,可用 符号
28、来代替重复条件式8. 模块8.1 模块的基本概念:模块是 Access 中一个重要对象,它以VBA(Visual Basic for Applications)为基础编写,以函数过程(Function)或子过程(Sub)为单元的集合方式存储。模块分类模块和标准模块两种。 类模块:窗体模块和报表模块都属于类模块,它们从属于各自的窗体或报表 标准模块:用于存放公其他 Access 数据库对象使用的公共过程 将宏转换为模块:实际上,所有宏操作都能转换为相应的模块代码,它可以通过 另存为模块 来完成。8.2 创建模块:过程是模块的组成单元,过程分两种类型: Sub 子过程 Function 函数过程
29、在模块中加入过程。VBA 提供一个关键字 Call,可显示调用一个子过程 Sub。函数过程不能用 Call 来调用执行,需要直接引用函数的过程名,并由接在函数过程名后的括号所辨别。 在模块中执行宏。8.3 VBA 程序设计基础:8.3.1 面向对象程序设计的基本概念8.5.2 VBA 编程环境:窗口主要由标准工具栏、工程窗口、代码窗口、属性窗口、立即窗口。立即窗口时用来进行快速表达计算、简单方法操作及进行程序测试的工作窗口。8.5.3 数据类型和数据库对象 标准数据类型。整数 Integer 长整数 Long 单精度数 Single 双精度数 Double 货币 Currency 字符串 St
30、ring 布尔型 Boolean 日期型 Date 变体类型 Variant 用户定义的数据类型可以用 TypeEnd Type 关键字间说明 Dim,Public,StaticAs 定义用户类型变量 数据库对象:数据库 Database 连接 Connection 窗体 Form 报表 Report 控件 Control 查询 QueryDef 表 TableDef 命令 Command8.5.4 常量,变量:局部范围 Dim, StaticAs 模块范围 Dim, Public, PravateAs 全局范围 PublicAs。要在过程的运行时保留局部变量,可以用 Static 关键字代替
31、 Dim 定义静态变量 NewArray()AS Integer 从 0 开始的数组 Const 符号常量名称=常量值8.6 VBA 控制流程语句 执行语句可以分三种结构。 顺序结构 :按照语句顺序顺次执行。分支结构 :又称选择结构,根据 条件 选择执行路径。 循环结构 :重复执行某一段语句。 赋值语句。Let变量名=值或表达式 Let 为可选项 条件语句。If-Then 语句If-Then-Else 语句If-Then-4ElseIf 语句Select Case-End Select 语句条件函数。IIf 函数:IIf(条件式,表达式 1,表达式 2);Switch 函数:Switch(条件
32、式 1,表达式 1,条件式 2,表达式 2,条件式 n,表达式 n);Choose 函数:Choose(索引式,选项 1选项2,选项 n) 循环语句。For-NextDo While-LoopDo Until-LoopDo-Loop WhileDo-Loop UntilWhile-Wend 标号和 GoTo 语句8.7 过程调用和参数传递 过程调用 参数传递。varname 必须的,形参名称。type 可选项,传递给该过程的参数的数据类型。Optional 可选项,表示参数不是必需。ByVal 可选项,表示参数按值传递,传值调用。 ByRef 可选项,表示参数按地址传递。ParamArray
33、可选项,只用于形参的最后一个参数。8.8 VBA 程序错误处理:“On Error GoTo 标号”语句在遇到错误发生程序转移到标号所指位置代码执行。 “On Error Rseume Next”语句在遇到错误时不会考虑错误。 “On Error GoTo 0”关闭错误处理。8.9 VBA 程序的调试:设置断点,单步跟踪,设置监视点。常用函数算数函数Abs() 绝对值Int()Fix()Round(,)取整Rnd()Int(100*Rnd+1) 1 至 100 随机数 随机数文本函数Left(,)Right(,)Mid(,)字符串截取Len() 字符串长度Instr(,) 字符串检索日期/时间函数Date( )Time( )Now( )返回系统当前日期或时间转换函数Asc() 字符串转换字符代码Chr() 字符代码转换字符Str() 数字转换成字符串Val() 字符转换数字消息函数IuptutBox(提示,标题,默认) 利用提示框输入MsgBox(提示,按钮、图标和默认按钮,标题) 提示框常用的宏操作命令OpenForm 基本操作的功能是打开 窗体OpenTable 打开表SetValue 为窗体或报表上的控件设置属性值Close 如果不指定对象,其基本操作关闭的是当前 窗体常用事件Enter 进入,发生在控件实际接收焦点之前