串讲笔试考点(6)

2018-11-18 21:05

要建立结构复合索引,应在INDEX命令中使用 TAG<TagName>参数。

【例】 若要为Student表根据姓名字段建立结构复合索引文件(结构复合索引文件名与表同名,索引标识为姓名),那么应执行如下命令: USE Student

INDEX ON 姓名 TAG 姓名 说明:

(1)前一个“姓名”是索引关键字表达式,后一个”姓名“是索引标识。

(2) 可以多次利用 INDEX命令为结构复合索引文件创建多个其他的索引标识。

【例】 若要为Student表根据学号字段建立结构复合索引文件(索引标识为Dep) USE Student

INDEX ON 学号 TAG 学号

至此,结构复合索引文件Student.cdx中已包含了两个索引标识(姓名和学号)。 3、建立非结构复合索引

要建立非结构复合索引,应在 INDEX命令中使用 TAG <TagName> [OF <CDXFileName>]参数。 【例】 若要为Student表根据高数字段建立非结构复合索引文件(非结构复合索引文件名为new.cdx,索引标识为高数),那么应执行如下命令: USE Student

INDEX ON 高数 TAG 高数 OF new.cdx

(1)其中前一个“高数”索引关键字表达式,后一个“入学成绩”是索引标识,

(2) new.cdx是非结构复合索引文件名。由于非结构复合索引与当前表不同名,所以必须使用OF<CDXFileName>参数指明非结构复合索引文件名。 4、设置复合索引排序方式

建立复合索引文件时,可以使用[ASCENDING/DESCENDING]参数指定某一索引标识是按照升序(ASCENDING)还是降序(DESCENDING)方式进行排序。但是需要注意,在建立单一索引文件时,不能使用「ASCENDING/DESCENDING」参数。这是因为单一索引文件只能按照升序方式进行排序。

【例】 若要为 Student表根据入学成绩字段建立结构复合索引文件,索引标识为new,并且希望按降序方式排序,那么应执行如下命令: USE Student

index On 高数 Tag new DESCENDING 5、设置有条件的索引

要建立有条件的索引,则应在 INDEX命令中使用[FOR

<lExpression>]参数,即在当前表上建立有条件筛选索引,只有符合FOR<lExpression>条件的记录才会出现在索引文件的索引关键字值列表中。 4.4.4 使用索引文件

当要按照某种特定顺序处理记录时,一般要使用刚才我们建立的索引,使用索引一般要经历以下过程:(1)打开表; (2)打开索引文件; (3)确定主控索引文件; (4)对于复合索引,还要确定主控索引。 使用索引时,有时可能打开了多个索引文件,但每一时刻只有一个索引文件起作用,称为主控索引文件。 当主控索引文件为结构复合索引文件时,由于其内部具有多个索引标识,要使用某个索引标识,还要设定当前起作用的索引标识,被设置为当前索引的标志称为主控索引。 要设置主控索引文件或主控索引可由后面的命令SET ORDER 命令实现。 1、打开索引文件

命令格式:SET INDEX TO

命令功能:该命令用于打开一个或多个索引文件。 2、设置当前索引

对于打开了多个索引文件或打开了某个结构复合索引文件,要使用索引来对表中记录进行操作处理,还

应设定某个索引文件或索引标志为主控索引文件或主控索引。设置命令如下所示: 命令格式

SET ORDER TO [TAG]<TagName>[ASCENDING | DESCENDING]] 命令功能该命令用于设置当前索引。 命令说明

(1)TAG<TagName>用于指定结构复合索引中某个索引标志为主控索引。 (2)[ASC | DESC]用于重新指定索引排序 3、关闭索引文件

命令格式:SET INDEX TO

命令功能:该命令用于关闭已打开的索引文件。 4、利用索引快速定位 建立索引有两个目的:

(1)可以据任务的需要对表中随机存储的记录进行逻辑排序。

(2)按照指定条件在表中查找所需记录。Visual FoxPro提供了基于索引的快速查询命令SEEK。 索引查询命令 格式:SEEK

功能:搜索满足条件的第一条记录,若找到,记录指针则指向该记录,若表中无此记录,则记录指针指向文件末尾EOF。

【例】 若要在Student表中利用SEEK命令快速查找高数为80的学生,那么应执行如下命令: USE Student

INDEX ON 高数 TO new.IDX SEEK 80 也可用: USE Student

SEEK 80 ORDER 高数 4.5 数据完整性 数据完整性概念

数据完整性指保证数据正确的特性,数据完整性包括实体完整性、域完整性和参照完整性。 4.5.1 实体完整性与主关键字

实体完整性指保证表中记录唯一的特性,即在一个表中不允许有重复的记录。

在VFP中,用主关键字或候选关键字来保证表中记录的唯一性,即实体的唯一性。

候选关键字:除主关键字外,若还有一个字段的值或几个字段的值能够唯一标志表中的一条记录,则称为候选关键字。

VFP中,主关键字对应主索引,候选关键字对应候选索引 4.5.2 域完整性与约束规则

域完整性包括字段的数据类型及域约束规则(即字段有效性规则)。字段的有效性规则主要用于数据输入正确性的检验,它在插入或修改字段值时被激活,用于检验输入字段的数据是否正确。

4.5.3 参照完整性与表之间的关联

参照完整性指当插入、删除或修改一个表中的数据时,通过参照引用相互关联的另一个表中的数据,来检查对表的数据操作是否正确,参照完整性确保了记录的一致性。在设置表间的参照完整性,要经历以下步骤:

1、建立索引和表间联系

(1)在表设计器中,以主表的主关键字建立主索引,以子表的外部关键字建立普通索引。 (2)在数据库设计器中,据主表的主索引与子表的普通索引建立表间的联系。

2、设置表间的参照完整性.

设置参照完整性前应先清理数据库,即将物理删除各个表中所有带有删除标记的记录。 参照完整性规则包括更新规则、删除规则、插入规则。

(1)更新规则:当更新父表中的连接字段(主关键字)的值时,如何处理相关子表中的记录。 (2)删除规则:当删除父表中的记录时,如何处理子表中相关的记录。 (3)插入规则:当插入子表中的记录时,是否进行参照完整性检查。 级联:(父表字段改变,子表对应字段联动改变)对父表中的主关键字段或候选关键字段的更改,会在相关的子表中反映出来。如果选择了这一选项,只要更改了父表中的关键字段,系统就会自动更改所有相关子表记录中的相应值。 限制:(若子表中有相应字段,则父表中对应字段不能改变)若子表中有相关的记录,则禁止更改父表中主关键字段或候选关键字段的值,这样做是为了保证在子表中不会出现孤立的记录。 忽略:(不管子表中是否有记录,父表可以任意改变字段)即使在子表中有相关的记录,仍允许更新父表中的记录。

Visual FoxPro提供的SELECT命令用以选择工作区。 命令格式:SELECT n WorkArea | cTableAlias

命令功能:该命令用以选择某一工作区使之成为当前工作区。 命令说明

(1)nWorkArea参数用于指定要选择的工作区号。工作区号通常采用1至32767的正整数标注。 (2)cTableAlias参数是表的别名。表的别名是 Visual FoxPro 用来在一个工作区中指定打开表的另一个名称。打开一个表时,Visual FoxPro 会自动使用表名作为默认的别名。

(3)表打开后,系统自动为表指定另一种别名:对于前 10 个工作区,指定为数字1-10或字母 A - J,对于之后的工作区(11 到 32767) ,依次自动指定别名为 W11 - W32767。 (4)表的别名只有在表打开后,选择该表为当前表时方可使用 【例】在不同的工作区打开了Student、Score和Subject表: SELECT 1 &&在工作区1中打开表Student USE Student

SELECT 2 &&在工作区2中打开表Subject USE Subject

SELECT 3 &&在工作区3中打开表Score USE Score

*打开表后,若要选择第1 工作区,可以执行如下命令:

SELECT Student 等价于SELECT 1(或A) 使用表名作为默认的表的别名 。 *现在若要选择第2 工作区,可以执行如下命令:

SELECT Subject 等价于SELECT 2(或B) ‘使用自定义的表的别名 *现在若要选择第12 工作区,可以执行如下命令: SELECT W12 ‘使用系统为表自动指定的别名

(3)如果nWorkArea参数为0,SELECT命令将自动选择当前未用的最小工作区打开指定的表。 【例】在执行了如下命令以后,当前工作区应为第2工作区。 SELECT 1 USE Student SELECT 3 USE Score SELECT 5 USE Subject SELECT 0

注:工作区2一直未使用.

4.7.2 使用不同工作区的表

Visual FoxPro支持在当前工作区使用其它工作区中已打开的表,称工作区互访。 在Visual FoxPro中,若要使用当前工作区上表的某一个字段,可以直接引用该字段。但是,若要访问非当前工作区上表的某一个字段,则应遵循工作区互访格式。工作区互访格式有两种: 格式1:.

说明:< cTableAlias >为要访问的非当前工作区的表的别名,为要访问的字段名。表的别名和字段名之间应使用英文句点连接。

格式2: IN nWorkArea | cTableAlias

说明:nWorkArea为指定工作区号;cTableAlias为非当前工作区的表的别名或表名 【例】Student表存储了学生的基本情况,包括学号STUDID)、姓名(NAME)、系编号(DEPID)等字段,但是没有包括系的名称(DEPNAME)。Department表存储了系的信息,包括系编号(DEPID)、系名称(DEPNAME)等信息。现在若要显示“高涵”所在的系名称,那么应进行工作区互访。具体命令如下: SELECT 1 USE Student SELECT 2

USE Department SELECT 1

LOCATE FOR NAME=“高涵”

&&在表Student中定位姓名为”高涵”的记录 SELECT 2

LOCATE FOR DEPID=STUDENT.DEPID

&&在表Department中定位高涵所在系的编

DISPLAY STUDENT.STUDID,STUDENT.NAME, DEPID ,DEPNAME

&&在Student和Department表显示姓名为”高涵”的学生的信息 4.7.3 表之间的关联

在Visual FoxPro中,表间联系有两种关联和联接。关联是临时的,系统退出时,临时表间关联也随之消失,下次若要使用还需重新建立;而联接是永久的,它是为了保证数据库表间数据的完整性而引入的。永久表间关系保存在数据库中,只要打开数据库,永久表间关系将立即生效。永久联系表现为”数据库设计器”中的表索引间的连接线。

在VFP中,不同工作区中的表的记录指针是互相独立的,但是,有时需为两个表建立临时关联,即当一个表(主表)中的记录指针移动时,与其关联的另一个(或多个)表(子表)中的记录指针也会相应移动,并指向与主表相对应的记录上。

1.建立表间关联 命令格式

SET RELATION TO[eExpression1 INTO nWorkArea1 | cTableAlias1[, eExpression2 INTO nWorkArea2 | cTableAlias2 ...] 命令功能

以当前表为主表与其它一个或多个子表建立临时关联,从而当主表的记录指针移动时,子表的记录指针根据表间关系也会发生相应的移动,并指向相应的记录。 命令说明

(1)eExpression1参数用于指定建立临时联系的索引关键字段表达式,一般为两表所共有的字段名,其在父表中常是主索引,而在子表中常是普通索引。

(2)INTO nWorkArea1 | cTableAlias1子句用于指定要与父表建立关联的子表的工作区号或子表的别名。

【例】设当前工作区是1号区,通过“学号”索引建立学生表与成绩表之间的临时关联. OPEN DATABASE 学生管理

USE 学生 IN 1 ORDER 学号 USE 成绩 IN 2 ORDER 学号 SET RELATION TO 学号 INTO 成绩

当学生记录的指针变动时,成绩记录指针也随之变动,例如:当学生记录的指针指向学号为9921104的记录时,则成绩记录的指针也会自动指向学号为9921104的第一条记录上. 2.取消临时关联

对于建立了关联的表,可以随时使用SET RELATION命令取消关联。 命令格式

SET RELATION OFF INTO nWorkArea | cTableName 命令功能

该命令用于取消当前表与指定表之前关联,若缺省参数,则取消当前表与所有表之间的 关联

【例】现在若要取消上例建立的表间关联,那么应执行如下命令: SELECT 2

SET RELATION 4.8 排序

排序:据表的某些字段物理重排表中记录,排序后将产生一个新表,其记录按新的顺序排列,但原表文件记录顺序保持不变. 命令格式

SORT ON <FieldNamel>[/A][/D][/C]TO <TableName1> [,<FieldName2>[/A][/D][/C]?][ASCENDING | DESCENDING] [SCOPE][FOR <IExpressionl>]FIELDS <FieldNameList>] 命令功能

该命令首先将当前表按照指定的字段(<FieldNamel>、<FieldName2>?)进行物理排序,然后将排序好的记录置于名为<TableName>的新表中。 说明:

(1)<TableName>参数用于指定新生成的有序表名。Visual FoxPro将排序好的记录置于该有序表中。 (2)<FieldNamel>,<FieldName2>,?为指定的排序字段。 (3)[/A」参数指定排序按升序方式进行。 (4)[/D]参数指定排序按降序方式进行。 (5)[/C]参数指定排序时不区分字母的大小写。 (6)[ASCENDING/DESCENDING]参数用于据多个字段进行排序场合,如果这多个字段的排序方向一致,则可在SORT命令中使用一次[ASCENDING/DESCENDING]参数即可,反之,指除用/A或/D指明了排序方式的字段外,所有其它的字段均按升序或降序排列. (7)[FOR <IExpression>]参数用于限定排序结果中仅包含满足条件的记录。 (8)[FIELDS <FieldNameList>]参数用于限定新生成的表中包含的字段。 (9) ON子句中可使用多个字段名实现多重排序,即先按主排序字段<字段名1>排序,对于字段值相同的记录再按第二排序字段<字段名2>排序,以此类推。

例、 若要对Student表根据入学成绩字段进行排序,并将排序结果保存在Studentsort表中。另外,Studentsort表中记录的高数均应大于480,那么应执行如下命令: USE Student

SORT TO Studentsort ON 高数 FOR 高数>80


串讲笔试考点(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:我国中小企业纳税行为现状及成因分析

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: