- Visual FoxPro程序设计
- 黄玲芳 刘建兰主编
- 2693字
- 2025-02-20 13:33:59
3.2 创建表
数据库由表和其他数据库对象的集合构成,表在关系数据库中称为“关系”;在VFP 9.0中称为“数据库表文件”,其扩展名为“.dbf”。如果表有中备注型或者通用型字段,则同时创建一个与数据库表文件同名,但扩展名为“.fpt”的备注文件。创建表的次序一般是设计表结构→创建表结构→输入表记录数据。
表可以分为数据库表和自由表,不属于任何数据库而独立存在的表称为“自由表”,后续将详细介绍,本节所指的表是数据库表。
3.2.1 创建数据库表
创建之前要设计表结构,即确定字段及字段参数,包括字段名称、类型、宽度、小数位数,以及是否允许为空等。
(1)字段名(Field Name)。
字段名必须以汉字、字母或下画线开头,最多不超过128个字符,自由表中的字段名不得超过10个字符。
(2)字段类型(Type)。
指定字段存储的数据类型,视具体情况而定。
(3)字段宽度(Width)。
字段允许存放的最大字节数或数值位数,字符型、数值型和浮点型这3种字段的宽度根据所存数据的具体情况规定。其他类型由系统规定,其中货币型、日期型、日期时间型字段的宽度均为8个字节;逻辑型字段的宽度为1个字节;备注型字段和通用型字段的宽度均为4个字节。
(4)小数位数(Dec)。
只有数值型与浮点型字段才有小数位数,小数位数至少应比该字段的宽度值小2。若字段值是整数,则小数位数为0。双精度型字段允许输入小数,但不需事先定义小数位数,小数点将在输入数据时输入。
(5)索引。
指定是否以该字段为关键字创建索引(升序或降序),索引主要用于记录排序,后续会有详细介绍。
(6)是否允许为空。
表示是否允许字段接受空值(NULL),空值指无确定的值,它与空字符串、数值0等不同。例如,基本工资字段空值表示没有确定工资,0则表示0元。一个字段是否允许为空值与其性质有关,如作为关键字的字段不允许为空值。
根据表3-5创建人事表,表结构设计如同设计一个表格。即首先要设计一个表名(如RSB.dbf),然后确定表中的字段(如编号、姓名和性别等)及其类型(如字符型、数值型和日期型等),最后确定字段的宽度。如果是数值型,还要确定小数的位数。
1.菜单方式
例3-3:在RSGZK数据库中创建数据库表RSB.dbf。
操作步骤如下。
(1)打开RSGZK数据库,如图3-5所示。

图3-5 打开RSGZK数据库
(2)单击“数据库设计器”窗口工具栏中的“新建表”按钮,弹出“新建表”对话框,如图3-6所示。

图3-6 “新建表”对话框
(3)单击“新建表”按钮,弹出“创建”对话框,如图3-7所示。

图3-7 “创建”对话框
(4)选择保存的目录并输入表名,在这里输入“RSB”。
(5)单击“保存”按钮,弹出“表设计器-rsb.dbf”对话框,如图3-8所示。

图3-8 “表设计器-rsb.dbf”对话框
(6)打开“字段”选项卡。
(7)按照表3-5所示结构依次输入或选择每一个字段的字段名、类型和宽度等,结果如图3-9所示。

图3-9 输入或选择结果
(8)单击“确定”按钮,在数据库设计器中将显示新创建的表,如图3-10所示。

图3-10 新创建的RSB表
这时表中没有数据,只有表结构,即是个空表。
2.命令方式
(1)格式:CREATE <表文件名>
功能:打开“表设计器”窗口创建表。
说明:如果在该命令之前用OPEN DATABASE命令打开了一个数据库,则创建的是数据库表;否则创建的是自由表。
例:CREATE Gzb &&创建表Gzb.DBF并打开“表设计器”窗口 (2)格式:CREATE TABLE <表文件名>(<字段名><字段类型>(<字段宽度>[, <小数位 数>]……))
功能:SQL语言创建表的方式,详见第4章。
3.2.2 输入表记录
定义表结构后可以输入记录,VFP 9.0提供以下两种数据输入方式。
1.浏览方式
例3-4:在RSB表中输入数据。
操作步骤如下。
(1)打开RSB表所在的RSGZK数据库,然后在“数据库设计器”窗口中选中RSB表。
(2)选择“显示”|“浏览”选项,如图3-11所示,弹出浏览窗口。

图3-11 “浏览”选项
(3)选择“显示”|“追加方式”选项,在弹出的表中逐条输入记录,如图3-12所示。

图3-12 以“追加方式”输入数据
(4)输入备注型字段数据,双击备注型字段的“memo”处,弹出备注型字段编辑窗口,如图3-13所示。

图3-13 备注型字段编辑窗口
输入或编辑当前记录的简历字段的内容,结束后单击关闭按钮或按下Ctrl+W组合键将备注型数据存盘,关闭备注型字段编辑窗口;按下Ctrl+Q组合键则放弃本次输入,关闭备注型字段编辑窗口。
此时“memo”变成“Memo”,表示备注型字段已经输入数据。
(5)输入通用字段数据。
在输入记录窗口中双击通用型字段的“gen”处,弹出通用型字段编辑窗口。选择“编辑”|“插入对象”选项,弹出“插入对象”对话框,如图3-14所示。

图3-14 “插入对象”对话框
● “新建”单选按钮:选择后在“对象类型”下拉列表框中新建一个对象添加到该通用字段中。
● “由文件创建”单选按钮:选择后可以选择一个已经存在的对象添加到该通用型字段中。
结束后单击关闭按钮或按下Ctrl+W组合键,将通用型数据存盘并关闭通用型字段编辑窗口;按下Ctrl+Q组合键则放弃本次输入,关闭通用型字段编辑窗口。
此时“gen”变成“Gen”,表示已经输入数据。
(6)依次输入数据,结果如图3-15所示。

图3-15 输入的结果
2.编辑方式
这种方式的操作过程与浏览方式大致相同,不同之外在于每行只有一个字段。在浏览状态下选择“显示”|“编辑”选项,切换到编辑窗口中输入数据,如图3-16所示。

图3-16 以编辑方式输入记录
3.2.3 自由表与数据库表
自由表和数据库表的扩展名都为.dbf,但数据库表具有一些自由表所没有的属性。二者可以相互转换,当一个自由表被添加到一个数据库中后就成为数据库表;当数据库表从数据库中移出后就成为自由表。数据库表只能属于一个数据库,如果需要将其添加到其他数据库中,应将它变为自由表后添加。我们是在已打开的RSGZK数据库中创建的RSB表,所以RSB表自动成为RSGZK数据库的一部分,是数据库表。
例3-5:创建一个名为“BMDM”的部门代码自由表。
操作步骤如下。
(1)启动VFP 9.0。
(2)选择“文件”|“新建”选项,弹出“新建”对话框。
(3)选择“表”选项,单击“新建”按钮,弹出“创建”对话框。
(4)输入表名“BMDM”,单击“保存”按钮,弹出“表设计器-bmdm.dbf”对话框,如图3-17所示。

图3-17 “表设计器-bmdm.dbf”对话框
例3-6:将自由表BMDM添加到RSGZK数据库中。
操作步骤如下。
(1)打开RSGZK数据库。
(2)选择“数据库”|“添加表”选项,如图3-18所示。

图3-18 选择“数据库”|“添加表”选项
(3)弹出“打开”对话框,选择要添加到当前数据库的自由表BMDM。或者单击“数据库设计器”窗口工具栏中的添加表工具按钮,如图3-19所示。

图3-19 添加表按钮
(4)单击“确定”按钮,选中的自由表添加到指定的数据库中。
在“数据库设计器”窗口中可以看到数据库中增加了一个BMDM表。
例3-7:把数据库表BMDM移出数据库,使之成为自由表。
操作步骤如下。
(1)打开RSGZK数据库。
(2)选择BMDM表。
(3)选择“数据库”|“移去”选项,弹出如图3-20所示的提示对话框。或者单击“数据库设计器”窗口中工具栏中的移动表按钮。

图3-20 移去表的提示对话框
(4)单击“移去”按钮,BMDM表变为自由表。