计算机VFP6.0如何建立索引

计算机VFP6.0如何建立索引,第1张

使用 INDEX 命令
INDEX ON eExpression TO IDXFileName | TAG TagName [BINARY]
[COLLATE cCollateSequence] [OF CDXFileName] [FOR lExpression]
[COMPACT] [ASCENDING | DESCENDING] [UNIQUE | CANDIDATE] [ADDITIVE]
详细参考VFP 帮助, 这里无法提供更详细的演示, 有问题可以HI :-)

INDEX ON ZYDH+DTOC(csrq,1) TAG zydhcsrq

是用ZYDH和DTOC(csrq,1)为索引表达式 建立普通索引并排序,就是说先按ZYDH排序,如果有相同字段则按DTOC(csrq,1)排序

日期转字符函数:
格式:dtoc(d,1)
功能:将日期d转化为日期字符串
例:将日期型数据转化为字符型日期数据并显示汉字日期
set century on &&开启世纪前缀,即日期中年份用4位表示
set date ansi
rq={^20051114}
rq=dtoc(rq)
substr(rq,1,4)+"年"+substr(rq,6,2)+"月"+substr(rq,9,2)+"日"
显示:2005年11月14日

函数的参数1的意义,以适合为索引的格式返回日期。

函数返回一个对应于日期或日期时间表达式的字符串。日期格式可由SET CENTURY和SET DATE确定。

本例中,ZYDH为主索引关键字,csrq为次索引关键字,因为两个关键字的类型不一致,所以才需要将日期型字段进行转换 *** 作后,才可以做为组合关键字使用。

前面的估计都会 *** 作吧。
我把后面的命令部分给你写一下。
打开表stud1dbf
Use stud1dbf

浏览stud1dbf的结构信息,浏览stud1dbf的记录信息
Display structure
List

修改表stud1dbf的结构,添加字段年龄/N/2,并设置年龄字段与生日字段的记录有效性规则
Modify structure
字段名:年龄;类型:INT
Replace 年龄=year(date())-year(生日)

在表stud1dbf后追加一条记录
Append blank

显示姓“张”的同学的信息
List for left(姓名,2)=”张”

显示stud1dbf中所有男同学的信息
List for 性别=”男”

逻辑删除记录号为5、6、7的记录
Delete all for recn()>=5 and recn()<=7

恢复记录号为5、6的记录
RECALL for recn()>=5 and recn()<=6

删除已有删除标记的记录
pack

关闭stud1dbf
Use

打开stud2dbf
Use stud2dbf
计算每个学生的总分,总分=数学+语文+综合。
Replace all 总分 with 数学+语文+综合

显示总分成绩为600分以上的学生学号、总分
List 学号,总分 all for 总分>=600

按总分由高到低对stud2 dbf排序生成新表stud3 dbf,新表中包含学号、数学、语文、综合成绩、总分字段
Sort on 总分 field 学号,数学,语文,综合成绩,总分 to stud3 dbf

将总分为600分以上的学生人数统计出来存入变量X中
Count all for 总分>=600 to X

计算所有学生的语文总分,数学总分,分别存入变量c、d中(用sum)
Sum all 语文,数学 to c,d

计算所有学生的语文平均分,数学平均分,分别存入变量c、d中(average)
average all 语文,数学 to c,d

关闭stud2 dbf表
Use

打开表stud3 Dbf,用浏览窗口观察排序后的数据,
Use stud3

在表stud3dbf的第五行插入一条记录,并输入内容
Go 5
Insert blank before
(输入内容)

关闭表stud3 Dbf
Use

打开STUDENTdbc数据库设计器,如果stud2表不在库中,将其添加,否则,
不做 *** 作
modify database STUDENTdbc
添加或不添加stud2表

在第一工作区中打开stud1 dbf表,浏览表的记录
Use stud1 Dbf in 1

在第二工作区中打开stud2 dbf表,浏览表的记录
Use stud2 Dbf in 2

在第一工作区中按学号建立主索引,索引名为xh
Select 1
点击VF的标题栏的“显示”,再选中“表设计器”。选中“索引”,在“索引名”一栏输入关键字,再在“类型”中选“主索引”就OK了

按生日建立普通索引,索引号为bir
Index on 生日 tag bir

确定xh为主控索引。
“表设计器”—》“索引”中设置

用list或brow命令列出所有学生信息(观察与无索引之前的不同)
Browse

在第二工作区中按学号建立候选索引,索引名为xh
同上

以学号字段建立俩个表之间的关联,父表为stud1 dbf,子表为stud2dbf,用brow命令打开两个表的浏览窗口,观察两表之间的数据联动。(用set relation 命令建立临时联系)
Select 1
set relation to xh into stud2
当前工作区为1,通过list命令列出所有学生学号、姓名、年龄、数学、语文、综合、总分字段的值。
Select 1
List 学号,姓名,年龄,数学,语文,综合,总分

根据自己的理解设置参照完整数(建立两个表之间永久联系再设置)
自己的理解

关闭工作区1中的表。
Use in 1
关闭工作区2中的表。
Use in 2

index on 索引表达式 tag 索引名
例:在student表上按姓名建立降序普通索引。
use student
index on 姓名 tag 姓名 descending

索引是一种逻辑排序方法,它不改变记录在物理上的排列顺序,而是建立一个与原文件相对应的索引文件,索引文件中存储了一组记录指针,它指向原文件的记录。如按总分字段建立的索引文件中包含两列信息:第一列按序存放总分,第二列则是对应的记录号,如下表。
总分的索引值 记录号
302 8
357 2
358 1
387 4

Visual FoxPro 中的索引和书中的索引类似。书中的索引是一份页码的列表,指向书中的页号。表索引是一个记录号的列表,指向待处理的记录,并确定了记录的处理顺序。对于已经建好的表,索引可以帮助我们对其中的数据进行排序,以便加速检索数据的速度;可以快速显示、查询或者打印记录;还可以选择记录、控制重复字段值的输入并支持表间的关系 *** 作。
(一)单索引文件:IDX
相关命令:
建立索引:INDEX ON [-]<字段名表达式> TO <索引文件名>
同时打开:USE <表名> INDEX <索引文件名>
单独打开:SET INDEX TO <索引文件名>
关闭索引:SET INDEX TO
说明:
(1)逻辑型、备注型和通用型字段不能作索引关键字,且只能有一个索引关键字。
(2)加参数[-]时为降序排序,缺省为升序(由小到大)。
(3)<索引文件名>可不加扩搌名,系统自动加上扩展名IDX。
(4)必须打开索引文件后才能看到索引排序的结果。
例如:
use d:\studentdbf 打开表studentdbf
index on 总分 to d:\s1idx 以总分字段建立单索引文件
set index to d:\s1idx 打开索引文件
browse 浏览结果
set index to 关闭索引
browse 浏览结果,与前一次作比较
(二)复合索引文件:CDX
复合索引能在一个独立文件中存储多个索引,必须为每个索引建立独特的标志名(TAG),标志名必须以字母或下划线开头,可以包含字母、数字、下划线,单只有十个有效名字空间。
相关命令:
建立索引:INDEX ON <字段名> TAG <标记> [Asceding|Descending]
同时打开:USE <表名> ORDER [TAG] <标记>
单独打开:SET ORDER TO [TAG] <标记>
关闭索引:SET ORDER TO
关闭索引:DELETE TAG <标记>
例如:在Studentdbf中以总分从大到小排列
use d:\studentdbf 打开表studentdbf
index on 总分 tag zongfen descending 以总分字段索引
browse 浏览结果
set order to 关闭索引
browse 浏览结果,与前一次作比较
菜单 *** 作:打开“表设计器”,选择“索引”标签,然后建立索引,使用时打开相应的索引。
索引的类型有:
(1)主索引:字段不允许有重复的索引,一个表只能有一个主索引,主索引只能用于在数据库内部建的表,不能用于自由表。
(2)候选索引:字段不允许有重复值,作为主索引的候选字段。
(3)普遍索引:字段允许重复值,一个表有多个普通索引。
(4)唯一索引:允许有重复值,只存储第一次出现的重复值。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12994994.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存