“计算机操作技术”讲座(12) 数据库(二)

🏠 首页 《无线电》杂志 1995年 🔗 第7期 🔗 第40页 分类:答读者问 🔗 杨锡平 🔗

在上一讲中我们已经介绍了有关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:

提醒用户补选文件名。

命令被接收后,屏幕显示:

图1
图1 🔍原图 (872×109)

这时等待用户定义字段。其中:

①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的结构了:

图2
图2 🔍原图 (891×413)

输入完最后一个字段后,连续按两次回车,这时数据库结构已经建立并存入磁盘,系统提示:

Input data records now?(Y/N)

询问是否输入记录,若回答“Y”,则进入全屏幕输入记录状态,屏幕显示:

图3
图3 🔍原图 (823×312)

此时可在亮条处输入记录,一条记录输入完毕后,系统会自动切换到输入下一条记录。

若在询问提示下回答“N”,则退回到圆点状态,这时只建立了数据库结构,但没有输入记录。

二、数据库的打开与关闭

在使用数据库前必须打开相应的数据库,打开数据库是由USE命令完成的,其一般使用格式为:

.USE<文件名>

其中<文件名>为已经建立的数据库文件名,若不写扩展名,则认为其扩展名为.DBF,若该文件不存在,则系统提示:

File does not exist.

如我们要对已建立的“通信录”数据库进行操作,则应先打开它:

.USE TXL

新建立一个数据库后,该数据库文件是自动打开的,所以不用打开便可对其直接操作。

数据库在使用完毕后应关闭,以免造成数据丢失, 关闭数据库也是由USE命令完成的,只不过其后面不跟参数。如:

.USE

表示关闭当前打开的数据库。

三、数据的录入

数据库建立完毕后下一步的工作首先是录入数据,通常可由APPEND或INSERT来完成。

(1).APPEND命令

其使用格式为

.APPEND[BLANK]

它在当前打开的数据库末尾追加记录。若指定了BLANK,则追加一条空白记录到数据库中并立即返回到圆点状态,若不指定BLANK,则进入全屏幕输入数据记录的状态,如:

.USE TXL

.APPEND

则屏幕显示:

图4
图4 🔍原图 (809×291)

此时可以逐个录入每条记录,录入完毕后,到下一条记录的第一个字段处直接回车便结束录入,返回到圆点状态。

(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

执行结果表示已有四条记录被替换。(杨锡平)