《数据库》第3章 数据库及其操作_第1页
《数据库》第3章 数据库及其操作_第2页
《数据库》第3章 数据库及其操作_第3页
《数据库》第3章 数据库及其操作_第4页
《数据库》第3章 数据库及其操作_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章VisualFoxPro6.0数据库及其操作

3.1数据库的建立

3.1.1数据库概念

数据库是一个包含多种数据对象的抽象的“容器”,可以简单地理解为存放数据的仓库。

在VisualFoxPro中,数据库可以包括一个或多个表、视图、到远程数据源的连接和存储过程。

在数据库的组织管理下,可以方便灵活地对表、记录、索引、表间关联以及表的参照完整性

进行控制。

3.1.2数据库的建立

数据库是以文件形式存放在磁盘上,称为“数据库文件“,其扩展名为.dbc。可以通过

菜单方式、项目管理器方式和命令方式来创建一个新的数据库。

1、用菜单方式建立数据库

用菜单方式创建新的数据库,可按如下步骤:

(1)在系统主菜单中,选择“文件”下拉菜单中的“新建”命令,或直接单击常用工

具栏上的“新建”按钮,系统将显示“新建”Xj话框。

<2)从“文件类型”选项中选择“数据库”,再单击“新建文件”按钮,出现“创建”

对话框。在“数据库名:”文本框中输入要建立的数据库名,如输入“JXGL”后单击“保存”

按钮,系统就在当前盘的当前目录下生成名为JXGL.dbc的数据库文件,同时打开“数据库

设计器”窗口,并显示“数据库设计器”工具栏。

此时,用户已经建立了一个名为JXGL.dbc的空数据库,此外,系统还会自动生成一个

扩展名为.det的数据库备注文件和一个扩展名为.dex的数据库索引文件。

2、在项目管理器中建立数据库

项目管理器是用于对VisualFoxPro6.。中各种类型的文件进行分类、管理的组织工具。

在VisualFoxPro'。数据库系统中的一个“项目”就是相关程序、数据、文档以及对象集成

在一起的集成体,它以扩展名为.pjx的文件存盘。用户可以通过类似菜单方式创建数据库的

方法创建一个项目。在项目管理器中创建数据库的方法是:打开“项目管理器”,选择项目管

理器中的“数据”选项卡,然后再选择“新建”按钮,其余步骤同菜单方式。

3、命令方式建立数据库

格式:CREATEDATABASE[〈数据库文件名>|?]

功能:创建并打开一个数据库。

说明:

(1)〈数据库文件名〉指定要创建的数据库的名称,命名规则遵循文件名的命名规则,

缺省扩展名为.dbc。

(2)如果缺省<数据库文件名)或使用“?”号,将显示“创建”对话框,提示用户指定

要创建的数据库的名称。

(3)命令方式建立数据库,系统不显示数据库设计器,但确实建立了一个空数据库。

【例3-1】用命令方式创建名为JXGL的数据库。

命令:CREATEDATABASEJXGL

建立好的数据库只是一个数据库的框架,里面还没有数据,用户可以向其中添加冬种数

据库对象,如表、视图、表之间的关系等。

3.1.3数据库的基本操作

在VisualFoxPro6.0中,可以同时打开多个数据库,打开数据库的常用方法有三种:菜

单方式、命令方式和项目管理器方式。

1、数据库的打开

在数据库中建立表或对数据库中的表进行相关操作时,都必须先打开数据库。数据库的

打开,就是指将数据库文件从所在磁盘调入内存。

(1)菜单方式打开数据库

单击工具栏上的“打开”按钮或在系统主菜单的“文件”下拉菜单中选择“打开”命令,

在弹出的“打开”对话框中的“文件类型”下拉列表框中选择“数据库(*.dbc)”,选择数

据库文件所在的文件夹,选择或输入数据库文件名后,单击“确定”按钮打开数据库。

(2)命令方式打开数据库

格式:OPENDATABASE[〈数据库文件名>|?][EXCLUSIVE|SHARED]

功能:打开一个指定的数据库。

说明:

①〈数据库文件名》指定要打开的数据库文件名。如果缺省<数据库文件名〉或使用“?”

号将显示“打开”对话框,用户可以从中选择现有的数据库。

②EXCLUSIVE表示以“独占”方式打开数据库,此时,其他用户在同一时刻无法使用该

数据库,这是系统的默认设置。

③SHARED表示以“共享”方式打开数据库,此时,其他用户也可以在同一时刻使用该

数据库。

④如果缺省EXCLUSIVE或SHARED参数,则系统按照默认方式打开数据库。命令SET

EXCLUSIVEON|OFF可以设置数据库以何种方式打开。

2、设置当前数据库

VisualFoxPro6.0在同一时刻可打开多个数据库,但在同一时刻仅有一个为当前数据库。

在打开多个数据库时,最后一个打开的数据库为当前数据库。使用DBC()函数可返回当前

数据库文件名。

格式:SETDATABASETO卜数据库文件名》]

功能:设置当前数据库。

说明:〈数据库文件名〉用来设置某一个打开的数据库文件为当前数据库。如果缺省,则

所有打开的数据库都不是当前数据库,但数据库都没有祓美闭。

另外,在“常用”工具栏中的“数据库”列表框中显示的是当前数据库的名称。用户也

可以在列表框中选择其他已经打开的数据库成为当前数据库。

【例3-2]打开数据库和设置当前数据库(JXGL和N7DATA这两个数据库文件已经存在)

CLOSEALL

OPENDATABASEJXGL&&打开数据库JXGL.使其成为当前数据库

OPENDATABASEMYDATA&&打开数据库MYDATA,当前数据库变成了数据库MYDATA

SETDATABASEJXGL&&设置数据库JXGL为当前数据库

3、数据库的关闭

当暂时不使用库文件时,应及时关闭数据库以防止意外断电或误操作而破坏数据库文件

中的数据。

格式1:CLOSEDATABASE

功能:关闭数据库和表。

格式2:CLOSEALL

功能:美闭除“命令窗口”、“调试窗口”、“跟踪窗口”和“帮助窗口”以外的所有文件。

4、数据库的删除

当数据库文件不再需要时,可以将其删除。在删除数据库前,应先将其关闭。

格式:DELETEDATABASE〈数据库文件名>[DELETETABLES]

功能:删除指定的数据库文件。

说明:若选择参数DELETETABLES,则删除数据库的同时删除其中的数据库表;否贝1,只

删除指定的数据库,其中的数据库表将变成自由表。

5、数据库设计器的打开

打开数据库文件后往往需要打开数据库设计器进行相关的操作,可以用如下命令打开:

格式:MODIFYDATABASEk数据库文件名》]

功能:在数据库打开的状态下,使用MODIFYDATABASE命令可以打开数据库设计器。

若当前没有打开数据库,使用MODIFYDATABASEv数据库文件名〉可以在打开指定数据库文件

的同时打开数据库设计器;若缺省数据库文件名,系统弹出“打开”对话框,用户可选择要

打开的数据库文件。

3.2数据表的设计与建立

VisualFoxPro6.0数据表分为数据库表和自由表两种,当某一个表不从属于任何一个数

据库的时候就是一个自由表。一个自由表可以被添加到某一个数据库中成为从属于该数据库

的数据库表;反之,一个从属于某个数据库的数据库表乜可以从该数据库中移出,使其成为

自由表,两者可以相互转换。

下面以建立“教学管理系统”中所涉及的学生档案表XSDA.dbf和成绩表XSCJ.dbf的设

计与建立过程为例,具体介绍VisualFoxPro6.0系统中数据表的设计与建立。学生档案表

XSDA.dbf和成绩表XSCJ.dbf分别如表3-1和表3-2所示。

表3-1学生档案表XSDA.dbf

学号姓名性别出生日期是否团籍贯简历照片

00001李平男12/11/78F江苏MemoGen

00002陈遥女12/24/80F湖南MemoGen

00003李彤女10/16/77F江苏MemoGen

00004刘玲女10/15/78F浙江MemoGen

00005王国胜男05/05/82T北京memoGen

00006王刚男04/21/88T安徽memoGen

00007宋海英女10/01/86T浙江MemoGen

表3-2成绩表XSCJ.dbf

学号高等数学英语计算机基础马哲总分

0000185.086.092.095.0

0000230.077.067.085.0

0000396.087.095.095.0

0000441.054.064.085.0

0000570.069.076.085.0

0000660.074.071.085.0

0000762.046.067.075.0

3.2.1表结构的设计

设计表的结构即定义表的字段个数、字段名、字段类型、字段宽度、小数位数、索引和

NULL等特征。

1、字段名

字段名用来标识字段,它是一个以字母或汉字开头,由字母、汉字、数字、下划线组成

的字符序列,字段名中不能包含空格,如:XH、学号、姓名、性别、SCOREJSJ等。自由表

中字段名长度不能超过10个字符,数据库表中字段名长度最多可达128个字符。

2、字段类型和宽度

字段类型决定了存储在字段中的值的数据类型及取值范围。字段可以通过宽度决定允许

存储数据的最大字节数。VisualFoxPro6.0中常用的字段类型包括:

(1)字符型:可以是英文字母、汉字、数字等各种字符型文木,所占用的宽度为1~254

个字节,如学生档案表XS3A中的“姓名”字段的数据类型可以设置成字符型。

(2)货币型:货币单位,如商品的价格。货币型数据的表示方法是在数据前加符号

(3)数值型:可以是正数或负数,也可以是整数或小数,数据长度最多为20位。如成

绩表XSCJ中的“高等数学”字段的数据类型可以设置成数值型。

(4)浮点型:功能上类似于“数值型”,其长度在表中最长可达20位。

(5)日期型:由年、月、日构成的数据类型,如学生档案表XSDA中的“出生日期”字

段的数据类型可以设置成FI期型。

(6)日期时间型:由年、月、日、时、分、秒构成的数据类型,如学生上课的时间。

(7)双精度型:双精度数值类型,一般用于要求精度很高的数据。

(8)整型:不带小数点的数值类型,其优点在于比其他数值型数据占据的存储空间要

小,它只用4个字节,简记I型。

(9)逻辑型:值为“真"(.T.)或“假”(.F.),如学生档案表XSDA中的“是否团员”

字段的数据类型可以设置成逻辑型。

(10)备注型:不定长的字符型文本,如用于存放个人简历等。备注型数据类型的固定

长度为4个字节,但实际长度仅受磁盘存储空间限制,并且所保存的数据信息实际上并不存

放在表文件中,而是存放在与表文件同名,扩展名为.Fpr的文件中。例如,学生档案表XSDA

中的“简历”字段由于每个学生的简历长短不一,若把“简历”字段设置成字符型又恐受到

字符型最大长度不能超过254个字节的限制,因此,通常把它设置成备注型字段。

(II)通用型:用于标记电子表格、文档、图片等OLE对象。与备注型字段一样,通用

型这种数据类型的固定长度也为4个字节,但实际长度仅受磁盘存储空间限制,并且所保存

的数据信息也是存放在与走文件同名,扩展名为.FPT的文件中。例如,学生档案表XSDA中

的“照片”字段的数据类型可以设置成通用型。

3、小数位数

只有数值型、双精度和浮点型字段可以规定小数位。小数点和正负号都需在字段宽度中

占一位,所以,对于纯小数,其小数位的取值至少应比字段宽度少1位。

4、索引

指定是否以该字段为关键字建立索引(升序或降序),索引主要用于记录排序。

5、NULL

指定该字段是否可以接收NULL值(空值),NULL值等价于空值或还没有确定的值,它与

0、空串及空格不同。例如,成绩表XSCJ.dbf中的“高等数学”字段,其空值可能表示没有

成绩,而数值。表示成绩为0分。.NULL.作为一个值可以给变量赋值,在条件表达式中如遇

NULL值,该表达式为假(.F.)。在交互方式中,以Ctrl+O来向一个允许NULL的值的字段中

输入NULL值。

以学生档案表为例,建立一个数据表XSDA.dbf,其结构如表3-3所示。

表3-3"XSDA.dbf”表结构

字段名类型宽度小数位数

学号字符型(C)5

姓名字符型(C)8

性别字符型(C)2

出生日期日期型(D)8

是否团员逻辑型(L)1

籍贯字符型(C)1()

简历备注型(M)4

照片通用型(G)4

3.2.2表结构的建立

确定表结构之后,下一步就要根据表3-3建立表的结构。在创建表时,如果当前没有打

开任何数据库,则创建的表就是自由表;否则,创建的就是从属于当前数据库的数据废表。

在VisualFoxPro6.0中一般通过表设计器来建立表结构,下面就以学生档案表XSDA.dbf为

例,介绍通过菜单和命令两种方式来建立其表结构。

1、设置默认目录

为了方便用户对文件的操作和管理,一般需要将其存放在一固定文件夹中,可通过设置

默认目录的方式来完成。如将默认目录设置成:D:\vfp的方式有如下2种:

(1)菜单操作方式

①启动VisualFoxPro6.0,在系统主菜单中,选择“工具”下拉菜单中的“选项”命令,

在弹出的“选项”对话框中选择“文件位置”选项卡。

②在列表中选择“默认目录”选项,并单击“修改”按钮。

③在弹出的“更改文件位置”对话框中,勾选“使用默认目录”复选框,并输入“D:

\vfp",最后单击“确定”按钮保存设置。

(2)命令方式

SETDEFAULTTOD:\vfp

2、菜单操作方式

(1)在系统主菜单中,选择“文件”下拉菜单中的“新建”命令或按“Ctrl+N”键,在

弹出的“新建”对话框中选择“文件类型”为“表”,然后单击“新建文件”按钮,弹出“创

建”对话框,在“输入表名:”文本框中输入表文件的名称为XSDA,并且确认''保存类型”

为“表/DBF后,单击“保存”按钮,弹出“表设计器”对话框。

(2)在“表设计器”对话框中的“字段”选项卡中依次输入已定义好的表XSDA中的字

段名、字段类型和字段宽度等。

(3)确定输入无误后,单击“确定”按钮,出现“是否现在输入数据记录”对话框。

若在对话框中单击“是"按钮即进入数据(记录)输入南口,用户可直接输入该表的记录;

若单击“否”,则系统保存该表的结构,待以后再输入记录。一般选择“是”,依次输入每个

学生的记录数据。

在数据输入过程中,除备注型字段和通用型字段外其他字段可直接输入数据。备注型字

段由于其长度不定,而通用型字段多数是用于存储OLE对象,如图片、声音、电子表格和文

字处理文档等,其长度也存在不确定性,因此,这两种字段数据不能同其他类型的字段一样

在表“编辑”窗口或“浏览”窗口中直接输入。

备注型字段或通用型字段数据的输入方法:

①在表“编辑”窗口或“浏览”窗口下,把光标移到备注型或通用型字段上,双击鼠

标左键(或直接按“Ctrl+Home”键)即可进入备注型或通用型字段的数据编辑窗口。

②若此时输入的是冬注型字段的话,则宜接在此数据编辑窗U中输入;若输入的是通

用型字段的话,则再打开系统主菜单的“编辑”菜单,选择“插入对象”,在弹出的“插入

对象”对话框中进行具体操作。

③输入全部记录数据后,按“Ctrl+W”键或单击数据编辑窗口的“关闭”按钮保存所

输数据,按“Ctrl+Q”键则取消输入。

在记录的浏览窗口中,备注型字段值若以“memo”显示,表示当前记录的备注字段内容

为空,以“Mem。”显示则表示内容不为空;同理,对通月型字段值显示为“gen”或“Gen”。

按以上步骤,我们建立了一个有若干条记录,每个记录有8个字段的学生档案表

XSDA.dbfo

3、命令方式

格式:CREATE[<表文件名>]

功能:打开表设计器,创建表。

说明:

(1)如果在该命令之前,打开了数据库,则创建的是数据库表,否则创建的是自由表。

(2)若在文件名前指定了路径,则文件建立在指定的路径上,否则建立在当前默认的

路径上。

(3)〈表文件名)指定要创建的表的名称,缺省扩展名为.dbf。不要用A〜J单个字母作

为表文件名,因为它们是专门用于工作区别名的。

(4)若表中定义了备注型字段或通用型字段,则系统会同时建立一个主文件名与表文

件同名且以.fpt为扩展名的表备注文件。

3.2.3表结构的修改

表结构的修改主要包括添加和删除字段;修改字段名称、数据类型、字段宽度、小数位

数;是否允许字段为WLL值;添加、删除和修改索引标识等。在VisualFoxpro6.0中表结构

的修改主要在表设计器中进行,修改某个表的结构通常首先打开该表文件,然后再打开“表

设计器”对话框。

1、菜单方式

(I)在系统主菜单中,选择“文件”下拉菜单中的“打开”命令或按“Ctrl+O”键,也

可以单击工具栏上的“打开”按钮,在“打开”对话框中选择“文件类型”为“表G.dbf)”,

选择表所在的文件夹,找到表文件后,双击要打开的表。

(2)在系统主菜单中,再选择“显示”下拉菜单中的“表设计器”命令,在打开的“表

设计器”对话框中进行表结构的有关修改。

2、命令方式

(1)使用USE命令打开表;

(2)使用MODIFYSTRUCTURE命令打开“表设计器”对话框,然后修改表结构。

3.3数据表的基本操作

3.3.1表的打开与关闭

1、表的打开

表建立好后,若要进行表的操作,如修改表结构、修改表记录或删除表记录等,必须首

先打开表,使该表成为当前表。打开表除了可以采用上面介绍过的菜单方式外,还可以使用

命令方式。

格式:USE[<数据库名!>]<表名>

功能:打开表。

说明:如果是自由表,则可以直接使用USE〈表名>打开。如果是数据库表,可以采用两

种命令方式打开,一种是:USE〈数据库名!X表名〉,另一种是:先用OPENDATABASE〈数据库

名》打开数据库,然后再用USE<表名》打开表。

【例3-3】用命令方式打开数据库JXGL中的数据库表XSDA.dbf(假设文件存放在默认的

路径上)。

方法一:USEJXGL!XDSA&&“!”与前面的数据库名以及后面的表名之间不能加空格

方法二:OPENDATABASEJXGL

USEXSDA

2、命令方式关闭表

格式:USE

功能:关闭当前工作区中的表。

3.3.2表记录的浏览

1、菜单方式

打开要操作的表,在系统主菜单中,选择“显示”下拉菜单中的“浏览”或“编辑”命

令,打开表的“浏览”或“编辑”窗口。

2、命令方式

格式1:BROWSE[FIELDS〈字段名表》][FORWHILE〈条件》]

格式2:DISPLAY[<范围>][[FIELDS]<字段名表》][F()R|WHILE<条件>]

[TOPRINT][OFF]

格式3:LIST[〈范围〉][[FIELDS]<字段名表》][FOR|WHILE<条件>]

[TOPRINT][OFF]

功能:显示已打开表文件的记录内容。其中BROWSE命令执行时打开“浏览”窗口。

说明:有“OFF”时,不显示记录号;有“TOPRINT”时,显示内容送打印机打印;有“TO

FILE<文件名)”则表示将显示的内容存入指定的文件中保存起来。

LIST和DISPLAY命令的区别:

(1)省略〈范围〉时,LIST默认值为ALL,显示所有记录;省略<范围〉和〈条件〉时,DISPLAY

默认值为当前记录,即显示一个记录。

(2)当显示内容较多时,DISPLAY分页显示;LIST不分页,而是连续地滚动显示。

【例34】显示学生档案表XSDA.dbf中的记录示例。

USEXSDA

DISPLAY&&显示表XSDA.dbf的当前记录

运行结果:

记录号学号姓名性别出生日期是否团员籍贯简历照片

100001李平男12/11/78.F.江苏Memogen

DISPLAYNEXT3FIELDS姓名,是否团员

运行结果:

记录号姓名是否团员

1李平.F.

2陈遥.F.

3李彤.F.

3.3.3表记录的定位

在VisualFoxPro6.D系统内部,有一个用以确定当前记录的记录指针,记录指车一指向

哪一个记录,这一个记录就是当前操作的记录,即当前记录。

当表打开且没有进行任何操作时,当前记录为第一人记录。表文件一旦打开,表中的记

录指针是可以移动的,表记录的定位,实质上就是确定哪一个记录为当前记录。表记录的定

位主要有绝对定位(GO或GOTO)和相对定位(SKIP)两种方式。

1、菜单方式定位记录

首先打开要使用的表;然后在系统主菜单中,选择“显示”卜.拉菜单中的“浏览”命令;

再打开系统主菜单中的“表”菜单,选择“转到记录”,子菜单不同的选项可以将记录指针

移动到相应的记录上。

2、命令方式定位记录

(1)绝对定位(GO)

格式:GO<数值表达式》TOPBOTTOM

功能:不考虑当前记录指针的位置,将记录指针直接定位到指定的记录上。也就是说,

绝对定位命令与当前记录位置无关。

说明:

①《数值表达式>:指定•个物理记录号,记录指针移至该记录上。〈数值表达式>的值必

须大于0,且不大于当前表文件的记录个数。

②TOP:将记录指针定位在表的第一个记录上。

③BOTTOM:将记录指针定位在表的最后一个记录上。

(2)相对定位(SKIP)

格式:SKIP[〈数值表达式)]

功能:从当前记录开始向前或向后移动记录指针,〈数值表达式>表示移动记录的个数。

说明:若〈数值表达式)的值为负数,则记录指针向前移动,若〈数值表达式〉的值为正数,

则记录指针向后移动。使用不带参数的SKIP命令将使记录指针向后移动一个记录,即SKIP

等价于SKIPlo

【例3-5】绝对定位和相对定位命令的使用示例。

CLEAR&&清屏:清除整个屏幕,光标回到屏幕左上角

USEXSDA

SKIP5&&将记录指针下移5个记录

DISPLAY&&显示当前记录,即第6条记录

7&&将记录指针绝对定位至7号记录

DISPLAY

SKIP-2&&将记录指针上移2,即第5条记录

LISTNEXT3&&从当前记录第5条记录开始,连续显示3个记录

运行结果:

记录号学号姓名性别出生日期是否团员籍贯简历照片

600006王刚男04/21/88.T.安徽memogen

记录号学号姓名性别出生日期是否团员籍贯简历照片

700007宋海英女10/01/86.T.浙江MemoGen

记录号学号姓名性别出生日期是否团员籍贯简历照片

500005王国胜男05/05/82.T.北京memogen

600006王刚男04/21/88.T.安徽memogen

700007宋海英女10/01/86.T.浙江MemoGen

3.3.4表记录的修改

1、在“浏览”窗口修改表记录

用菜单方式或BROWSE命令打开“浏览”窗口,在“浏览”窗口中可进行全屏幕编辑修

改表记录,修改完毕,按“Ctrl+W”键或单击“关闭”按钮存盘退出“浏览”窗口。

2、在“编辑”窗口中修改表记录

格式:

EDIT[<范围>][FIELDS〈字段名表>][FOR|WHILE<条件)]

CHANGE卜范围>][FIELDS〈字段名表>][FOR|WHILE〈条件>]

功能:这两条命令的格式、功能相同,以竖直编辑窗口显示、编辑与修改表中的记录。

说明:执行命令后,系统打开“编辑”窗口,以竖直格式显示各个字段的内容,此时,

可对记录内容进行修改。

3、用REPLACE命令宜接修改表记录

REPLACE是系统自动修改命令,它可快速修改一批记录的数据,在命令操作或程序控制

中十分有用。

格式:REPLACE[〈范围〉]〈字段名1〉WITH〈表达式1>[ADDITIVE]

[,〈字段名2>MTH〈表达式2>[ADDITIVE]•­­][FOR<条件>|WHILE<条件>]

功能:不进入全屏幕编辑方式,根据命令中指定的条件和范围,用表达式的值去更新指

定字段的内容。

说明:

(1)〈字段名1>WITH<表达式1>[,<字段名2〉WITH<表达式2>…]:

指定用<表达式1>的值来代替<字段名1>字段中的数据,用<表达式2>的值来代替<字段

名2》字段中的数据,依此类推。

(2)〈范围》:指定要替换的记录范围。F()R<条件》:指定要进行替换字段值的记录应满足

的条件。注意:当〈范围>、<条件)都缺省时,REPLACE命令仅对当前记录操作。

(3)ADDITIVE:把对备注字段的替代内容追加到备注字段原内容的后面。ADDITIVE只对

替换备注字段有用。如果省略ADDITIVE,则用表达式的值改写备注字段原有内容。

【例3-6】REPLACE命令使用示例,计算成绩表XSCJ.dbf所有同学的“总分”字段值。

CLOSEALL

USEXSCJ

REPLACE总分WITH英语+高等数学+计算机基础+马哲ALL

注意:此例子中的REPLACE命令一定要加范围子句ALL,因为在缺省情况下,REPLACE

命令仅对当前记录操作,而不是全部记录。

3.3.5表记录的追加与插入

记录的追加就是在当前打开的表文件尾部,追加一些新的记录。使用菜单方式和APPEND

命令均可实现追加新记录的功能。若要在表文件的任意位置插入新记录,则可使用INSERT

命令。

1、菜单方式追加表记录

方法一:打开表,进入“浏览"窗口,然后在系统主菜单中,选择“表”下拉菜单中的

“追加新记录”命令或单击快捷键"Ctrl+Y”,此时便在表尾追加了一条新的空记录,用户

即可向该空记录中输入数据。若要再追加一条记录,重复操作即可。

方法二:打开表,进入“浏览"窗口,然后在系统主菜单中,选择“显示”下拉菜单中

的“追加方式”命令,则在记录录入时,系统又自动追加另一条空记录供用户录入,直至追

加完成,这种方法可以连续追加多条记录。

2^命令方式追加表记录

格式:APPEND[BLANK]

功能:在当前打开的表文件尾部追加记录。

说明:BLANK是可选项,无此项时,在表末尾追加一条空白记录,同时打开“编辑”窗口

可对该空白记录进行编辑;有此项时,系统只在表末尾追加一条空白记录,但不马上进入“编

辑”窗口,用户其后可以使用BROWSE、CHANGE、ED用或REPLACE命令编辑该空白记录。

【例3-7】打开学生档案表XSDA.dbf,向其中追加一条空白记录,然后用REPLACE命

令编辑该记录的“学号”字段值为“00008",“姓名”字段值为“马林”,“性别”字段值为

“男二

CLOSEALL

USEXSDA

APPENDBLANK&&在表XSDA尾部追加一条空白记录

REPLACE学号WITH”00008”,姓名WITH“马林”,性别WITH"男”

3、外部追加

将另一个表文件的记录追加到当前表的尾部。

(1)菜单方式

首先打开表,然后在系统主菜单中,选择“显示”下拉菜单中的“浏览”命令,再在系

统主菜单中,选择“表”下拉菜单中的“追加记录(A)...”,打开“追加来源”对话框。

(2)命令方式

格式:APPENDFROM<表文件名>|?[FIELDS〈字段名表〉]

功能:将其他表文件中的记录追加到当前表的尾部。

说明:如含FIELDS〈字段名表),则仅追加指定的字段。

4、记录的插入

格式:INSERT[BEFORE][BLANK]

功能:在当前表中插入一个新记录。

说明:

①无任何选项时,在表的当前记录之后添加一个新的记录,同时打开“编辑”全屏幕

窗口,供用户编辑该记录数据。

②含“BEFORE”选项时,新记录插入在当前记录的前面。

③含“BLANK”选项时,不进入“编辑”窗口,而是自动插入一条空白记录。

3.3.6表记录的删除与恢复

在VisualFoxPro6.。中提供了逻辑删除和物理删除两种删除方式。对记录的删除需分

两步进行:先对欲删除的记录标上删除标记(即逻辑删除),然后再将带删除标记的记录一次

性从表中清除(即物理删除)。逻辑删除是为了防止误删除操作,只是在要删除的记录前加

上删除标记,经逻辑删除的记录仍存在于数据表内,用户还可以将其恢®:,即去除删除标记,

而物理删除是将记录真正地删除,无法恢复。

1、记录的逻辑删除与恢笈

首先打开一个表,然后在系统主菜单中,选择“显示”下拉菜单中的“浏览”命令,打

开表“浏览”窗口。

(1)直接用鼠标操作

①逻辑删除

单击要删除的记录的左侧矩形域,该区域就变黑,即表示该记录已被标上删除标记,下

图表示学号为“00004”论记录被逻辑删除。用此方法乜可给多条记录加上逻辑删除标记。

玲怖总分1

000()1«€>.O85.O92.O95.0O.O

<)000277.O30.()67.O«5.OO.O

<)0003«7.O96.OOOO.O

00004O141.0M4.()«5.()O.()

0000569.O70.O76.O86.OO.O

0000674.O30.。71.0«5.OO.O

00007O62.()67.()75.OO.O

②恢复记录

标上删除标记的记录只是逻辑上被“删除”,并未从表中真正删除,若想恢复被逻辑删

除的记录(即取消删除标汜),可用鼠标再次单击记录左侧矩形域,黑色矩形域会变白,即

恢复记录。

(2)菜单方式

若要一次删除一组特定条件和范围的记录,可在系统主菜单中,选择“表”下拉菜单中

的“删除记录(D)...”命令,在弹出的“删除记录”对话框中输入删除记录的作用范围

和条件,单击“删除”按钮即可。若要一次恢复满足一定条件和范围的记录,可从“表”菜

单中选择“恢复记录(E)”命令,在弹出的“恢复记录”对话框中输入恢复记录的作用

范围和条件,单击“恢复记录”按钮即可。

2、记录的物理删除

若要从表中彻底删除标有删除标记的记录,可在系统主菜单中,选择“表”卜拉菜单中

的“彻底删除(M)”命令,在弹出的“确认删除”对话框中若单击“是”按钮,将彻底删除

标有删除标记的记录,被删除的记录将无法再恢复。

3、删除与恢复记录的命令方式

(1)逻辑删除记录

格式:DELETE[〈范围)][FOR<条件>"HILE<条件>]

功能:对当前表文件中指定范围内满足条件的记录加删除标记。用户若用LIST显示表记

录,会看到记录号和第一个字段名间出现“*”号(删除标记)。若省略〈范围〉和<条件),则

只给当前记录加删除标记C

说明:可以用SETDELETEDON命令将作过删除标记的记录暂时“隐藏”起来,以后要消

除“隐藏”,只要输入SETDELETEDOFF命令即可。

(2)恢复逻辑删除的记录

格式:RECALL[〈范围》][FOR〔WHILE<条件>]

功能:恢复满足一定条件和范围的记录。无任何选项时,只恢复当前记录。

(3)物理删除有删除标记的记录

格式:PACK

功能:把作过逻辑删除标记的记录从表文件中永久删除,并将记录号重新排列。

(4)物理删除表中全部记录

格式:ZAP

功能:物理删除当前表文件中的所有记录,仅保留表的结构。它相当于执行DELELEALL

和PACK两条命令。

【例3-8】删除记录示例。

CLOSEALL

USEXSDA

CLEAR&&清屏

LIST&&显示表的全部记录

GO2&&定位到第二条记录

DELETE&&逻辑删除当前记录

DELETEALLFOR是否团员=.口&&将不是团员的所有记录标删除标记

LIST

RECALLALL&&恢复所有标删除标记的记录

LIST

GO6

DELETE

PACK&&物理删除标删除标记的记录

LIST

3.3.7表与表结构的复制

对已有的表进行复制以得到它的一个副本,是保护数据安全的措施之一。

1、复制任何类型文件命令

格式:COPYFILE<文件名1>TO<文件名2>

功能:从<文件名1>文件复制得到《文件名2>文件。

说明:

<1)若对表进行复制,该表必须处于关闭状态。

(2)〈文件名1》和〈文件名2》都可使用通配符*号和?号。

2、从表复制出表或其他类型的文件命令

格式格OPYTO〈文件名>[范围][FOR<条件1>][WHILE〈条件2>]

[FIELDS<字段名表》FIELDSLIKE<通配字段名〉1FIELDSEXCEPT〈通配字段名>]

[[TYPE][SDF|XLSDELIMITED[WITH<定界符>|WITHBLANK|WITHTAB]]]

功能:将当前表中选定的部分记录和部分字段复制成一个新表或其他类型的文件。

说明:

(1)首先要打开原表。

(2)对于含有备注型字段的表,系统在复制扩展名为.dbf文件的同时自动复制扩展名

为.fpt的备注文件。

(3)复制所得的新表必须被打开,也即被选作为当前表后才可进行表的操作。

(4)新文件的类型除了可以是表之外,还可以是系统数据格式、定界格式等文本文件

或MicrosoftExcel文件c若不含TYPE子句,默认新文件的类型是表。

【例3-9]分别利用COPYFILE和COPYTO命令复制学生档案表XSDA.dbf。设表有相

应的备注型文件XSDA.fpt,注意这两个命令在复制表文件时有什么区别。

CLOSEALL

COPYFILEXSDA.DBFTOXSDA1.DBF

COPYFILEXSDA.FPTTOXSDA1.FPT

USEXSDA1

LIST

COPYTOXSDA2

USEXSDA2

LIST

分析:通过此例,可以看出在复制表文件时,尤其是表有备注型字段或通用型字段时,

用COPYTO命令比用COPYFILE命令要方便。

3、复制表结构

格式:COPYSTRUCTURETO<表文件名>[FIELDS〈字段名表》]

功能:将当前打开的表文件结构的部分或全部复制产生<表文件名)所指定的表结构,此

命令仅复制当前表的结构,不复制其中的数据。

说明:FIELDS<字段名表):指定在新表中包含的字段及顺序。若省略该子句,则按字

段原来的顺序复制全部字段。

3.3.8数组和表之间的数据交换

1、将数组各个元素的数据值传输到表中当前记录的指定字段中

格式:GATHERFROM<数组名>[FIELDS〈字段名表[MEMO]

功能:将数组中各个数组元素的内容依次复制到表的当前记录指定的字段中。

【例3-10]利用GATHERFROM命令修改成绩表XSCJ的第7条记录,将第7条记录的英

语、高等数学以及计算机基础成绩分别修改成56分、70分和75分。

DIMENSIONX(3)

X(1)=56

X(2)=70

X(3)=75

USEXSCJ

GO7

GATHERFIELDS英语,高等数学,计算机基础FROMX

DISPLAY

2、将数据表中当前记录的指定字段值传输到数组的各个元素中

格式:SCATTER[FIELDS〈字段名表>][MEMO]TO〈数组名》[BLANK]

功能:将表的当前记录从指定字段名表中的第一个字段内容开始,依次复制到数组中的

各个数组元素中。

【例3-11]利用SCATTERTO命令将学生档案表XSDA.dbf的第5条记录的学号、姓名、

出生日期以及团员否字段的值传输到数组X中。

USEXSDA

GO5

SCATTERFIELDS学号,姓名,出生日期,团员否TOX

?X(1),X(2),X(3),X(4)

3.4排序与索引

3.4.1排序

1、基本概念

排序是将已建好的表记录按某一关键字规定的顺序重新排列,并将重新排列后的纭果保

存为一个新的表文件,但原文件不变。这个新的表文件内容可同原来的表文件完全相同,也

可以是原来表文件中的一部分。

2、排序命令

格式:SORTTO〈新文件名〉ON<字段名1>[/A][/C][/D][,<字段名2>[/A][/C]

[/D]...]}范围>][FIELDS〈字段名表>][FOR<条件>][WHILE〈条件》]

功能:对当前表记录,按用户指定的字段值重新排序,生成一个以<新文件名)命名的表

文件。

说明:

(1)新文件的默认扩展名为.dbf。

(2)字段可以是N,C,D,L,但不能是M,Go若有多个排序字段时,先按命令中〈字

段名的值顺序排列,<字段名1>值相同则按〈字段名2>值的顺序排列,依次类推。其中<

字段名1〉称为主关键字,这种排序也称为多重排序。

(3)/A表示按升序排列,/D表示按降序排列,缺省时为升序;/C表示排序时字母不分

大小写,它应用于C型字段,若/C和/A或/D结合使用,只需要一个斜线,如/AC或/DC。

(4)<范围〉用于限定SORT命令的作用范围,可为ALL、NEXTN.RECORDN>REST之一,

缺省时为ALL。

(5)若有FIELDS项,则生成的新表文件中只含〈字段名表》中的字段;否则,结构与当

前表文件相同。

【例3-12]对成绩表XSCJ.dbf按“总分”字段值升序排序,排序后生成的的排序文件

名为XSCJl.dbf,且只有学号和总分2个字段。

CLOSEALL

CLEAR

USEXSCJ

LIST

SORTTOXSCJ1ON学号FIELDS学号,总分

USEXSCJ1

BROWSE

运行结果如下图所示c

注意:排序文件建立后,如果要使用该排序文件必须首先打开它,例如用USE命令打开。

学号总分1

8()0007250.0

100006290.0

()000530().0

00004244.0

00003373.0

()0002259.0

()0001358.0

1

3.4.2索引

1、基本概念

记录在数据文件中实际存放的顺序称为记录的物理顺序(记录号反映了记录存放的先后

顺序),而把数据打开后列表显示的顺序称为记录的逻辑顺序(排列顺序)。执行排序后,在

新文件中形成了新的物理顺序;索引文件则不同,它不改变记录的物理顺序,而是按某个索

引关键字(又称为索引表达式)与表记录建立一种逻辑关系。

索引和表分别存储在两个文件中。在索引文件中,只包括索引关键字和记录号两项内容,

所有关键字值按升序或降序排列,每个关键字值对应原表文件的一个记录号,这样便确定了

记录的逻辑顺序。在使用时,只要知道索引关键字的值,就能通过相应的记录号索引到该记

录在原表中的数据。

对同一个表,可根据不同的处理要求建立多个不同的索引文件。索引文件建立以后,也

要打开才能使用。索引文件打开以后,记录指针的移动、定位、记录的显示和处理将按索引

关键字指定的顺序(逻辑顺序)进行。由于索引文件是依赖于表文件而存在的,所以,索引

文件不可单独使用,必须在打开表的同时或之后打开索引文件。

2、索引文件的类型

在VFP中,索引文件可以分为两大类:单索引文件(.idx)和复合索引文件(.cdx),复

合索引文件又分为结构复合索引文件和非结构复合索引文件。

(1)单索引文件

单索引文件只包含一个索引,扩展名为.idx。VFP中提供的单索引文件主要是为了与以

前低版本(如早期版本的FoxBASE+)兼容而使用的。

(2)复合索引文件

复合索引文件可以包含多个索引,每个索引有一个“索引标识”,代表一种记录的逻辑

顺序,扩展名为.cdx。在复合索引文件中,每一个索引标识等价于一个单索引文件。

3、索引类型

索引可分为主索引、侯选索引、普通索引、惟一索引4种类型。

(1)主索引(PrimaryIndex)

作为主索引的索引关键字,其在表中的值是惟一能够标识每个记录的值,它强调“不允

许出现重要值或空值”。只有数据库表能够建立主索引,并且一个数据库表只能建立一个主

索引。

(2)候选索引(CandidateIndex)

候选索引与主索引具有相同的特性。与主索引不同的是,数据库表和自由表均可建立候

选索引,并且一个表可以建立多个候选索引。当数据库表中无主索引时,可以指定一个候选

索引为主索引。

主索引和候选索引能控制表中字段重复值的输入,确保字段输入值的惟一性。

(3)普通索引(RegularIndex)

是一种常规的索引类型,主要用于逻辑排序,以便快速查询。作为普通索引的索引关键

字,其表中不同记录的对应值可重复。数据库表和自由表均可建立普通索引,一个表可以建

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论