FoxPro For Windows http://cc.synu.edu.cn 1
第 3讲 数据库的维护
数据库记录的替换、追加与插入、删除与恢复
数据库结构与记录的复制
数据库文件的结构文件
磁盘文件操作
数据库的基本操作小结
FoxPro For Windows http://cc.synu.edu.cn 2
REPLACE命令对有规律的成批记录数据进行修改:
REPLACE <field1> WITH <expr1>
[,<field2>WITH<expr2>]…
[<scope>][FOR<expL1>][WHILE<expL2>]
? WITH前后的数据类型必须匹配。
? 如缺省范围,只对当前记录操作。
? 数值型字段,若表达式的值超过字段的宽度,则截掉小数
点后的数字并按四舍五入方式进位;如仍无法容纳则用科
学表示法表示;如仍不够,则用星号 "*"填充字段。
记
录
替
换
USE score
REPLACE ALL total WITH english+chinese+math
REPLACE 工资 WITH 工资 +50
FoxPro For Windows http://cc.synu.edu.cn 3
追
加
记
录
USE student
APPEND 末记录后追加空记录并进入编辑窗口
可连续追加多记录;
APPEND BLANK
末记录后添加一个空白记录,不出现输入窗口,
常用在编程中 。
go bottom
repl name with,徐刚”,sno with ’990110’,
birthday with {81/10/12}
追加 只在文件尾追加
FoxPro For Windows http://cc.synu.edu.cn 4
从其他数据文件(数据库文件或文本文件)向当前数据库
文件添加数据
APPE FROM <file>|? [ FOR<expL>][FIELDS<field list>]
[DELIMITED|SDF]
? APPEND FROM 后必须指定源文件名 (.DBF可省略 );
? FIELDS子句用于选择源文件中的字段,所选择的字段名
必须存在于当前数据库文件中。
? SDF(Standard Data File)文本文件。特点是:记录定长,
每个记录之间以回车换行符结束,字段之间没有分隔符。
SDF文件的默认扩展名是,TXT。
? 分界文件特点是记录以回车换行符结束,字段之间默认
以逗号隔开,字符型字段值的两端有引号。
FoxPro For Windows http://cc.synu.edu.cn 5
[例 ] Use student2
Appe from student for sex=‘女’
FoxPro For Windows http://cc.synu.edu.cn 6
INSERT [BEFORE] [BLANK]
? INSERT 在当前记录后插入新记录,并进入编辑状态。
? INSERT BLANK
在当前记录后插入新记录,不进入编辑状态,记录为
空记录。
? INSERT BEFORE
在当前记录之前插入新记录,并进入编辑状态。
? INSERT BEFORE BLANK
在当前记录之前插入新记录,不进入编辑状态,记录
为空记录。
插
入
记
录
FoxPro For Windows http://cc.synu.edu.cn 7
逻辑删除( 加删除标记,并不真正删除)
DELETE [<scope>] [FOR<expL2>]
? 无任何选项只对当前记录加删除标记。
? <scope>对一组记录加删除标记
? FOR对满足条记录加删除标记
取消删除标记
RECALL [<scope>][FOR<expL1>][WHILE<expL2>]
? RECALL命令是 DELETE命令的逆操作。
? 无任何可选项只恢复当前记录。
删
除
与
恢
复
FoxPro For Windows http://cc.synu.edu.cn 8
[例 ] Go 2
Dele
Dele for sno=‘990103’
问题:总字段宽度为什么是各字段宽度之和加 1?
FoxPro For Windows http://cc.synu.edu.cn 9
物理删除记录
( 对加删除标记的记录,真正从数据库中删除)
Pack
数据库清空命令
ZAP
? ZAP命令清除当前数据库文件中的所有记录,只保留
一个数据库结构。
? ZAP命令与执行 DELETE ALL命令,然后再执行 PACK
命令等效,但 ZAP的执行速度却快得多。执行后无法
用 RECALL命令恢复。
FoxPro For Windows http://cc.synu.edu.cn 10
设置遮盖带删除标记记录
SET DELETE ON|OFF
? ON 遮盖带删除标记的记录;浏览数据库时( list,disp
brow),有删除标记的记录被隐藏,不显示。
? OFF 不遮盖带删除标记的记录。
? 绝对指针移动命令 go 不受 SET DELETE ON|OFF影响
? 相对指针移动命令 skip 受影响,SET DELETE ON时
隐藏加删除标记的记录。
[例 ]P37
FoxPro For Windows http://cc.synu.edu.cn 11
COPY STRUCTURE TO <file> [FIELDS <fields list>]
? 只复制库结构,即产生一个名为 file的空数据库。
? FIELDS子句指定哪些字段复制到新的结构中,缺省该
项,复制所有字段。
? <file>中的扩展名,DBF可以缺省。
注意:必须先打开数据库,才可复制结构。
结
构
的
复
制
USE student
COPY STRUCTURE TO student1 &&全部复制
COPY STRUCTURE TO student1 FIELDS name,sex
&&部分复
制
FoxPro For Windows http://cc.synu.edu.cn 12
USE STUDENT
GO 3
COPY TO st1 REST &&从当前记录开始拷贝到最后
COPY TO st1 WHILE English>60 &&遇到 <=60记录停止拷贝
COPY TO st1 FOR English>60 &&拷贝所有 >60记录
COPY TO st1 FOR English>60 WHILE sex='女 '
注意,WHILE条件优先 FOR,遇到 sex<>'女 '的记录停止拷贝。
文
件
的
复
制
copy to <file name > for ……fields ……
把当前数据库文件的部分或全部记录复制到一个新的库文
件中,复制数据的同时也复制了库的结构。
FoxPro For Windows http://cc.synu.edu.cn 13
数据库文件的结构文件
存储某一库文件结构的特殊库文件。
结构文件的建立
COPY TO <file> STRUCTURE EXTENDED
[例 ] USE student1 &&库文件 student的备份
COPY TO stu STRU EXTE &&生成结构文件,它包括 4个字段:
USE stu
LIST STRU
FoxPro For Windows http://cc.synu.edu.cn 14
? 通常先将原库文件数据复制成文本文件保存,待修改结束后再把文本文件的
数据添加。
COPY TO wb SDF &&将 student1 数据存到文本文件 wb
USE stu
APPEND BLANK
REPLACE field_name WITH "AGE",field_type WITH "N",field_len WITH 2
CREATE student1 FROM stu &&库文件 student1已增加一个字段 AGE
APPEND FROM wb SDF &&将原数据添加
BROW
原数据库的结构参数是结构
文件数据库的记录
目的:程序中,以命令方式
修改原数据库结构
由结构文件生成新库文件的结构命令
CREATE <file> FROM<file1>
FoxPro For Windows http://cc.synu.edu.cn 15
磁盘文件操作
菜单操作:
FoxPro 提供一个用菜单方式操作的文件维护程序,在
Help菜单中选择 Filer选项,打开文件维护窗口。
选择待操作的文件
在执行具体操作前,必须选定文件,
鼠标单击,Ctrl +单击,shift+单击。
Files Like:用以指明所显示的文件类型。
Tag all:把文件列表中文件全部加上选择标记。
Tag None:去除文件列表中所选文件的选择标记。
Invert:逆向选择。
文件操作按钮( P40)
FoxPro For Windows http://cc.synu.edu.cn 16
磁盘文件操作命令
? 磁盘文件改名
RENAME <old file> TO <new file>
? 删除磁盘文件
ERASE|DELETE FILE<file>|?
? 复制磁盘文件(文件必须是未使用的)
COPY FILE <old file> TO <new file>
? 显示磁盘文件目录
DIR [<dev,>][<skel>][TO PRINT]
? 显示文本文件内容
TYPE<file>[TO PRINT]
FoxPro For Windows http://cc.synu.edu.cn 17
数据库的基本操作小结:
? 创建数据库
CREATE [<file>|?] &&手工创建数据库文件
CREATE <file> FROM<file1> &&自动建库,常用于程序中,
与 COPY TO <file> STRUCTURE EXTENDED联用。
? 数据库打开与关闭
USE [<file>|?] &&只关闭当前工作区的数据库文件。
? 数据库结构操作
DISPLAY | LIST STRUCTURE &&显示数据库结构
MODIFY STRUCTURE &&修改数据库结构
FoxPro For Windows http://cc.synu.edu.cn 18
数据库操作
? 移动记录指针:
[GO | GOTO [RECORD]] <expN>|TOP |BOTTOM
SKIP [<expN>]
·文件头测试函数 bof()
·文件尾测试函数 eof()
·记录测试函数 recno()
LOCATE FOR <expL1>[<scope>][WHILE<expL2>]
CONTINUE
? 显示记录:
LIST | DISPLAY [[FIELDS]<expr>] [<scope>]
[FOR<expL1>]……
FoxPro For Windows http://cc.synu.edu.cn 19
? 修改记录
BROWSE [FIELDS<field list>] &&全屏编辑,一个记录一行
EDIT|CHANGE [<scope>]…… &&全屏编辑,一个字段一行
REPLACE <field1>WITH<expr1> &&成批修改,常用程序中
? 添加记录
APPEND [BLANK] &&在数据库最后添加记录
APPEND FROM <file> &&其他库向当前库成批添加记录
APPEND FROM <file> [DELI|SDF]
&&文本文件向当前库添加记录
INSERT [BEFORE] [BLANK]
&&数据库指定位置插入记录
FoxPro For Windows http://cc.synu.edu.cn 20
? 删除记录
DELETE [<scope>][FOR<expL>] &&加删除标记 "*"(逻辑删除 )
RECALL [<scope>][FOR<expL>] &&取消删除标记 "*"
PACK &&删除带 "*"的记录(物理删除)
ZAP &&删除库中全部记录(物理删除)
SET DELETE ON
? 数据库的过滤
SET FILTER TO [<expL>]
? 数据库的复制
COPY STRUCTURE TO <file> &&复制数据库结构
COPY TO <file>[<scope>] &&复制数据库
COPY TO <file1> STRUCTURE EXTENDED &&生成结构文件
CREATE <file> FROM<file1>
FoxPro For Windows http://cc.synu.edu.cn 21
文件操作:
重命名,RENAME <old file> TO <new file>
删除,ERASE|DELETE FILE<file>|?
拷贝,COPY FILE <old file> TO <new file>
显示目录,DIR [<dev,>][<skel>][TO PRINT]
显示内容,TYPE<file>[TO PRINT]
第 3讲 数据库的维护
数据库记录的替换、追加与插入、删除与恢复
数据库结构与记录的复制
数据库文件的结构文件
磁盘文件操作
数据库的基本操作小结
FoxPro For Windows http://cc.synu.edu.cn 2
REPLACE命令对有规律的成批记录数据进行修改:
REPLACE <field1> WITH <expr1>
[,<field2>WITH<expr2>]…
[<scope>][FOR<expL1>][WHILE<expL2>]
? WITH前后的数据类型必须匹配。
? 如缺省范围,只对当前记录操作。
? 数值型字段,若表达式的值超过字段的宽度,则截掉小数
点后的数字并按四舍五入方式进位;如仍无法容纳则用科
学表示法表示;如仍不够,则用星号 "*"填充字段。
记
录
替
换
USE score
REPLACE ALL total WITH english+chinese+math
REPLACE 工资 WITH 工资 +50
FoxPro For Windows http://cc.synu.edu.cn 3
追
加
记
录
USE student
APPEND 末记录后追加空记录并进入编辑窗口
可连续追加多记录;
APPEND BLANK
末记录后添加一个空白记录,不出现输入窗口,
常用在编程中 。
go bottom
repl name with,徐刚”,sno with ’990110’,
birthday with {81/10/12}
追加 只在文件尾追加
FoxPro For Windows http://cc.synu.edu.cn 4
从其他数据文件(数据库文件或文本文件)向当前数据库
文件添加数据
APPE FROM <file>|? [ FOR<expL>][FIELDS<field list>]
[DELIMITED|SDF]
? APPEND FROM 后必须指定源文件名 (.DBF可省略 );
? FIELDS子句用于选择源文件中的字段,所选择的字段名
必须存在于当前数据库文件中。
? SDF(Standard Data File)文本文件。特点是:记录定长,
每个记录之间以回车换行符结束,字段之间没有分隔符。
SDF文件的默认扩展名是,TXT。
? 分界文件特点是记录以回车换行符结束,字段之间默认
以逗号隔开,字符型字段值的两端有引号。
FoxPro For Windows http://cc.synu.edu.cn 5
[例 ] Use student2
Appe from student for sex=‘女’
FoxPro For Windows http://cc.synu.edu.cn 6
INSERT [BEFORE] [BLANK]
? INSERT 在当前记录后插入新记录,并进入编辑状态。
? INSERT BLANK
在当前记录后插入新记录,不进入编辑状态,记录为
空记录。
? INSERT BEFORE
在当前记录之前插入新记录,并进入编辑状态。
? INSERT BEFORE BLANK
在当前记录之前插入新记录,不进入编辑状态,记录
为空记录。
插
入
记
录
FoxPro For Windows http://cc.synu.edu.cn 7
逻辑删除( 加删除标记,并不真正删除)
DELETE [<scope>] [FOR<expL2>]
? 无任何选项只对当前记录加删除标记。
? <scope>对一组记录加删除标记
? FOR对满足条记录加删除标记
取消删除标记
RECALL [<scope>][FOR<expL1>][WHILE<expL2>]
? RECALL命令是 DELETE命令的逆操作。
? 无任何可选项只恢复当前记录。
删
除
与
恢
复
FoxPro For Windows http://cc.synu.edu.cn 8
[例 ] Go 2
Dele
Dele for sno=‘990103’
问题:总字段宽度为什么是各字段宽度之和加 1?
FoxPro For Windows http://cc.synu.edu.cn 9
物理删除记录
( 对加删除标记的记录,真正从数据库中删除)
Pack
数据库清空命令
ZAP
? ZAP命令清除当前数据库文件中的所有记录,只保留
一个数据库结构。
? ZAP命令与执行 DELETE ALL命令,然后再执行 PACK
命令等效,但 ZAP的执行速度却快得多。执行后无法
用 RECALL命令恢复。
FoxPro For Windows http://cc.synu.edu.cn 10
设置遮盖带删除标记记录
SET DELETE ON|OFF
? ON 遮盖带删除标记的记录;浏览数据库时( list,disp
brow),有删除标记的记录被隐藏,不显示。
? OFF 不遮盖带删除标记的记录。
? 绝对指针移动命令 go 不受 SET DELETE ON|OFF影响
? 相对指针移动命令 skip 受影响,SET DELETE ON时
隐藏加删除标记的记录。
[例 ]P37
FoxPro For Windows http://cc.synu.edu.cn 11
COPY STRUCTURE TO <file> [FIELDS <fields list>]
? 只复制库结构,即产生一个名为 file的空数据库。
? FIELDS子句指定哪些字段复制到新的结构中,缺省该
项,复制所有字段。
? <file>中的扩展名,DBF可以缺省。
注意:必须先打开数据库,才可复制结构。
结
构
的
复
制
USE student
COPY STRUCTURE TO student1 &&全部复制
COPY STRUCTURE TO student1 FIELDS name,sex
&&部分复
制
FoxPro For Windows http://cc.synu.edu.cn 12
USE STUDENT
GO 3
COPY TO st1 REST &&从当前记录开始拷贝到最后
COPY TO st1 WHILE English>60 &&遇到 <=60记录停止拷贝
COPY TO st1 FOR English>60 &&拷贝所有 >60记录
COPY TO st1 FOR English>60 WHILE sex='女 '
注意,WHILE条件优先 FOR,遇到 sex<>'女 '的记录停止拷贝。
文
件
的
复
制
copy to <file name > for ……fields ……
把当前数据库文件的部分或全部记录复制到一个新的库文
件中,复制数据的同时也复制了库的结构。
FoxPro For Windows http://cc.synu.edu.cn 13
数据库文件的结构文件
存储某一库文件结构的特殊库文件。
结构文件的建立
COPY TO <file> STRUCTURE EXTENDED
[例 ] USE student1 &&库文件 student的备份
COPY TO stu STRU EXTE &&生成结构文件,它包括 4个字段:
USE stu
LIST STRU
FoxPro For Windows http://cc.synu.edu.cn 14
? 通常先将原库文件数据复制成文本文件保存,待修改结束后再把文本文件的
数据添加。
COPY TO wb SDF &&将 student1 数据存到文本文件 wb
USE stu
APPEND BLANK
REPLACE field_name WITH "AGE",field_type WITH "N",field_len WITH 2
CREATE student1 FROM stu &&库文件 student1已增加一个字段 AGE
APPEND FROM wb SDF &&将原数据添加
BROW
原数据库的结构参数是结构
文件数据库的记录
目的:程序中,以命令方式
修改原数据库结构
由结构文件生成新库文件的结构命令
CREATE <file> FROM<file1>
FoxPro For Windows http://cc.synu.edu.cn 15
磁盘文件操作
菜单操作:
FoxPro 提供一个用菜单方式操作的文件维护程序,在
Help菜单中选择 Filer选项,打开文件维护窗口。
选择待操作的文件
在执行具体操作前,必须选定文件,
鼠标单击,Ctrl +单击,shift+单击。
Files Like:用以指明所显示的文件类型。
Tag all:把文件列表中文件全部加上选择标记。
Tag None:去除文件列表中所选文件的选择标记。
Invert:逆向选择。
文件操作按钮( P40)
FoxPro For Windows http://cc.synu.edu.cn 16
磁盘文件操作命令
? 磁盘文件改名
RENAME <old file> TO <new file>
? 删除磁盘文件
ERASE|DELETE FILE<file>|?
? 复制磁盘文件(文件必须是未使用的)
COPY FILE <old file> TO <new file>
? 显示磁盘文件目录
DIR [<dev,>][<skel>][TO PRINT]
? 显示文本文件内容
TYPE<file>[TO PRINT]
FoxPro For Windows http://cc.synu.edu.cn 17
数据库的基本操作小结:
? 创建数据库
CREATE [<file>|?] &&手工创建数据库文件
CREATE <file> FROM<file1> &&自动建库,常用于程序中,
与 COPY TO <file> STRUCTURE EXTENDED联用。
? 数据库打开与关闭
USE [<file>|?] &&只关闭当前工作区的数据库文件。
? 数据库结构操作
DISPLAY | LIST STRUCTURE &&显示数据库结构
MODIFY STRUCTURE &&修改数据库结构
FoxPro For Windows http://cc.synu.edu.cn 18
数据库操作
? 移动记录指针:
[GO | GOTO [RECORD]] <expN>|TOP |BOTTOM
SKIP [<expN>]
·文件头测试函数 bof()
·文件尾测试函数 eof()
·记录测试函数 recno()
LOCATE FOR <expL1>[<scope>][WHILE<expL2>]
CONTINUE
? 显示记录:
LIST | DISPLAY [[FIELDS]<expr>] [<scope>]
[FOR<expL1>]……
FoxPro For Windows http://cc.synu.edu.cn 19
? 修改记录
BROWSE [FIELDS<field list>] &&全屏编辑,一个记录一行
EDIT|CHANGE [<scope>]…… &&全屏编辑,一个字段一行
REPLACE <field1>WITH<expr1> &&成批修改,常用程序中
? 添加记录
APPEND [BLANK] &&在数据库最后添加记录
APPEND FROM <file> &&其他库向当前库成批添加记录
APPEND FROM <file> [DELI|SDF]
&&文本文件向当前库添加记录
INSERT [BEFORE] [BLANK]
&&数据库指定位置插入记录
FoxPro For Windows http://cc.synu.edu.cn 20
? 删除记录
DELETE [<scope>][FOR<expL>] &&加删除标记 "*"(逻辑删除 )
RECALL [<scope>][FOR<expL>] &&取消删除标记 "*"
PACK &&删除带 "*"的记录(物理删除)
ZAP &&删除库中全部记录(物理删除)
SET DELETE ON
? 数据库的过滤
SET FILTER TO [<expL>]
? 数据库的复制
COPY STRUCTURE TO <file> &&复制数据库结构
COPY TO <file>[<scope>] &&复制数据库
COPY TO <file1> STRUCTURE EXTENDED &&生成结构文件
CREATE <file> FROM<file1>
FoxPro For Windows http://cc.synu.edu.cn 21
文件操作:
重命名,RENAME <old file> TO <new file>
删除,ERASE|DELETE FILE<file>|?
拷贝,COPY FILE <old file> TO <new file>
显示目录,DIR [<dev,>][<skel>][TO PRINT]
显示内容,TYPE<file>[TO PRINT]