790 likes | 901 Views
第 3 章 数据库和表. 面对海量数据,如何高效地对其进行收集、组织、处理,并加以充分利用,显得尤为重要。在 VFP 6.0 中,数据是以数据库和表的形式存放和管理的,本章将具体介绍数据库和表的有关概念及相应的操作方法. 本章主要内容. 数据库与表的概念 表的建立 表的基本操作 创建数据库 表的高级操作. 3.1 数据库与表的概念. 表又称为数据表或表文件,是 VFP 6.0 系统中最基本的文件,其作用是存储数据。 在关系数据库中,描述数据及其相互联系的基本模型是关系,一个关系就是一个二维表。表 3-1 是一个描述某学校教师基本情况的二维表。.
E N D
第3章 数据库和表 面对海量数据,如何高效地对其进行收集、组织、处理,并加以充分利用,显得尤为重要。在VFP 6.0中,数据是以数据库和表的形式存放和管理的,本章将具体介绍数据库和表的有关概念及相应的操作方法
本章主要内容 数据库与表的概念 表的建立 表的基本操作 创建数据库 表的高级操作
3.1 数据库与表的概念 • 表又称为数据表或表文件,是VFP 6.0系统中最基本的文件,其作用是存储数据。 • 在关系数据库中,描述数据及其相互联系的基本模型是关系,一个关系就是一个二维表。表3-1是一个描述某学校教师基本情况的二维表。
表与数据库的关系 • 数据库可以视为一个表的容器,它并不直接存放数据,而是存放表文件。数据库文件的扩展名为.dbc。 • 表文件可以包含在一个数据库中,这时,称该表为数据库表;如果一个表文件不包含在任何数据库中,则称该表为自由表。 • 自由表与数据库表是可以相互转化的,当用户把一个自由表放入数据库时,自由表就变成了一个数据库表;如把一个数据库表从数据库中移出,该数据库表就又变成了自由表。 • 一个表只能从属于一个数据库,如要将某数据库表加入其他数据库,应首先将其变为自由表,然后再将其加入其他数据库中。
3.2 表的建立 • 自由表的建立 • 在VFP 6.0中,一个表文件包括表结构及数据记录两个部分。在建立表文件时,先根据需要建立表结构,然后再向文件中输入数据记录内容。 • 在建立数据表以前,要先对数据表进行规划。基本步骤 • 确定数据表需要的字段个数和名称。 • 确定每一个字段的数据类型 • 确定字段的数据长度
创建表的方法 • 用表设计器创建表 • 用表向导创建表
3.2.1用表设计器创建表 • 启动表设计器 • 菜单方式、命令方式(create <表名>)
3.2.2 用表向导创建表 • ⑴ 启动表向导 • 选择“文件→新建”,在“文件类型”栏中选择“表”,单击“向导”按钮,进入表向导设计“步骤1—字段选择”,如图3-2所示。 • ⑵在“步骤1—字段选择”窗口中,用户要确定将要创建的表中包含几个字段。系统在“样表”框提供了一系列的样表,我们可以选择这些表中的字段做为要创建的表的字段,这样做可以继承这些字段在原表中的属性,从而省略或减少对它们属性的设置。
修改字段设置 编辑字段属性
3.3 表的基本操作 • 本节介绍主要内容 • 3.3.1 表的打开与关闭 • 3.3.2 修改表结构 • 3.3.3 表记录的录入 • 3.3.4 表记录的显示与修改 • 3.3.5 记录的定位、插入、修改与删除
3.3.1 表的打开与关闭 • 1.打开表 • 创建了一个表后,它就以文件的形式存储在磁盘上,我们可以随时对它进行操作。在对表进行各种操作以前,必须首先打开表,以便系统为表的操作做好准备。当新建一个表时,该表处于打开状态。
几种打开方式 • 用菜单或工具栏打开表 • 使用命令打开表 • 命令格式: • USE <表文件名> • VFP6.0中,一个工作区只允许打开一个表,当打开一个新表时,其他表自动关闭。
2.关闭表 • 对表的操作结束后,应该把表关闭,这样可以防止表中数据的丢失,保护表内数据的安全。 • USE &&关闭当前工作区的表文件。 • CLOSE DATABASES • &&关闭当前数据库及其表文件。 • CLOSE ALL • 关闭所有数据库及其表文件、所有自由表文件、所 有索引和格式文件。
3.3.2 修改表结构 • 表结构创建后,还可根据需要对其修改。通常用表设计器修改。 • 使用菜单命令或工具栏打开表设计器 • 命令格式 • MODIFY STRUCTUR • 修改表结构
修改表结构 • 通过表设计器修改表结构可以实现下列操作: • 字段的追加 • 字段的插入 • 删除字段 • 改变字段顺序 • 修改字段内容 • 在表结构修改后,原始数据被保存为一个备份文件,需要时,可以利用它恢复原数据表。
注意事项: • 修改表结构可能会造成原表数据丢失。 • 在表结构修改前,应将原始数据保存为一个备份文件,需要时,可以利用它恢复原数据表。
3.3.3 表记录的录入 • 表记录可以在创建表结构时立即录入,也可在需要时向表内追加。 • 1.在创建表时录入记录 • 如果是采用表设计器创建表,在完成表结构的设计,退出表设计器时,系统会给出提示信息,询问是否输入记录数据,如果回答“是”,此时可以用全屏幕编辑的方式追加或修改记录。
2.用命令追加记录 • 在对表进行操作时,要向表中追加更多的记录,可以采用追加方式录入记录。 • 追加记录命令为: • APPEND [BLANK] • 该命令的功能是打开记录编辑窗口,在表尾部添加记录;若选用BLANK参数,则表示在当前表的尾部添加一个空记录,以后可以在空记录中填写内容。
3.从其他表中追加记录 • 命令格式: • APPEND FROM <源表名> [FIELDS <字段名表>] [FOR <条件>] • 该命令能够将满足给定条件的记录,从源表追加到当前表的表尾。 • P58 【例3.5】
3.3.4 表记录的显示与修改 • 1.显示表结构 • 显示表结构可以通过命令方式来实现,命令格式为: • LIST STRUCTURE • DISPLAY STRUCTURE • 区别: • LIST STRUCTURE为连续显示; • DISPLAY STRUCTURE为分屏显示。
显示表记录命令 • LIST [<范围>] [<字段名表>] [FOR<条件>] [WHILE<条件>] [OFF] • DISPLAY [<范围>] [<字段名表>] [FOR<条件>] [WHILE<条件>] [OFF]
【例3.7】在系统工作区显示“教师简况.DBF”中所有男教师记录的“姓名”和“出生日期”。命令序列为:【例3.7】在系统工作区显示“教师简况.DBF”中所有男教师记录的“姓名”和“出生日期”。命令序列为: • use 教师简况 • list 姓名,出生日期 for 性别=“男”
3.表的浏览与编辑 • 窗口的两种显示模式 • 浏览 编辑 • 浏览窗口中的过滤显示 • 选择“数据工作区”---属性命令,在“工作区属性”窗口中设置。 • 单击“关闭”按钮,或关闭表文件,重新打开表文件,原来的过滤显示失效。
⑹ 表浏览和编辑的命令 • BROWSE [FIELDS <字段表>] [FOR <条件>] [FONT <字体[,大小]>] [STYLE <字形>] [FREEZE <字段名>] [PARTITION <数值表达式>] [NOLINK] [NOAPPEND] [NODELETE] [WIDTH <数值表达式>] • EDIT [FIELDS <字段表>] [FOR <条件>] [FONT <字体[,大小]>] [STYLE <字形>] [FREEZE <字段名>] [PARTITION <数值表达式>] [NOLINK] [NOAPPEND] [NODELETE] [WIDTH <数值表达式>]
示例 • Use 教师简况 • BROWSE FIELDS 姓名,性别,职称 FOR 性别='男' FONT '隶书',20 STYLE 'BIU'
3.3.5记录的定位、插入、修改与删除 • 1.记录指针的定位 • VFP 6.0为每个记录都顺序指定了“记录号”,第一个记录的记录号为1。当对某一个记录进行操作时,该记录被称为当前记录,在状态栏中显示了表中的记录数和当前的记录号,记录指针总是指向当前记录。 • 对某一记录进行操作,需要移动记录指针,使其指向该记录。在VFP 6.0中,可以通过多种方法移动记录指针。
移动记录指针的方法 • 用光标键或鼠标 • 用菜单命令 • 当前工作区有表文件打开时,才能使用 • 使用命令 • GO TOP • GO n • GO BOTTOM • SKIP n &&相对移动记录
记录的定位 • LOCATE [<范围>] [FOR<条件>] [WHILE<条件>] • CONTINUE • LOCATE命令将记录指针定位在规定范围内符合条件的第一个记录;CONTINUE使指针指向下一个满足条件的记录。可以连续用CONTINUE依次将记录指针指向下一个符合条件的记录,直至规定范围的尾部。但要注意,CONTINUE必须配合LOCATE使用,不能单独使用。
【例3.13】 • 在“教师简况”中,查找前两个1963年后出生教师的姓名、性别和出生日期。 • use 教师简况 • locate for 出生日期>={^1963-01-01} • display
2.插入记录 • 命令格式: • INSERT [BEFORE] [BLANK] • ⑴ 该命令启动编辑界面插入一个记录; • ⑵ 若选用BEFORE参数,在当前记录之前插入;否则,在当前记录之后插入; • ⑶ 若选用BLANK参数,则不启动编辑界面,系统自动在指定位置插入一个空记录。
3.删除记录 • 在VFP6.0中,记录删除有逻辑删除和物理删除。逻辑删除是指系统只给被删记录加上删除标记,在需要的时候,已逻辑删除的记录可以恢复;物理删除是指系统把记录从存储媒体上彻底清除,物理删除的记录不能再被恢复。 • 记录删除可通过图形交互方式和命令方式来实现。
命令方式 • 逻辑删除: DELETE [<范围>] [FOR<条件>] [WHILE<条件>] • 物理删除: PACK • 恢复被逻辑删除的记录 RECALL [<范围>] [FOR <条件>] [WHILE <条件>] • 【例3.16】逻辑删除“教师简况”中生日在1963年后的记录,再恢复生日在1980年后的记录。 • 命令序列为: use 教师简况 delete for 生日>={^1963-01-01} recall for 生日>={^1980-01-01}
相关命令或函数 • ZAP &&清空数据表中所有记录 • DELETE() &&函数测试当前记录是否被 逻辑删除
4.修改记录 • REPLACE [<范围>] [<字段名1> WITH <表达式1>] [,<字段名2> WITH <表达式2>]… [FOR <条件>] [WHILE <条件>] • 功能:该命令能用表达式的值替换对应字段的值。 • 说明: ⑴ 若范围和条件都缺省,则默认只对替换当前记录; ⑵ 表达式与对应字段的数据类型必须一致; ⑶ 当表达式的值超过字段宽度时,字符型截取前n个字符;数值型对小数部分四舍五入,若仍然超长则以*号表示溢出。
示例 【例3.17】将“教师简况”中所有教师的工龄增加一年。 命令序列为: use 教师简况 replace all 工龄 with 工龄+1
3.4 创建数据库 3.4.1 新建一个数据库 3.4.2 数据表的修改和使用
3.4.1 新建一个数据库 • 利用新建窗口 【例3.18】建立一个数据库,库名为“ABC”。 操作步骤为: ⑴ 选择“文件→新建”,进入新建窗口。 ⑵ 在“文件类型”栏中点选“数据库”,单击“新建文件”按钮,弹出“创建”窗口。 ⑶ 在“数据库名”栏中输入数据库名“ABC”,然后单击“保存”按钮。
新建数据库 • 使用“数据库向导” • 选择“文件→新建”,弹出“新建”窗口。按提示操作。 • 使用命令 • CREATE DATABASE <数据库名> • CREATE DATABASE ABC &&建立数据库abc
2.数据库的打开 • 菜单方式 • 命令方式 • OPEN DATABASE <数据库名> • 若要打开数据库设计器,还需要使用命令:MODIFY DATABASE • 在VFP 6.0中,可以同时打开多个数据库。指定当前数据库 • SET DATABASE TO [<数据库名>]
3. 向数据库中添加数据表 • 数据库打开后,可以在库内建立新表,也可以把以前建立的自由表加入数据库使其成为数据库表。 • 方法: 打开数据库设计器,再添加表。
数据库设计器相关操作 • 打开数据库文件后,系统会新增加一个数据库菜单项,通过该菜单可以实现一些相关操作。
3.4.2 数据表的修改和使用 • 长表名及表的注释 • 字段标题与字段注释 • 字段级规则及默认值 • 设置记录级规则
3.5 表的高级操作 • 在VFP 6.0中,系统提供了从物理上和逻辑上两种重新组织记录顺序的方法。 • 从物理上重新组织记录顺序,即彻底改变记录在磁盘上的排列顺序,改变每个记录的记录号,这种操作称为排序。排序后系统生成一个新的表文件,新表以新的顺序排列,原来文件的顺序并不改变。 • 从逻辑上重新组织记录顺序,就是不改变记录在表中的实际存储顺序(即记录号),但在处理表记录时,按新的顺序进行,这就需要为表建立索引文件,使表处理按索引顺序进行。
3.5.1 表记录的排序与索引 1.表记录的排序 • 命令方式实现,命令格式为: SORT TO <新表名> ON <关键字1> [/A] [/C] [/D] [,<关键字2> [/A] [/C] [/D]…] [<范围>] [FOR <条件>] [WHILE <条件>] [FIELDS <字段名表>]
说明 ⑴ 排序后生成一个新的表文件,其文件主名由命令中的“新表名”指定,扩展名为.DBF。命令执行后,当前工作区打开的仍然是原文件,新文件不会自动打开。 ⑵ /A表示升序、/D表示降序,缺省时默认按升序排列。有/C表示区分西文大小写,它可以与/A或/D结合使用,以/AC或/DC表示。 ⑶ 命令中的“关键字”应该是表中存在的字段名,该字段应该是可以比较大小的数据类型。一条命令中可以有多个关键字,执行时,首先按第一关键字排序,当第一关键字值相同时,再依次按第二关键字排序,依此类推。 ⑷ 范围短语指定需要排序的记录范围,缺省时默认值为ALL。 ⑸ FOR短语和WHILE短语指定满足条件的记录参加排序。 ⑹ FIELDS短语指定生成的新库中包含的字段。
示例 【例3.24】对“教师简况”按工龄降序排序,排序结果放入表“教师简况1”中,显示排序结果。 命令序列为: use 教师简况 sort to 教师简况1 on 工龄/D fields 编号,姓名,工龄,职称 use 教师简况1 list
2.表索引 • ⑴三类索引文件 • 复合结构索引文件---在表设计器中创建 • 非结构化复合索引文件—只能用命令创建 • IDX索引文件 —只能用命令创建