二级VF教案 - 图文 下载本文

注:与表名相同的结构索引文件在打开表时都能够自动打开,但是对于非结构索引必须在使用之前打开索引文件,使用SET INDEX TO 命令。 命令格式为:SET INDEX TO IndexFileList 例:USE XS

SET INDEX TO 排名 ORDER 政治 2、设置当前索引:

命令格式为:SET ORDER TO 格式; 例:USE XS

SET ORDER TO 1

例:将结构索引文件中的―订购单号‖设置为当前索引。

SET ORDER TO TAG 订购单号 或者SET ORDER TO 订购单号 3、使用索引快速定位:

命令格式为:SEEK eExpression[ORDER nlndexNumber|[TAG]TagName] [ASCENDING|DESCENDING]

5 SEEK命令只能在索引过的表中使用,并且只能搜索关键字,除非SET

EXACT的设置为OFF,否则匹配指的是完全匹配。

例:假设当前正在使用学生表,将记录指针定位在学号为7785的记录上。 SEEK ?7785‘ORDER 学号

例:先打开学生表,并按―学号‖字段建立索引。然后,用SEEK命令查找与内容变量gxh的值相匹配的索引关键字表达式。 USE XS ORDER 学号 SET EXACT OFF STORE―002‖TO gxh SEEK gxh ORDER 学号 IF FOUND()

DISPLAY FIELDS 学号,姓名 ENDIF

4、删除索引:

在表设计器中删除; 使用命令:

8 DELETE TAG TagName1; TagName1指要删除的索引名; 9 DELETE TAG ALL指删除全部索引。

数据完整性:

主要保证表中数据的正确性即三类:实体完整性、域完整性和参加完整性。 一、实体完整性与主关键字:实体完整性是保证表记录的惟一性,即在一个表中不允许有重复的记录。在VF中是利用主索引或候选索引来实现。

二、域完整性与约束规则:即设置字段值的取值范围。约束规则又称为字段有效性规则,包括三个方面:

??规则:是设置字段值的取值范围(逻辑表达式) ??信息:是违背规则后的提示信息(字符表达式)

??默认值:是表示默认的数据(与该字段值的数据类型保持一致)。

三、参照完整性:跟表之间的联系有关,包含三个方面:更新、删除和插入。设置参照完整性之间必须建立两个表之间的永久联系(物理联系),父表建立主索引,子表建立普通索引。

自由表:

一、创建自由表的方法:

??使用项目管理器: ??使用菜单方式; ??使用命令方法:

格式为:CREATE[FileName |?] 例:CREATE XS 创建学生自由表; 打开表的方法:

??文件??打开: ??USE <文件名??> [ALIAS<别名??>] [IN<工作区号/工作区别名??/表

别名??>] [AGAIN] [Exclusive]/[Noupdate Shared]

命令的功能:在指定的工作区打开表文件。

[IN<工作区号/工作区别名/表别名>]:指定要选择的工作区; [ALIAS<别名>]:为要打开的表指定一个别名;

[AGAIN]:可以在某一工作区中打开其他要在工作区中打开的表; [Exclusive]:以独占方式打开表;

[Noupdate Shared]:以只读方式打开表; 关闭表的方法:

如果已打开一个表,当打开别一个表文件时,系统将自动将先前打开的表关闭。

使用不带任何选项的USE命令,关闭当前已打开的表。 使用Close All命令:关闭所有类型的文件。

使用Close Database命令,关闭已打开的数据库文件、表文件、索引文件等。 使用Close Table命令:关闭当前打开的所有表,不改变当前工作区。 使用QUIT命令,退出VFP系统,关闭所有打开的文件,返回操作系统。 二、将自由表添加到数据库中:

1 使用项目管理器添加自由表; 2 使用数据库设计器添加自由表; 3 使用窗口命令添加自由表;

命令格式为:ADD TABLE TableName|?[NAME LongTableName]

命令说明:TableName指定添加到数据库中的表的名称:?显示―打开对话框,从中可以选择要打开的数据库中的表;

LongTableName:指定表的长名,长名可以包含128个字符,可用来取代所展名为.dbf的短文件名。

例:OPEN DATABASE ―学生管理‖ EXCLUSIVE 以独占方式打开―学生管理‖数据库

ADD TABLE XS 添加―学生‖自由表;

例:将自由表TT添加到当前数据库,并给出具有说明意义的长表名; ADD TABLE TT NAME 2001级学生军训表

注:一个表只能属于一个数据库,当一个自由表添加到某个数据库后就不再是自由表了,所以不能把已经属于数据库的表添加到当前数据库,否则会有出错提示。

从数据库中移去表; ??使用项目管理器; ??使用数据库设计器;

注:以上两种操作是从数据库中移去表,使数据库表成为自由表,所以应该单击“移去”按钮,如果单击“删除”按钮,则不仅从数据库中移去表,并且还将该表文件从磁盘上删除。从数据库移出表后,与之联系的所有主索引、默认值及有关的规则都随之消失。若移去的表在数据库中使用了长表名,移出数据库后长表名将不能再使用。

利用命令窗口方式移去表;

1 命令格式为:REMOVE TABLE TableName|?[DELETE] [RECYCLE] 命令说明:TableName:指定要从当前数据库中移去的表:?显示―移去‖对话框,从中可以选择一个要从当前数据库中移去的表;

DELETE:指定从数据库中移去该表,并从磁盘上删除; RECYCLE:表示把表放入回收站。

例:OPEN DATABASE 学生管理 EXCLUSIVE 打开―学生管理‖数据库; REMOVE TABLE XS 移去学生表。 三、更改表名:

打开要更改的数据表所在的项目——右击要更名的数据表——重命名——输入新名称——确定即可。 四、多个表同时使用;

1、工作区的使用:VF中共有32767个工作区; 工作区号:1-32767

工作区别名:1-10别名为(A-J),11以后的别名是(W11-W32767) 2、选择当前工作区的命令格式:

SELECT <工作区号>|<工作区别名>|<表的别名> 说明:

A:当执行CLOSE ALL关闭所有工作区的所有文件,并返回到第一个工作区。

B:当执行SELECT 0时表示选择到空亲(没有表文件打开)最小(工作区号)工作区作为当前工作区。

C:当使用USE(文件名)IN (工作区号)这种格式时:

表示在指定的工作区打开指定表文件,但当前工作区并没有改变。 D:当使用USE(文件名)IN 0时表示在空闲最小工作区打开指定的表文件,但当前工作区仍然没有改变。 五、表之间的联系:

6 关联的特点是记录指针带动(当父表的记录指针移动时,子表中的记录指

针跟随移动。

7 关联是一种临时性联系也称为逻辑联系。

8 建立关联时在只需对子表建立普通索引,而父表可以不用建立索引。

9 建立关联的命令格式:SET RELATION TO <表达式> INTO <子表别名>|<

子表工作区别名>

注:当临时联系不再需要时可以使用命令SET RELATION TO取消当前表到所有表的临时联系。

取消关联的命令:SET RELATION TO

如果只是取消某个具体的临时联系,应该使用命令:

SET RELATION OFF INTO nworkAree/cTableAlias 例:

OPEN DATABASE 学生管理 USE XS ORDER 学号 USE 排名 ORDER 学号

SET RELATION TO 学号 INTO 排名 通过学号索引建立两个表之间的临时关系。 六、排序:

是将记录按需要的顺序重新排列,产生一个新的数据库文件。实现从物理上对数据库的重新排列。索引可以使用户按照某种顺序浏览或查找表中的记录,这时的顺序是逻辑的,是通过索引关键字实现的。

命令格式:SORT TO TableName ON FileName1[/A] [/D] [/C]

[FieldName2[/A] [/D] [/C]??] [ASCENDING|DESCENDING][Scope] [FOR 1Expression1] [WHILE 1Expression2]

[FIELDS FieldNameList|FIELDS LIKE Skeleton|FIELDS EXCEPT Skeletion] 命令说明:

TableName:为排序后的表名。FieldName、FieldName2为排序的字段,可以在多个字段上进行排序。

[/A] [/D] [/C]:分别表示在升序、降序和排序时不分大小写,系统默认的是升序、区分大小写。

[ASCENDING|DESCENDING]:指出除了用/A或/D指明排序方式的字段名,所有其他排序字段按升或降序。 FOR IExpression1:给出参加排序字段要满足的要求,只有使表达式1Expression为真的记录才可排序。

FIELDS:给出排序以后的表所包含的字段列表,系统默认是原来表中的所有字段。

例:先打开学生表,对女生的记录按政治成绩由高到低,数据学成绩由低到高进行排序。 USE XS

SORT TO XS1 ON政治/D,数学/A FOR 性别=―女‖

关系数据库标准语言SQL

SQL:是结构化查询语言,它包括数据查询、数据定义、数据操纵、数据控制四部分。但在VF中只绍介查询、定义、操纵三个方面。 SQL命令动词: