第 3 章 数据库和表

79
第3第 第第第第第 第第第第第第 第第第第第第第第第第第第 第第第 第第第 第第第 ,、、, 第第第第 第第第第第第第 第 ,。 VFP 6.0 第 第第第第第第第第第第第第第 第第第第第 第第第第第 第第第第第第第第第第第第第第第第第第第第 ,体

Upload: teagan-powers

Post on 15-Mar-2016

90 views

Category:

Documents


7 download

DESCRIPTION

第 3 章 数据库和表. 面对海量数据,如何高效地对其进行收集、组织、处理,并加以充分利用,显得尤为重要。在 VFP 6.0 中,数据是以数据库和表的形式存放和管理的,本章将具体介绍数据库和表的有关概念及相应的操作方法. 本章主要内容. 数据库与表的概念 表的建立 表的基本操作 创建数据库 表的高级操作. 3.1 数据库与表的概念. 表又称为数据表或表文件,是 VFP 6.0 系统中最基本的文件,其作用是存储数据。 在关系数据库中,描述数据及其相互联系的基本模型是关系,一个关系就是一个二维表。表 3-1 是一个描述某学校教师基本情况的二维表。. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 3 章  数据库和表

第 3 章 数据库和表 面对海量数据,如何高效地对其进行收集、组织、处理,并加以充分利用,显得尤为重要。在 VFP 6.0 中,数据是以数据库和表的形式存放和管理的,本章将具体介绍数据库和表的有关概念及相应的操作方法

Page 2: 第 3 章  数据库和表

本章主要内容 数据库与表的概念 表的建立 表的基本操作 创建数据库 表的高级操作

Page 3: 第 3 章  数据库和表

3.1 数据库与表的概念 表又称为数据表或表文件,是 VFP 6.0系统中最基本的文件,其作用是存储数据。 在关系数据库中,描述数据及其相互联系的基本模型是关系,一个关系就是一个二维表。表 3-1 是一个描述某学校教师基本情况的二维表。

Page 4: 第 3 章  数据库和表

表 3-1 教师基本情况表教师编号 姓名 性别 出生日期 婚否 工龄 职称 类别 部门1105 张一天 男 08/26/58 T 20 教授 专职 计科系1201 王小明 男 04/17/70 T 7 助教 兼职 师教室1125 王芳 女 12/19/65 T 16 讲师 专职 计科系0301 齐新强 男 04/10/73 F 3 助教 兼职 组织部0820 张英迎 女 03/12/77 F 2 助教 专职 物理系1124 吴慧敏 女 02/06/76 T 5 讲师 专职 计科系1106 贾文虎 男 12/04/70 T 6 讲师 专职 计科系1101 张宏 男 12/05/54 T 25 副教授 专职 计科系

Page 5: 第 3 章  数据库和表

表与数据库的关系 数据库可以视为一个表的容器,它并不直接存放数据,而是存放表文件。数据库文件的扩展名为 .dbc 。 表文件可以包含在一个数据库中,这时,称该表为数据库表;如果一个表文件不包含在任何数据库中,则称该表为自由表。 自由表与数据库表是可以相互转化的,当用户把一个自由表放入数据库时,自由表就变成了一个数据库表;如把一个数据库表从数据库中移出,该数据库表就又变成了自由表。 一个表只能从属于一个数据库,如要将某数据库表加入其他数据库,应首先将其变为自由表,然后再将其加入其他数据库中。

Page 6: 第 3 章  数据库和表

3.2 表的建立 自由表的建立

在 VFP 6.0 中,一个表文件包括表结构及数据记录两个部分。在建立表文件时,先根据需要建立表结构,然后再向文件中输入数据记录内容。 在建立数据表以前,要先对数据表进行规划。基本步骤

确定数据表需要的字段个数和名称。 确定每一个字段的数据类型 确定字段的数据长度

Page 7: 第 3 章  数据库和表

创建表的方法 用表设计器创建表 用表向导创建表

Page 8: 第 3 章  数据库和表

3.2.1 用表设计器创建表 启动表设计器

菜单方式、命令方式 (create < 表名 >)

Page 9: 第 3 章  数据库和表

3.2.2  用表向导创建表 ⑴ 启动表向导 选择“文件→新建”,在“文件类型”栏中选择“表”,单击“向导”按钮,进入表向导设计“步骤1— 字段选择”,如图 3-2 所示。 ⑵ 在“步骤 1— 字段选择”窗口中,用户要确定将要创建的表中包含几个字段。系统在“样表”框提供了一系列的样表,我们可以选择这些表中的字段做为要创建的表的字段,这样做可以继承这些字段在原表中的属性,从而省略或减少对它们属性的设置。

Page 10: 第 3 章  数据库和表

选择字段

Page 11: 第 3 章  数据库和表

修改字段设置编辑字段属性

Page 12: 第 3 章  数据库和表

3.3 表的基本操作 本节介绍主要内容 3.3.1  表的打开与关闭 3.3.2  修改表结构 3.3.3  表记录的录入 3.3.4  表记录的显示与修改 3.3.5  记录的定位、插入、修改与删除

Page 13: 第 3 章  数据库和表

3.3.1  表的打开与关闭 1. 打开表

创建了一个表后,它就以文件的形式存储在磁盘上,我们可以随时对它进行操作。在对表进行各种操作以前,必须首先打开表,以便系统为表的操作做好准备。当新建一个表时,该表处于打开状态。

Page 14: 第 3 章  数据库和表

几种打开方式 用菜单或工具栏打开表 使用命令打开表

命令格式: USE < 表文件名 > VFP6.0 中,一个工作区只允许打开一个表,当打开一个新表时,其他表自动关闭。

Page 15: 第 3 章  数据库和表

2. 关闭表 对表的操作结束后,应该把表关闭,这样可以防止表中数据的丢失,保护表内数据的安全。 USE && 关闭当前工作区的表文件。 CLOSE DATABASES

&& 关闭当前数据库及其表文件。 CLOSE ALL

关闭所有数据库及其表文件、所有自由表文件、所有索引和格式文件。

Page 16: 第 3 章  数据库和表

3.3.2 修改表结构 表结构创建后,还可根据需要对其修改。通常用表设计器修改。 使用菜单命令或工具栏打开表设计器 命令格式

MODIFY STRUCTUR 修改表结构

Page 17: 第 3 章  数据库和表

修改表结构 通过表设计器修改表结构可以实现下列操作:

字段的追加 字段的插入 删除字段 改变字段顺序 修改字段内容

在表结构修改后,原始数据被保存为一个备份文件,需要时,可以利用它恢复原数据表。

Page 18: 第 3 章  数据库和表

注意事项: 修改表结构可能会造成原表数据丢失。 在表结构修改前,应将原始数据保存为一个备份文件,需要时,可以利用它恢复原数据表。

Page 19: 第 3 章  数据库和表

3.3.3 表记录的录入 表记录可以在创建表结构时立即录入,也可在需要时向表内追加。 1. 在创建表时录入记录

如果是采用表设计器创建表,在完成表结构的设计,退出表设计器时,系统会给出提示信息,询问是否输入记录数据,如果回答“是”,此时可以用全屏幕编辑的方式追加或修改记录。

Page 20: 第 3 章  数据库和表

全屏幕编辑的方式追加记录

Page 21: 第 3 章  数据库和表

2. 用命令追加记录 在对表进行操作时,要向表中追加更多的记录,可以采用追加方式录入记录。 追加记录命令为: APPEND [BLANK] 该命令的功能是打开记录编辑窗口,在表尾部添加记录;若选用 BLANK参数,则表示在当前表的尾部添加一个空记录,以后可以在空记录中填写内容。

Page 22: 第 3 章  数据库和表

3. 从其他表中追加记录 命令格式: APPEND FROM < 源表名 > [FIELDS <字段名表 >] [FOR < 条件 >] 该命令能够将满足给定条件的记录,从源表追加到当前表的表尾。 P58 【例 3.5 】

Page 23: 第 3 章  数据库和表

3.3.4 表记录的显示与修改 1. 显示表结构 显示表结构可以通过命令方式来实现,命令格式为: LIST STRUCTURE DISPLAY STRUCTURE 区别:

LIST STRUCTURE 为连续显示; DISPLAY STRUCTURE 为分屏显示。

Page 24: 第 3 章  数据库和表

显示表记录命令 LIST [< 范围 >] [< 字段名表 >] [FOR< 条件 >] [WHILE< 条件 >] [OFF] DISPLAY [< 范围 >] [< 字段名表 >] [FOR< 条件 >] [WHILE< 条件 >] [OFF]

Page 25: 第 3 章  数据库和表

【例 3.7 】在系统工作区显示“教师简况 .DBF” 中所有男教师记录的“姓名”和“出生日期”。命令序列为: use 教师简况 list 姓名 , 出生日期 for 性别 =“ 男”

Page 26: 第 3 章  数据库和表

3. 表的浏览与编辑 窗口的两种显示模式

浏览 编辑 浏览窗口中的过滤显示

选择“数据工作区” --- 属性命令,在“工作区属性”窗口中设置。 单击“关闭”按钮,或关闭表文件,重新打开表文件,原来的过滤显示失效。

Page 27: 第 3 章  数据库和表

⑹ 表浏览和编辑的命令 BROWSE [FIELDS < 字段表 >] [FOR < 条件 >] [FONT < 字体 [ ,大小 ]>] [STYLE < 字形 >] [FREEZE < 字段名 >] [PARTITION < 数值表达式>] [NOLINK] [NOAPPEND] [NODELETE] [WIDTH < 数值表达式 >] EDIT [FIELDS < 字段表 >] [FOR < 条件 >] [FONT < 字体 [ ,大小 ]>] [STYLE < 字形 >] [FREEZE < 字段名 >] [PARTITION < 数值表达式 >] [NOLINK] [NOAPPEND] [NODELETE] [WIDTH < 数值表达式 >]

Page 28: 第 3 章  数据库和表

示例 Use 教师简况 BROWSE FIELDS 姓名 , 性别 , 职称 FOR 性别 =' 男 ' FONT ' 隶书 ',20 STYLE 'BIU'

Page 29: 第 3 章  数据库和表

3.3.5 记录的定位、插入、修改与删除 1. 记录指针的定位 VFP 6.0 为每个记录都顺序指定了“记录号”,第一个记录的记录号为 1 。当对某一个记录进行操作时,该记录被称为当前记录,在状态栏中显示了表中的记录数和当前的记录号,记录指针总是指向当前记录。 对某一记录进行操作,需要移动记录指针,使其指向该记录。在 VFP 6.0 中,可以通过多种方法移动记录指针。

Page 30: 第 3 章  数据库和表

移动记录指针的方法 用光标键或鼠标 用菜单命令

当前工作区有表文件打开时,才能使用 使用命令

GO TOP GO n GO BOTTOM SKIP n && 相对移动记录

Page 31: 第 3 章  数据库和表

记录的定位 LOCATE [< 范围 >] [FOR< 条件 >] [WHILE< 条件 >] CONTINUE LOCATE 命令将记录指针定位在规定范围内符合条件的第一个记录; CONTINUE 使指针指向下一个满足条件的记录。可以连续用 CONTINUE依次将记录指针指向下一个符合条件的记录,直至规定范围的尾部。但要注意, CONTINUE 必须配合 LOCATE 使用,不能单独使用。

Page 32: 第 3 章  数据库和表

【例 3.13 】 在“教师简况”中,查找前两个 1963 年后出生教师的姓名、性别和出生日期。 use 教师简况 locate for 出生日期 >={^1963-01-01} display

Page 33: 第 3 章  数据库和表

2. 插入记录 命令格式: INSERT [BEFORE] [BLANK]

⑴ 该命令启动编辑界面插入一个记录; ⑵ 若选用 BEFORE参数,在当前记录之前插入;否则,在当前记录之后插入; ⑶ 若选用 BLANK参数,则不启动编辑界面,系统自动在指定位置插入一个空记录。

Page 34: 第 3 章  数据库和表

3. 删除记录 在 VFP6.0 中,记录删除有逻辑删除和物理删除。逻辑删除是指系统只给被删记录加上删除标记,在需要的时候,已逻辑删除的记录可以恢复;物理删除是指系统把记录从存储媒体上彻底清除,物理删除的记录不能再被恢复。 记录删除可通过图形交互方式和命令方式来实现。

Page 35: 第 3 章  数据库和表

命令方式 逻辑删除: DELETE [< 范围 >] [FOR< 条件 >] [WHILE< 条件>] 物理删除: PACK 恢复被逻辑删除的记录RECALL [< 范围 >] [FOR < 条件 >] [WHILE < 条件 >] 【例 3.16 】逻辑删除“教师简况”中生日在 1963 年后的记录,再恢复生日在 1980 年后的记录。 命令序列为: use 教师简况 delete for 生日 >={^1963-01-01} recall for 生日 >={^1980-01-01}

Page 36: 第 3 章  数据库和表

相关命令或函数 ZAP &&清空数据表中所有记录 DELETE() &&函数测试当前记录是否被 逻辑删除

Page 37: 第 3 章  数据库和表

4. 修改记录 REPLACE [< 范围 >] [< 字段名 1> WITH < 表达式 1>] [,< 字段名 2> WITH < 表达式 2>]… [FOR < 条件 >] [WHILE < 条件 >] 功能:该命令能用表达式的值替换对应字段的值。 说明: ⑴ 若范围和条件都缺省,则默认只对替换当前记录; ⑵ 表达式与对应字段的数据类型必须一致; ⑶ 当表达式的值超过字段宽度时,字符型截取前 n 个字符;数值型对小数部分四舍五入,若仍然超长则以 * 号表示溢出。

Page 38: 第 3 章  数据库和表

示例【例 3.17 】将“教师简况”中所有教师的工龄增加一年。命令序列为: use 教师简况 replace all 工龄 with 工龄 +1

Page 39: 第 3 章  数据库和表

3.4 创建数据库3.4.1  新建一个数据库3.4.2  数据表的修改和使用

Page 40: 第 3 章  数据库和表

3.4.1  新建一个数据库 利用新建窗口【例 3.18 】建立一个数据库,库名为“ ABC” 。操作步骤为:⑴ 选择“文件→新建”,进入新建窗口。⑵ 在“文件类型”栏中点选“数据库”,单击“新建文件”按钮,弹出“创建”窗口。⑶ 在“数据库名”栏中输入数据库名“ ABC” ,然后单击“保存”按钮。

Page 41: 第 3 章  数据库和表

新建数据库 使用“数据库向导”

选择“文件→新建”,弹出“新建”窗口。按提示操作。 使用命令

CREATE DATABASE < 数据库名 > CREATE DATABASE ABC && 建立数据库 abc

Page 42: 第 3 章  数据库和表

2. 数据库的打开 菜单方式 命令方式 OPEN DATABASE < 数据库名 > 若要打开数据库设计器,还需要使用命令: MODIFY DATABASE 在 VFP 6.0 中,可以同时打开多个数据库。指定当前数据库

SET DATABASE TO [< 数据库名 >]

Page 43: 第 3 章  数据库和表

3. 向数据库中添加数据表 数据库打开后,可以在库内建立新表,也可以把以前建立的自由表加入数据库使其成为数据库表。 方法:

打开数据库设计器,再添加表。

Page 44: 第 3 章  数据库和表

数据库设计器相关操作 打开数据库文件后,系统会新增加一个数据库菜单项,通过该菜单可以实现一些相关操作。

Page 45: 第 3 章  数据库和表

3.4.2  数据表的修改和使用 长表名及表的注释 字段标题与字段注释 字段级规则及默认值 设置记录级规则

Page 46: 第 3 章  数据库和表

3.5 表的高级操作 在 VFP 6.0 中,系统提供了从物理上和逻辑上两种重新组织记录顺序的方法。 从物理上重新组织记录顺序,即彻底改变记录在磁盘上的排列顺序,改变每个记录的记录号,这种操作称为排序。排序后系统生成一个新的表文件,新表以新的顺序排列,原来文件的顺序并不改变。 从逻辑上重新组织记录顺序,就是不改变记录在表中的实际存储顺序(即记录号),但在处理表记录时,按新的顺序进行,这就需要为表建立索引文件,使表处理按索引顺序进行。

Page 47: 第 3 章  数据库和表

3.5.1  表记录的排序与索引1 .表记录的排序 命令方式实现,命令格式为: SORT TO < 新表名 > ON < 关键字 1> [/A] [/C] [/D] [,< 关键字 2> [/A] [/C] [/D]…] [< 范围 >] [FOR < 条件 >] [WHILE < 条件 >] [FIELDS <字段名表 >]

Page 48: 第 3 章  数据库和表

说明⑴ 排序后生成一个新的表文件,其文件主名由命令中的“新表名”指定,扩展名为 .DBF 。命令执行后,当前工作区打开的仍然是原文件,新文件不会自动打开。⑵ /A 表示升序、 /D 表示降序,缺省时默认按升序排列。有 /C表示区分西文大小写,它可以与 /A 或 /D 结合使用,以 /AC或 /DC 表示。⑶ 命令中的“关键字”应该是表中存在的字段名,该字段应该是可以比较大小的数据类型。一条命令中可以有多个关键字,执行时,首先按第一关键字排序,当第一关键字值相同时,再依次按第二关键字排序,依此类推。⑷ 范围短语指定需要排序的记录范围,缺省时默认值为 ALL 。⑸ FOR短语和 WHILE 短语指定满足条件的记录参加排序。⑹ FIELDS 短语指定生成的新库中包含的字段。

Page 49: 第 3 章  数据库和表

示例【例 3.24 】对“教师简况”按工龄降序排序,排序结果放入表“教师简况 1” 中,显示排序结果。命令序列为: use 教师简况 sort to 教师简况 1 on 工龄 /D fields 编号 , 姓名 ,工龄 , 职称 use 教师简况 1 list

Page 50: 第 3 章  数据库和表

2. 表索引 ⑴ 三类索引文件

复合结构索引文件 --- 在表设计器中创建 非结构化复合索引文件—只能用命令创建 IDX 索引文件 —只能用命令创建

Page 51: 第 3 章  数据库和表

⑵ 索引分类 主索引 候选索引 普通索引 唯一索引

Page 52: 第 3 章  数据库和表

⑶ 创建索引 利用表设计器创建复合结构索引文件 使用 INDEX 命令 创建索引文件

INDEX ON < 索引关键字 > TO < 索引文件名 > [UNIQUE] INDEX ON < 索引关键字 > TAG < 索引名 > [OF < 非结构化索引文件名 >] [UNIQUE] [DESCENDING ]

[DESCENDING ] 表示降序,否则为升序。

Page 53: 第 3 章  数据库和表

示例【例 3.27 】在“学生成绩”表中,为结构化复合索引文件增加一个以“语文”为关键字的普通索引标签,把前例中创建的“姓名”索引标签改为唯一索引。命令序列为: use 学生成绩 index on 语文 tag 语文 index on 姓名 tag 姓名 unique

Page 54: 第 3 章  数据库和表

⑷ 使用索引① 打开索引 可以在打开表的同时打开索引文件:

USE < 表名 > INDEX < 索引文件名表 > [ASCENDING|DESCENDING] 也可以在表打开后再用命令打开索引文件:

SET INDEX TO < 索引文件名表 > [ASCENDING|DESCENDING]

Page 55: 第 3 章  数据库和表

② 关闭索引 SET INDEX TO CLOSE INDEX③ 改变主控索引顺序 SET ORDER TO <IDX 索引文件名 >|< 索引名 > [OF < 复合索引文件名 >] [ASCENDING|DESCENDING]④ 重新索引 REINDEX 例 3.30 】 ----- 【例 3.33 】

Page 56: 第 3 章  数据库和表

3.5.2  表记录的检索 数据检索是最常用的表操作之一 。如检索姓名为“赵应发”的记录、检索语文成绩为 90 的记录等。 记录指针定位,使用 LOCATE 命令,也叫顺序查找。速度慢。 索引查找(快速查找)

使用前,先打开索引文件。 FIND SEEK 命令。

Page 57: 第 3 章  数据库和表

1. FIND 命令 命令格式: FIND < 字符串 >|< 数字 >说明:⑴ 该命令执行时,表必须是索引过的,且主控索引的索引关键字类型与查找对象相匹配。⑵ 该命令搜索表中第一个符合条件的记录,该记录对应的索引关键字值与命令指定的字符串或数字相同。⑶ 命令中的参数只能是字符串或数值常量,若为字符串,可以省略定界符,若字符串带有前置空格,则必须加定界符。⑷ 若通过字符型内存变量检索,则需前置宏替换函数 & ,以表示按内存变量的内容检索。⑸ 若表中有符合条件的记录,命令执行后,记录指针指向第一个符合条件的记录。此时, RECNO() 函数的返回值为该记录的记录号, FOUND() 函数返回值为 .T. , EOF() 函数返回值为 .F. 。

Page 58: 第 3 章  数据库和表

示例【例 3.34 】查找“学生成绩”表中有无姓名为“李四海”和“王军”的记录。命令序列为: use 学生成绩 set order to 姓名 find 李四海 ? found (), recno(), eof () xm=“王军” find &xm ? found (), EOF ()

Page 59: 第 3 章  数据库和表

2 . SEEK 命令 命令格式: SEEK < 表达式 > 该命令与 FIND 命令的功能基本相同,但它的参数是表达式,其中可以包含常量,也可以包含变量。因此, SEEK 命令既可以查找字符型和数值型的值,也可以查找其他类型的值。但要注意的是,命令参数中若包含字符串,必须加定界符,否则系统将视之为变量名。

Page 60: 第 3 章  数据库和表

示例【例 3.36 】用 SEEK 命令查找“学生成绩”表中有无姓名为“李四海”的记录。命令序列为: use 学生成绩 set order to 姓名 seek “李四海” ? found( ),recno( ),eof( )

Page 61: 第 3 章  数据库和表

3.5.3  表记录的统计处理 VFP 6.0 提供了统计记录个数,对数值型字段求和、求平均值和对记录分组求和命令。 Count Sum Average total

Page 62: 第 3 章  数据库和表

1. 统计记录个数 命令格式: COUNT [< 范围 >] [FOR < 条件 >] [WHILE <条件 >] [TO < 内存变量名 >] 说明: ⑴ 该命令的功能是统计指定范围内符合条件的记录个数。 ⑵ TO短语指定将统计结果存入内存变量。 ⑶ 命令的“范围”缺省值为“ ALL” 。

Page 63: 第 3 章  数据库和表

2. 累加求和SUM [< 范围 >] [< 表达式表 >] [TO < 内存变量名表 >|TO ARRAY < 数组名 >] [FOR < 条件 >][WHILE < 条件 >]说明:⑴ 该命令的功能是在当前表中对满足条件的记录按表达式分别求和,并将求和结果分别存入内存变量或数组中。⑵ “ 范围”参数指定参与累加求和的记录范围,缺省值为“ ALL” 。⑶ “ 表达式表”指定需要求和的字段或字段表达式,该参数缺省时,默认为对所有的数值型、货币型字段进行求和。⑷ TO < 内存变量名表 > 短语指定将求和结果依次存入给定的各个内存变量中,使用该短语时,注意变量个数应与求和的字段或字段表达式个数相同。⑸ TO ARRAY < 数组名 > 短语指定将求和结果存入数组中。如果指定的数组不存在,系统自动创建;如果数组存在但太小,不能包含所有的累加值,系统自动增加数组的大小。

Page 64: 第 3 章  数据库和表

3. 计算平均值 命令格式: AVERAGE [< 范围 >] [< 表达式表 >] [FOR <条件 >] [WHILE < 条件 >] [TO < 内存变量名 >|TO ARRAY < 数组名 >] 该命令的功能是对满足条件的记录按表达式分别求平均值,参数的意义与 SUM 命令相同。

Page 65: 第 3 章  数据库和表

4. 分类求和 使用累加求和可以计算各记录数值型字段的总和,例如求某班语文总成绩,某单位职工总工资等。但有时需要根据某关键字对表中各记录的数值型字段分类求和,如分别求某班男生总成绩和女生总成绩,则需要按性别分类求和。分类求和可以用命令 TOTAL 实现。 命令格式: TOTAL TO < 表名 > ON <汇总关键字 > [< 范围 >] [FIELDS < 字段名表 >] [FOR< 条件 >] [WHILE< 条件 >]

Page 66: 第 3 章  数据库和表

说明:⑴ 该命令执行前,表必须在汇总关键字上排序或索引。命令执行后,生成一个新表,新表的结构与原表相同,但不包含备注字段。分类汇总结果存放在新表中。⑵ FIELDS 短语指定对原表中哪些数值字段进行汇总;缺省时,对所有数值型字段进行汇总。 ⑶ 使用该命令时,要防止汇总数据溢出。

Page 67: 第 3 章  数据库和表

3.5.4  多表操作1. 选择工作区命令格式:

SELECT < 工作区号 >|< 工作区别名 >|< 表别名 >|02. 在指定工作区中打开表要在指定的工作区中打开表,可用如下两种方法:⑴ 使用 SELECT 命令切换工作区,然后用 USE 命令在该工作区中打开一个表;⑵ 使用带 IN子句的 USE 命令,直接在指定工作区打开表。命令格式为: USE < 表文件名 > [IN < 工作区号 >| < 工作区别名 >] [ALIAS < 表别名 >]

Page 68: 第 3 章  数据库和表

select 1 use 教师简况 select 2 use 授课 ? A-> 编号, A-> 姓名, A-> 性别,班级,课程名称显示结果为: 1105 张一天 男 计应 001 数据结构

Page 69: 第 3 章  数据库和表

3. 数据工作期 若用户需要了解工作区的使用情况,可以使用“数据工作期”窗口。 使用“数据工作期”窗口可以显示和管理在各个工作区打开的表或视图,设置各工作区属性,建立表间临时关系。 三种打开方式:

Page 70: 第 3 章  数据库和表

4. 表关联 当用户把相互联系的信息存储在不同的表中,再在各个工作区分别打开时,实际需要各工作区的记录指针按照某种内在规律关联移动,以保证在不同工作区中读出的数据属于一个完整的信息。这可以通过建立表关联来实现。 两种方式建立关联

使用 SET RELATION 命令 “ 数据工作期”

Page 71: 第 3 章  数据库和表

使用 SET RELATION 命令 SET RELATION TO [< 关联关键字表达式 1> INTO < 别名 1>][< 关联关键字表达式 2> INTO < 别名 2>…] [ADDITIVE] 功能:在当前工作区已打开表与其他工作区上打开的表之间建立关联,当前工作区中的表称为父表,其他工作区中的表称为子表。 建立关联前,除非关键字表达式是数值型的,否则子表必须建立索引。

Page 72: 第 3 章  数据库和表

示例【例 3.40 】在“教师简况”与“授课”之间建立关联,然后显示每个教师的编号、姓名和课程名称。命令序列为: select 1 use 教师简况 select 2 use 授课 index on 编号 to bh select 1 set relation to 编号 into B list 编号 , 姓名 ,B->课程名称

Page 73: 第 3 章  数据库和表

建立临时一对多的关系 SET SKIP TO <子表 1>[ , <子表 2>…]说明:① 该命令在当前表与子表间建立“一对多”的临时关系。建立一对多的关系以前,当前表与子表间应已经建立一对一的临时关系。② 该命令可同时将当前表与多个子表的临时关系改为“一对多”的临时关系。③ 建立起“一对多”的临时关系后,在浏览父表过程中,当父表的记录指针指向某一记录时,子表记录指针将扫描所有相关的记录。P88页例子

Page 74: 第 3 章  数据库和表

⑵ 使用“数据工作期”窗口建立临时关系

Page 75: 第 3 章  数据库和表

3.5.5  永久性关系 VFP 6.0 可以在各表之间建立永久关系,永久关系信息被保存在数据库中,只要相关表不移出数据库,关系永远有效。 在数据库中建立永久关系后,当使用查询文件、视图文件或表格文件时,这些数据表的关联性便自动联接起来,任何程序都不需要再设定数据表之间的关联,省去了不少麻烦;而且利用数据库提供的其他功能,还可以自动实现多表之间的信息完整性维护。

Page 76: 第 3 章  数据库和表

永久性关系 父表中该字段称为主关键字字段,子表中该字段称为外部关键字字段。 关联的两表要分别以主关键字字段和外部关键字字段建立索引,索引表达式应该相同。系统要求主关键字字段的索引类型必须是主索引或候选索引,而外部关键字字段可以采用各种索引类型。 删除关系,可在关系表示连线上单击鼠标右键,在弹出的菜单中选择“删除关系”即可。

Page 77: 第 3 章  数据库和表

3. 设置参照完整性

Page 78: 第 3 章  数据库和表

本章小结 本章主要介绍数据库和表的操作。 表可以分为自由表和数据库表。使用多种方法对表结构和表记录进行编辑和修改。 数据库也可通过多种方法创建。数据表与自由表的区别 VFP 6.0 提供了多种索引文件和索引方式。可以对表中数据进行求和、求平均值、统计记录个数和分类汇总等统计操作。 多表之间的关联

Page 79: 第 3 章  数据库和表

本章作业 习题三前两题做书上 三、应用题( 1 、 2 )