1.48k likes | 1.61k Views
第 3 章 数据库与表的设计与操作. 本章教学重点 自由表的创建与基本操作 表的排序、索引与查找 数据库的创建与基本操作 数据库中表与表之间关系的建立. 3.1 自由表的创建. 一、 Vf 中表的类型 Vf 中有两种类型的表:数据库表和自由 表,数据库表是数据库中的表,自由表是不 属于任何数据库的表,它们可以相互进行转 化,且两者之间有差别,如数据库表支持长 表名和长字段名,且可定义数据字典。. 二、分析自由表的组成 表是 Vf 处理数据和建立关系型数据库及应 用程序的基本元素,在 Vf 中,表文件的扩展
E N D
第3章 数据库与表的设计与操作 本章教学重点 自由表的创建与基本操作 表的排序、索引与查找 数据库的创建与基本操作 数据库中表与表之间关系的建立
3.1 自由表的创建 一、Vf中表的类型 Vf中有两种类型的表:数据库表和自由 表,数据库表是数据库中的表,自由表是不 属于任何数据库的表,它们可以相互进行转 化,且两者之间有差别,如数据库表支持长 表名和长字段名,且可定义数据字典。
二、分析自由表的组成 表是Vf处理数据和建立关系型数据库及应 用程序的基本元素,在Vf 中,表文件的扩展 名是.dbf,表有表结构和表记录构成。表结 构就是二维表的表头由若干列组成,表中的 列称为字段,是同类数据的集合,每一个字 段都有惟一的名称,称为字段名,表中每一 行称为一条记录,每个记录都有一个记录 号,依次为1号记录, 2号记录,……,最前
面的记录称为首记录,最后面的记录称为尾 记录。 三、表结构的定义 定义表结构时,需定义的内容有:字段 名,字段类型,字段宽度(字段值的最大宽 度),对数值型数据根据实际需要还需定义 小数位数。下面以表设计器中需定义的内容 为列:
①字段名命名规则:字段名必须以字母或汉 字开头,后跟字母、汉字、数字或下划线, 且长度对自由表不能超过10个字符,对数据 库表不能超过128个字符。尽量简短,做到见 名知意。详细的标题信息在数据库表结构的” 标题”参数中说明,但为了使用方便在此我们 把标题名和字段名定义为相同的.
②字段类型:Visual foxpro提供了13中字 段类型,用以存放不同类型的数据。 ③字段宽度:字段宽度表明该字段允许存放的数据的长度,以字节表示。实际使用时应根据具体情况进行定义,但系统对有些数据类型的字段宽度有具体规 定,如:货 币型8字节,日期、日期时间型8字节,双字 节型8字节,逻辑型1字节,备注、通用型 为4字节,整型为4字节。
④小数位数:当字段类型为数值型或浮点型 时,应根据需要在小数位数栏中定义小数位数,但需注意,小数位数应比字段宽度小最少2,且小数点占一位。 4、索引:在对表的某一字段进行索引排序时 需建立索引。
5、是否允许为空(null) 值:当表中某一字段的值暂不能确定时,就定义为空值,空值与空字符串,数值0不同,空值是未确定的值或缺值。Vf规定关键字字段不能为空。 四、Vf中表的建立 表的建立包括两部分,一是建立表结构,二是输入表记录。
1、建立表结构 表结构的建立有两种方法,一是命令法, 二是用表设计器进入表设计器的方法有: 1)使用菜单:文件→新建→表→新建→输入 表文件名→保存。 2)使用工具按钮:单击新建→表→新建→输 入表文件名→保存。
2、输入表记录 在表定义结束存盘后,系统询问现在是否 输入数据记录,若选择是则进入浏览或编辑 窗口,既可连续进行记录的输入,若选择否 则光标返回到命令窗口,以后若想输入表记 录,则需在表打开的状态下,选择显示菜单 的追加记录命令,来进行输入,在输入时可 通过显示菜单的编辑浏览命令在两种状态下 切换。
注:输入表记录时应注意以下问题: (1)在输入记录时,当输入内容填满一个字段 的宽度时,光标会自动调到下一个字段,否 则用TAB键或回车键将光标移到下一个字段。 (2)日期型数据按年、月、日的形式输入,不 需输入”/“ (3)对有小数点的数值型数据,只需确定整数 部分的位置,不需输入小数点。
(4)对逻辑型数据,只需输入T或F,不需输入 左右点。 (5) 输入空值的方法是输入ctrl+0 (6)备注型与通用型数据的输入不同于其它数 据的输入。备注型数据的输入方法是用鼠 标双击浏览或编辑窗口相应的备注型字段 或把光标定位在相应的备注型字段上按 ctrl+pagedown或ctrl+pageup或ctrl+home
进入备注型字段的文本编辑窗口进行编辑, 编辑结束后,按ctrl+w或关闭按钮即可。 通用型数据的输入方法是用鼠标双击浏览或 编辑窗口相应的通用型字段或把光标定位在 相应的通用型字段上按ctrl+pagedown或 ctrl+pageup或ctrl+home进入通用型字段的 多媒体编辑窗口,然后选择编辑菜单的插入 对象命令,进入插入对象对话框,选择对象
的来源是通过新建的方法来产生还是由文件 来创建,若选择新建则选择一个应用程序来 产生,若选择由文件来创建则通过浏览命令 将一个已有的文件插入进来。
3.2 表的基本操作 一、表文件的打开与关闭 1.表的打开方式 表的打开方式有两种,只读方式和独占方 式,以只度方式打开的表只能浏览不能修 改,以独占方式打开的表既可以浏览也可以 修改。
2.表的打开方法 ①菜单法:文件→打开→选择文件类型 为.dbf→选择要打开的文件名→按打开按钮 ②命令法:use [<文件名>] [exclusive|shared]] 功能:在当前工作区中打开或关闭(只有use 命令)表,表打开时,若该表有备注型或通用 型字段,则自动打开同名的.fpt文件。
使用说明: 1、用exclusive选项,以独占方式打开表, 用shared选项,以共享方式打开表,此时的 表只能浏览不能修改。 2、打开一个表时该工作区中原来的表自动关 闭。 3、已打开的一个表有一个指针与其对应,指 针所指的记录为当前记录,表刚打开时, 记录指针指向表的第一个记录。
4、表操作结束后应及时关闭,以便将内存中 的数据保存到外存的表中。 ③关闭表的其它方法 clear all关闭所有的表,并选择工作区 1,释放所有内存变量,用户定义的菜单和窗口。 close all关闭所有的数据库和表,并选择工作区1,关闭各种设计器和项目管理器。
close tables[all]关闭当前数据库中所有 的表,若无打开的数据库,则关闭所有的自 由表。 此外,还可用退出VF来关闭当前打开的表。 二、表结构的显示与修改 1 .表结构的显示 显示当前工作区打开表的结构可用如下命 令:list 或disp
命令格式: list|disp stru [to printer[prompt] |to file <file>] 功能:显示当前已打开的表的结构。 2.表结构的修改 有两种方法: 方法一:在表设计器中修改表结构 打开表设计器的方法是在表已打 开的情况下用显示→表设计器, 方法二:用命令直接修改。Modi stru
三.表记录的显示与修改 1.浏览方式记录显示与修改 浏览窗口显示表记录的格式分为编辑和浏 览两种。 浏览窗口打开的方法有两种: 菜单法:打开要修改的表,显示→浏览 命令法:打开要修改的表,browse 附:可用显示菜单下的编辑命令在浏览和 编辑之间切换。
2.命令方式显示记录 命令格式: list|disp [[fields]<字段名表>] [<范围>][for<条件1>][while<条件 2>][off][to printer[prompt]|to file<文件名>] 功能:按指定范围和条件筛选出记录并显示 出来。 使用说明:1.掌握各命令子句的功能 (1)[[fields]<字段名表>]:按需要指
定各字段名,其中关键字fields可省略。 (2)[<范围>]:用来指出对当前表的哪个范围 内的记录进行操作,有四种限定方式。省略 它,list命令默认是当前表的所有记录, disp命令默认是当前表的当前记录。 (3)[for<条件1>]:用于限定对当前表中指定 范围内满足条件的记录。 (4)Off:显示结果不显示记录号
(5)to printer[prompt]:将显示结果同时送 往打印机。 (6)Toto file <文件名>:将显示结果保存在 文本文件中。 2.注意命令和各子句的书写规则。 (1)命令中有些子句可以省略,如fields子 句在有限定字段时;有些不能省,如for子句 有限定条件时。
四、记录定位 记录定位就是将记录指针指向某个记录, 使之成为当前记录。有绝对定位法和相对定 位法。 ㈠绝对定位法: ⑴命令法: 方法一:绝对定位命令go 命令格式1:go top|bottom
功能:将记录指针指向表的第一个记录或最 后一个记录。 命令格式2:go/goto<数值表达式> 功能:将记录指针定位在数值表达式指定的 记录。
⑵菜单法 在浏览窗口打开后,系统菜单中增加了表 菜单利用表菜单中的移动记录命令可以使记 录指针移动而实现定位。 (二)相对定位法 命令格式:skip [<数值表达式>] 功能:从当前记录开始相对移动记录指针,数值表达式表示移动记录的个数。
五、表记录的修改 表记录的修改有浏览/编辑方式修改和成批修 改。 1、浏览方式修改表记录(browse) 命令格式: Browse [for<条件表达式>][fields <字段名 表>][lock <数值表达式>][freeze<字段名>]
功能:以编辑方式(可以修改)打开浏览窗 口,显示表文件中指定记录的指定字段。 使用说明: 1、for和fields子句的功能同前,但此处 Fields子句不能省略。 2、lock <数值表达式>:指定在窗口的左分 区看到的字段数。 3、 freeze<字段名>:使光标冻结在某字段上
只能修改该字段,其他字段只能浏览,不能 修改。 4、browse命令省去所有选项时,在浏览窗 口显示除备注型与通用型之外的所有字段内 容,且可修改,备注型与通用型字段内容需 要时可直接双击mem或gen进行修改。 5、修改后直接关闭窗口,修改内容直接保存。
例3.8 使用browse命令显示并修改学生表中 所有男同学的姓名、班级、入学成绩。 命令序列是: Use 学生表 Browse fields 姓名,班级,入学成绩; for 性别=“男” 执行结果是:
例3.9 在屏幕的左边锁定两个字段,以便对 照修改。 命令序列是: Use 学生表 Browse lock 2
2、编辑方式修改表记录(edit) 用edit或changchange命令,功能与 Browse命令相同,不同之处是以编辑方式修 改。 3、成批替换修改命令(replace) 可以用菜单方式和命令方式 菜单方式实现的方法是: 打开表后让表处于浏览状态,打开表菜单
选择替换字段命令,在出现的替换字段对话 框中,选择要替换的字段和替换后的字段值 ,再选择替换范围和替换条件,对要替换的 记录范围左限定。设置完成后按替换按钮即 可。 如例3.10 将学生表中班级为计算机的记录改 为计算机应用。 操作步骤是:依次打开表,浏览表,选择表
菜单中的替换字段命令打开替换字段对话框 然后进行设置。如下图所示:
命令方式实现的方法是: 命令格式: Rereplace [<范围>][for/while<条件表达式>] <字段名1> with <表达式1>[additive] [, <字段名2> with <表达式2>]…… 功能:在当前表文件内,对指定范围内满足 条件的记录进行批量修改。
使用说明: 1、该命令的替换方式是用表达式 的值替换 字段名1的字段值,用表达式2的值替换字段 名2的字段值,依次类推。 2、字段值的类型和后面表达式的类型必须 一致。 3、可选项addi只对备注型只对起作用,若 无此子句,则用表达式的值直接替换备注型
只对的原值,否则只把表达式的值追加到后面 4、该命令省略范围和条件时只对当前记录 的字段替换,若省略范围则对所有记录中满 足条件的只对操作,若省略条件则对指定范 围内的只对操作。 上例用命令实现是 Use 学生表 Repl 班级 with “计算机应用” for 班级=‘计 算机’
例3.11 把学生表中每个同学的入学成绩加上 30分的体育分。 Use 学生表 Repl all入学成绩with 入学成绩+30 六、记录的追加与插入 1、记录的追加 指在当前表的末尾追加新的记录。 有两种实现方法:
(1)菜单法: 在浏览窗口打开的状态下,选择表菜单中的 追加新纪录命令,即可在当前浏览的表中最 后一条记录的下面产生一个空白记录,将光 标定位在各字段上,进行数据输入。次方法 一次只能输入一条记录。若一次输入多条记 录,就用显示菜单下的追加方式命令。若选 追加记录命令,则可将其他表中满足条件的 记录的共同字段值成批追加到当前表中。
(2)命令法:append命令 命令格式1:append [blank] 命令功能:在表的末尾追加一条空白记 录,若有blank子句,则留待以后用replace 命令添加记录内容,否则进入记录编辑窗口 进行数 2、从其他表文件中向当前表文件成批添加记录数据输入。
命令格式: Append from <表文件名> fields <字段名>] [for/while <条件表达式>] 命令功能:将指定表的内容追加到当前表的 末尾。 使用说明: 1)若果原文件与当前表文件有不同的字段,则值追加两表中具有系统名称和类型的字段,其他为空。
功能:在指定表的末尾追加一个新记录,并 直接将提供的数据输入纪录。 注意: 1利用insert into命令追加纪录时,表不必事先打开,但是要求字段与表达式的类型必须相同。 2若字段名全部省略,就需按表结构的字段顺序添加values子句的所有表达式。
2)如果原文件中字段宽度大于当前表文件的 宽度,则自动截取超长部分,小于时用空格 填充。 3、insert into命令 命令格式: insert into <表名>[(<字段名1>[,<字段名2>,……])] values(<表达式1>[,<表达式2>,……])
2、记录的插入 命令格式:insert [before][blank] 命令功能:在当前记录后插入新的记录,且 可进行编辑,若有blank子句则只能插入空白 记录,待以后进行编辑或用repl命令替换, 若有before子句则在当前记录前插入新的记 录。
例3.13 在学生表的第三条记录之后插入一条 记录。 Use 学生表 Go 3 Insert
七、表记录的删除 记录的删除分为逻辑删除和物理删除,逻辑 删除是只做删除标记,在set deleted on的 情况下,在进行相关的统计命令时,有删除 标记的记录不起作用,统计结束后,可进行 恢复或彻底删除。 有两种方法,菜单法和命令法.
1、对记录做删除标记 命令格式:delete [<范围>] [for<条件>][while<条件>] 命令功能:对当前表中指定范围内满足条件 的记录作删除标记,若可选项都省略,则仅 对当前记录做删除标记。可用delete()函数 测试当前记录是否有删除标记。