当前位置:文档之家› VFP第三章表

VFP第三章表

第三章表的创建和使用对于关系型数据库来说,数据均以二维表的形式被保存在表中。

在VFP中表分为两种类型:数据库表和自由表,数据库表是指从属于某个数据库的表(简称―库表‖),而自由表是指不从属于任何数据库的表。

与自由表相比,数据库表具有自由表的所有特性外,还具有数据库管理的其他功能。

3.1 表结构表(Table)是指存储放在磁盘文件中的二维表,一张表保存为一个表文件(.DBF)。

表文件的文件名必须遵守Windows系统对文件名的约定,并且不可用A~J中的单个字母作文件名。

表中的列称为字段(Field)。

字段规定了数据的特征。

例如,学生表中学号、姓名、性别和系名就是字段。

每张表最多可以有255个字段。

表的行叫做记录(Record),每条记录表示一个实体。

记录是多个字段的集合。

同一张表的每一个记录都有相同的字段。

3.1.3 表结构的创建表创建后,系统以扩展名.dbf保存表文件。

如果表中有备注字段或通用字段,则自动地产生与表名相同但扩展名为.fpt的备注文件2. CREATE TABLE-SQLCREATE TABLE-SQL命令的一般格式是:CREATE TABLE 表文件名(字段名1 字段类型[(字段宽度[,小数位数])][NULL|NOT NULL][,字段名2 字段类型[(字段宽度[,小数位数])]]……)说明:本书中命令的表示约定如下:垂直分隔符―|‖分隔的项,表示多项中只能选择一个。

斜体字是占位符,在实际使用中要用具体的信息代替。

方括号[ ]所括的表示是可选项,[ ]本身不是命令的一部分。

省略号―……‖表示参数可以有任意多项。

CREATE TABLE-SQL其中字段类型必须要用字母表示。

例如,学生表结构的创建可以使用以下命令:CREATE TABLE XS2 (xh C(6),xm C(8),xb C(2),zydh C(6),ximing C(18))则XS2表的结构与XS表一模一样。

这个命令主要用在程序代码中。

创建JS表:CREATE TABLE JS (GH C(5), XM C(8),XB L,XDH C(2),GZRQ D, CSRQ D, JBGZ N(7,2),JL M)3. 使用Null 值在建立新表时,可以指定表字段是否接受null 值。

在―表设计器‖的―字段‖选项卡中选定或清除字段的Null 列。

当Null 列被选定时,该字段接受null 值。

或者,在CREATE TABLE 命令中使用NULL 和NOT NULL 子句。

3. 使用Null 值例如,以下命令可以创建ZG表,其中的gh (工号)和xm(姓名)字段不允许为null 值,而csrq(出生日期)字段则允许为null 值:CREATE TABLE zg (gh C(6) NOT NULL, xm C(8) NOT NULL, csrq D NULL)也可以用SET NULL ON 命令控制表字段中是否允许null 值。

3.1.3 修改表结构建立表之后,还可以修改表的结构。

可能要添加、更改或删除字段的名称、宽度、数据类型等。

修改XS表的结构:USE XS && 打开XS表ALTER TABLE TableName ADD|ALTER [COLUMN] FieldName FieldType[(nFieldWith [,nPrecision])] 或ALTER TABLE TableName DROP[COLUMN] FieldName或ALTER TABLE TableName RENAME COLUMN FieldName1 TO FieldName2 ADD增加字段,ALTER修改字段,DROP 删除字段,RENAME字段改名ALTER TABLE - SQL1)添加字段:可使用ALTER TABLE命令的ADD [COLUMN]子句。

例如,可以使用以下命令把―BJMC‖(班级名称)字段添加到XS表中:ALTER TABLE XS ADD COLUMN BJMC C(12)ALTER TABLE - SQL2)重命名字段:可使用ALTER TABLE命令的RENAME COLUMN子句。

例如,可以使用以下命令重新命名XS表的―BJMC‖字段为―BJ‖:ALTER TABLE XS RENAME COLUMNBJMC TO BJALTER TABLE - SQL3)删除字段:可使用ALTER TABLE命令的DROP[COLUMN]子句。

例如,可以使用以下命令从XS表中删掉―BJ‖字段:ALTER TABLE XS DROP COLUMN BJ需要注意:在修改宽度、类型时,是否会引起数据益出、丢失;在修改字段名时,是否会引起数据的丢失以及该字段是否在其他位置被引用。

3.2 表的打开与关闭VFP 在使用一个表时,首先必须把表打开。

一个打开的表必须占用一个工作区。

3.2.1 工作区所谓工作区是指用以标识一个打开的表的区域。

打开一个表时,必须为该表指定一个―工作区‖。

每个工作区有一个编号。

称为工作区号,其编号范围为1~32747(前10个工作区号也可以用字母A~J表示)如果工作区中已有打开的表,可以用表的―别名‖作为工作区号。

默认第一次打开又没有设置别名,那么别名就是表名。

以后看到别名大多数都是指的表名一个工作区中只能打开一个表。

如果在一个工作区中已经打开了一个表,再在此工作区中打开另一个表时,前一个表将自动被关闭。

但可以同时在多个工作区中打开多个表。

一个表也可以在多个工作区中多次被打开。

VFP 正在使用的工作区称为当前工作区,即默认的工作区。

当通过界面交互式地或用命令进行有关表的处理操作时,如果不指定其他工作区,则其作用对象是当前工作区中的表。

VFP启动后,系统默认的当前工作区号为1。

选择工作区格式是:SELECT 工作区号|别名例如,JS表已在2号工作区中打开,当前工作区为1。

要把JS表所在工作区选为当前工作区的命令是:SELECT JS或SELECT 23.2.3 表的打开和关闭在―项目管理器‖窗口中选择需要打开的表后单击―修改‖或―浏览‖按钮时也会自动地打开。

表的这种打开是在当前未被使用的最小工作区中打开,且该工作区为当前工作区。

(2).使用命令打开表在―命令‖窗口或程序中,可以使用USE命令打开一张表。

该命令的基本语法格式:USE TableName[IN nWorkArea|cTableAlis] [AGAIN][ALIAScTableAlias][NOUPDATE]IN子句用于指定表在哪个工作区中打开,缺省时为当前工作区;AGAIN用于说明该表再次打开,即表在多个工作区中同时被打开;ALIAS子句用于定义表的别名,缺省时表的别名一般与表名相同;NOUPDATE指定表打开后不允许修改其结构和数据。

例:下列命令用于打开表可以使用如下命令在当前工作区中打开一个表:USE 表文件名如果要在一个未被使用的区号最小的工作区中打开一个表,可以使用如下命令:USE 表文件名IN 0 或者SELECT 0USE 表文件名在最小未用工作区中打开ZG表,并且不允许修改USE ZG IN 0 NOUPDATE一个表可以在多个工作区中被多次打开。

方法是在再次打开同一个表时,必须在USE命令后面加上AGAIN子句。

例如,USE xsSELECT 0USE xs AGAIN IN 5 &&工作区5别名EUSE xs AGAIN IN 15 &&工作区15别名W15工作区中表的别名表的别名是对工作区中打开的表的一个临时标识。

在工作区中打开表时,可以为该工作区赋予一个自定义的别名。

方法是使用带别名的USE命令:USE 表文件名ALIAS 别名例如,打开XS表,并冠以―STUDENTS‖别名,命令是:USE xs ALIAS STUDENTS工作区表的别名*如果在打开表时没有自定义别名,则系统默认以表文件名作为别名。

例如,用USE xs命令打开xs表,则xs表的别名为―xs‖。

用ALIAS([工作区号])函数可以取得指定工作区表的别名。

如果指定的工作区中尚未打开表,则该函数返回空字符串。

用SELECT([别名])函数可以测试指定别名的工作区区号。

别名在打开表时如果未利用ALIAS子句指定别名,则别名与表名相同,但如果一张表同时在多个工作区中打开均未指定别名,则在第一次打开的工作区中,别名与表名相同,其他工作区中用A~J以及W11~W32747表示。

当前表打开的情况以及表的别名等,用户可以在‖数据工作期―窗口中进行查看。

2. 表的关闭如果在一个工作区中已打开了一个表,当在此工作区中再次打开另一个表时,先前的表将自动被关闭。

另外,可以通过界面操作或命令关闭打开的表。

(1)关闭当前工作区中的表的命令是:USE(2)关闭非当前工作区中的表的命令是:USE IN 别名|工作区或者SELECT 别名|工作区USE(3)关闭所有工作区中的表的命令是:CLOSE ALL 或者CLOSE DATABASES 或者CLOSE TABLES(4)在退出VFP 系统时,所有的表都将被关闭。

3.2.4表的独占与共享使用VFP是一个多用户的开发环境。

网络上的多个用户可以在同一时刻访问一张表。

这种一张表可以同时被多个用户访问的情况,就是表的共享使用。

反之当一个表只能被一个用户打开时,称为表的独占使用。

1.设置独占与共享打开表的默认状态VFP在默认状态下,表是以独占方式打开的。

当打开一个表时,如果没有指定用何方式打开,即用系统默认的方式打开。

系统的默认打开方式可以通过―工具‖菜单中的―选项…‖来设置。

1.设置独占与共享打开表的默认状态或使用SET EXCLUSIVE命令来设置:SET EXCLUSIVE OFF &&设置―共享‖为默认打开方式SET EXCLUSIVE ON &&设置―独占‖为默认打开方式2. 强行用一种方式打开表在打开表时,亦可以用显式指定的独占或共享方式打开。

在―打开‖窗口的右下角有―独占‖复选框,打―√‖表示独占,否则,表示共享。

在―打开‖对话框或―使用‖窗口中也有同样的选择。

强行用一种方式打开表在使用命令打开表时,可以加子句―SHARED‖(共享)或―EXCLUSIVE‖(独占)来指定打开方式。

例如,USE XS SHARED &&以共享方式打开XS表USE JS EXCLUSIVE &&以独占方式打开JS表说明:改变SET EXCLUSIVE的设置并不改变已经打开表的状态。

另外,一个表同时被多次打开时,只以第一次的打开方式为准。

例如,第一次是以独占方式打开一个表,则在另一个工作区中再次打开该表时,即使指定SHARED方式,系统仍将以独占方式打开。

相关主题