在上一讲中我们已经介绍了有关Foxbase的一些基本知识,这里我们将对其基本操作命令作简要的介绍。
一、数据库的建立
对任何数据库进行操作前必须建立该数据库。对Foxbase而言,建立一个数据库实际上是建立一个数据库文件。数据库文件由两部分组成:结构定义部分和数据部分。结构定义部分用于描述数据的存放形式以及存放顺序,包括各个字段的名称、数据类型、宽度及小数位位数等。数据部分是数据库文件的主体,它是按照结构说明存储的有序数据集合。
建立数据库是通过CREATE命令来完成的,它的一般格式为:
.CREATE <文件名>
其中<文件名>可以是任何DOS合法的文件名,如果不指明扩展名,则系统认为其扩展名为.DBF,并会自动加到主文件名后。
如要建立数据库文件TXL.DBF,它具有以下结构:
姓名 性别 年龄 电话号码 工作单位
则可以在Foxbase圆点提示符下输入:
.CREATE TXL.DBF可省略)
如果磁盘上已有一个名为TXL.DBF的文件,则Foxbase会提示:
C:\FOX\TXL.DBF already exists,overwrite it?(Y/N)
若以新建的数据库文件取代原数据库文件,可回答“Y”,否则回答“N”,命令便不再执行。
如果命令中漏写了文件名,Foxbase将提示:
Enter the name of the new file:
提醒用户补选文件名。
命令被接收后,屏幕显示:

这时等待用户定义字段。其中:
①field name为字段名,它必须以汉字或字母开头,最多可有10个英文字符或5个汉字。
②type为字段的数据类型,共有五种:
Character:字符型
Numeric: 数值型
Data: 日期型
Logical: 逻辑型
Memo: 明细型
可输入每种类型的第一个字母来选择该类型,也可用空格键来选择、切换类型。
③Width为字段宽度。只能为Character或Numeric类型字段指定宽度,Date型字段的宽度为固定值8,Logical为1,Memo为10,这三种类型的字段宽度是由系统指定的,不能改变。
④dec为数值型字段的小数位位数,它必须小于或等于Width-2(由于Width包含了小数点和至少一个整数位)。
有了上述知识后,我们便可定义“通讯录”数据库TXL.DBF的结构了:

输入完最后一个字段后,连续按两次回车,这时数据库结构已经建立并存入磁盘,系统提示:
Input data records now?(Y/N)
询问是否输入记录,若回答“Y”,则进入全屏幕输入记录状态,屏幕显示:

此时可在亮条处输入记录,一条记录输入完毕后,系统会自动切换到输入下一条记录。
若在询问提示下回答“N”,则退回到圆点状态,这时只建立了数据库结构,但没有输入记录。
二、数据库的打开与关闭
在使用数据库前必须打开相应的数据库,打开数据库是由USE命令完成的,其一般使用格式为:
.USE<文件名>
其中<文件名>为已经建立的数据库文件名,若不写扩展名,则认为其扩展名为.DBF,若该文件不存在,则系统提示:
File does not exist.
如我们要对已建立的“通信录”数据库进行操作,则应先打开它:
.USE TXL
新建立一个数据库后,该数据库文件是自动打开的,所以不用打开便可对其直接操作。
数据库在使用完毕后应关闭,以免造成数据丢失, 关闭数据库也是由USE命令完成的,只不过其后面不跟参数。如:
.USE
表示关闭当前打开的数据库。
三、数据的录入
数据库建立完毕后下一步的工作首先是录入数据,通常可由APPEND或INSERT来完成。
(1).APPEND命令
其使用格式为
.APPEND[BLANK]
它在当前打开的数据库末尾追加记录。若指定了BLANK,则追加一条空白记录到数据库中并立即返回到圆点状态,若不指定BLANK,则进入全屏幕输入数据记录的状态,如:
.USE TXL
.APPEND
则屏幕显示:

此时可以逐个录入每条记录,录入完毕后,到下一条记录的第一个字段处直接回车便结束录入,返回到圆点状态。
(2).INSERT命令
其使用格式为
.INSERT[BEFORE][BLANK]
它在当前打开的数据库的当前记录前(如指定BEFORE)或后(如不指定BEFORE)插入一条记录,但每次只能插入一条记录,其余与APPEND相同。
若TXL.DBF中已有如下记录:
Record#姓 名 性别 年龄 电话号码 工作单位
1 张小红 女 20 2456783 邮电部
2 王 刚 男 30 8556332 化工厂
3 李志坚 男 35 7756666 电视台
4 黄 海 男 28 6675883 无线电厂
则执行以下命令:
.USE TXL
.INSERT BEFORE
并输入以下记录:
姓名 刘娟
性别 女
年龄 25
电话号码 3205454
工作单位 报社
则该记录被插入到第一条记录,原有记录向后顺移。数据库TXL.DBF变为:
Record# 姓名 性别 年龄 电话号码 工作单位
1 刘 娟 女 25 3205454 报社
2 张小红 女 20 2456783 邮电部
┆
四、数据检索
数据检索是指从已有的数据库数据中检索到所期望的数据,这是数据库操作中最基本也是最重要的操作之一。
(1).LIST命令
其使用格式为:
.LIST[<字段名>][FOR<条件>]
它列出当前打开的数据库中满足<条件>的字段值。如:
.USE TXL
.LIST 电话号码 FOR姓名="张小红"
表示检索“张小红”的电话号码。若不指定[<字段名>],则列出满足<条件>的所有字段值,若不指明[FOR<条件>],则列出所有记录。如:
.USE TXL
.LIST
将列出数据库TXL中的所有记录。
(2).DISPLAY命令
其使用格式为:
.DISPLAY[<范围>][<字段名>][FOR<条件>]其中:
“范围”可以是:
①ALL:所有的
②NEXT<n>:从当前记录开始的n个记录
③RECORD<n>:第n条记录
④REST:从当前记录直至最后一条记录
“字段名”为需要列出的字段,若不指明,则为全部。
“条件”用于指定检索条件。
如:
.USE TXL
.DISPLAY
.DISPLAY ALL
.DISPLAY ALL FOR 性别="男"
第一个DISPLAY显示当前记录(第一条记录),第二个DISPLAY显示所有记录,第三个DISPLAY显示所有性别为“男”的记录。
(3).LOCATE命令
LOCATE命令用于将记录指针移至满足某种条件的记录。其一般格式为:
.LOCATE [<范围>][FOR<条件>]
查找顺序由上至下,[<范围>]缺省时认为是ALL。
当查找到第一个满足条件的记录时,就结束查找,并将记录指针移至该记录,屏幕显示:
Record=n
其中n为满足条件的记录号。如果没有查找到满足条件的记录,则记录指针移至文件尾,屏幕显示:
End of Locata scope.
如果查找到满足条件的记录后希望继续往下查找,则可以使用:
.CONTINUE
如:.USE TXL
.LOCATE ALL FOR工作单位="无线电厂"
Record=4
.DISPLAY
Record# 姓名 性别 年龄 电话号码 工作单位
4 黄海 男 28 6675883 无线电厂
.CONTINUE
End of Locate scope.
(4).SKIP命令
上面已多次提到了记录指针,记录指针用于指定当前记录的记录号,当打开一个数据库时,记录指针指向第一条记录,执行LIST命令后,记录指针指向文件结尾,即最后一条记录的后面。如要使记录指针直接指向某条记录,可以使用
.n中n为记录号。如
.USE TXL
.3记录指针指向第三条记录)
.DISPLAY显示当前记录)
Record# 姓名 性别 年龄 电话号码 工作单位
3 李志坚 男 35 7756666 电视台
记录指针也可以来回移动,通过SKIP命令来实现,其一般使用格式为:
.SKIP[n]
其中n为要移动的记录数,若n<0,则向上移动,否则向下移动,n缺省时,SKIP表示向下移动一条记录。如:.USE TXL打开时指向第一条记录)
.KSIP 3向下移三条记录)
Record No.4(当前记录为第四条记录)
.DISPLAY显示当前记录)
Record#姓名 性别 年龄 电话号码 工作单位
4 黄 海 男 28 6675883 无线电厂
.SKIP—2向上移动二条记录)
Record No.2(当前记录为第二条记录)
.DISPLAY显示当前记录)
Record#姓名 性别 年龄 电话号码 工作单位
2 王 刚 男 30 8556332 化工厂
五、数据库的更新与修改
数据库的内容是不断变化的,如某人调动工作单位,那么“电话号码”和“工作单位”字段的值都将发生变化,所以数据库的更新和修改也是非常重要的。
(1).EDIT命令
其使用格式为:
EDIT[<范围>][FIELDS<字段表>][FOR<条件>]
EDIT是一条全屏幕编辑命令,以竖直格式(同APPEND和INSERT)显示并修改字段的内容。
如果指定了FIELDS<字段表>,则只对指定的字段操作,否则对所有字段进行操作。
若未指定[<范围>和[FOR <条件>],则从当前记录开始顺序修改记录。
记录修改完毕后可用Ctrl+End或Ctrl+W退出EDIT,保存所有修改的结果,用ESC或Ctrl+Q也可退出EDIT,但当前记录的修改结果不保存。
(2).BROWSE命令
其使用格式为:
.BROWSE[FIELDS<字段表>]
它的作用与EDIT基本相同,只是在同一屏幕上可修改多条记录。
(3).REPLACE命令
其使用格式为:
.REPLACE[<范围>][<字段名1>WITH<表达式1>,…,<字段名n> WITH<表达式n>[FOR<条件>]
它的作用是用表达式的值取代原字段的值。未指明[<范围>]和[FOR<条件>]时,只对当前记录进行替换。
如“通信录”TXL.DBF中,每过一年,各人的年龄均应增加1,这时便可以使用REPLACE命令:
.USE TXL
.REPLACE ALL 年龄 WITH年龄+1
4 replacements
执行结果表示已有四条记录被替换。(杨锡平)