在Visual FoxPro(VFP)中,创建表是数据库操作的基础,通过特定的命令可以定义表的结构,包括字段名、字段类型、宽度、小数位数等属性,VFP提供了CREATE命令和SQL CREATE TABLE命令两种主要方式来创建表,其中CREATE命令适用于交互式操作,而SQL命令则更适合程序化批量处理,以下是关于VFP中创建表命令的详细说明。

使用CREATE命令创建表
CREATE命令是VFP中最基础的建表方式,通过交互式对话框定义表结构,执行命令后,系统会弹出“表设计器”窗口,用户可手动设置字段属性。
命令格式:
CREATE [FileName | ?]
FileName:指定表名,若省略则弹出对话框让用户输入;表示强制弹出对话框选择路径和文件名。- 执行后,在表设计器中可定义以下字段属性:
- 字段名:字段的名称,需符合VFP命名规则(以字母、汉字开头,可含数字、下划线,长度不超过10个字符)。
- 类型:支持字符型(C)、数值型(N)、逻辑型(L)、日期型(D)、备注型(M)等13种类型。
- 宽度:字段存储的最大字符数(如数值型需包含小数点和小数位数)。
- 小数位数:仅数值型或浮点型字段有效,默认0位。
- 索引:可设置为主索引、候选索引或普通索引。
- NULL:允许字段为空值(默认为不允许)。
示例:
创建名为“学生信息”的表,包含学号(字符型,10位)、姓名(字符型,8位)、性别(逻辑型)、出生日期(日期型)、成绩(数值型,5位,含2位小数)字段。
CREATE 学生信息
在表设计器中依次设置字段属性后保存,即可生成.DBF表文件。

使用SQL CREATE TABLE命令创建表
SQL CREATE TABLE命令通过代码直接定义表结构,适合自动化操作,支持更复杂的约束条件(如主键、默认值、检查约束等)。
命令格式:
CREATE TABLE TableName (
FieldName1 FieldType1 [(n [, d])][NULL | NOT NULL] [CHECK Expression1] [DEFAULT Value1],
FieldName2 FieldType2 [(n [, d])][NULL | NOT NULL] [CHECK Expression2] [DEFAULT Value2],
...
[PRIMARY KEY FieldNameX]
)
TableName:表名,若未指定路径则默认在当前目录下创建。FieldType:字段类型,需用VFP类型关键字(如C、N、D等)。(n [, d]):数值型字段的宽度和小数位数。CHECK:字段有效性规则(如性别字段限制为.T.或.F.)。DEFAULT:字段默认值。PRIMARY KEY:定义主键字段。
示例:
用SQL命令创建“学生信息”表,并设置学号为主键,性别默认值为“男”(需转换为逻辑值.T.):
CREATE TABLE 学生信息 (
学号 C(10) PRIMARY KEY,
姓名 C(8) NOT NULL,
性别 L DEFAULT .T.,
出生日期 D,
成绩 N(5,2) CHECK 成绩 >= 0 AND 成绩 <= 100
)
创建表时的注意事项
-
字段类型选择:
- 字符型(C)用于文本,如姓名、地址;数值型(N)用于需计算的数值;日期型(D)存储日期;逻辑型(L)存储真/假值;备注型(M)存储长文本。
- 备注型和通用型字段(用于OLE对象)的宽度固定为4字节,实际数据存储在单独的
.FPT文件中。
-
索引与约束:
- 主键(PRIMARY KEY)确保字段值唯一,常用于标识记录(如学号)。
CHECK约束可限制字段范围(如成绩0-100),避免无效数据。
-
表与数据库的关系:
- 若需将表添加到数据库(
.DBC文件),需先打开数据库:OPEN DATABASE 学生管理 CREATE TABLE 学生信息 (...) - 独立表(自由表)不隶属于任何数据库,但可后续添加到数据库中。
- 若需将表添加到数据库(
创建表后的验证
创建表后,可通过LIST STRUCTURE或DISPLAY STRUCTURE命令查看表结构,确认字段定义是否正确:
USE 学生信息
LIST STRUCTURE
相关问答FAQs
Q1:如何修改已创建表的结构?
A1:使用MODIFY STRUCTURE命令打开表设计器进行修改,
USE 学生信息
MODIFY STRUCTURE
注意:修改结构可能导致数据丢失,建议提前备份。
Q2:如何创建包含自动递增字段的表?
A2:VFP本身不支持自动递增字段(如ID),但可通过触发器或程序模拟,在插入记录时使用_VFP.AutoNewID变量生成唯一编号:
CREATE TABLE 订单 (
ID I PRIMARY KEY, // 整型字段
商品名 C(20)
)
插入记录时,通过程序手动赋值ID(如ID = ID + 1),或使用SQL的AUTOINC属性(需VFP 9.0及以上版本)。
