vfp实验6 表的索引、排序、统计

合集下载

VFP实验指导书

VFP实验指导书

广东水利电力职业技术学院《VFP程序设计》实验指导书2004.6修订计算机信息工程系高等职业技术教育计算机应用技术专业《VFP程序设计》实验大纲一、实验项目1、创建项目管理器,创建数据库、数据表,在表中录入数据,建立表间的关系。

2、以数据库中已有的表为数据源,建立参照完整性。

3、建立多表查询、交叉表查询和视图。

4、通过赋值语句和store命令两种方法建立变量和数组5、使用命令进行数据表的管理。

6、使用命令进行记录的查询和统计7、报表的设计。

8、创建表单,控件的使用,设计背景表单。

9、表单中浏览数据表的记录10、单条件、多条件查询功能表单的设计。

11、编辑数据表表单的设计。

13、具有统计功能表单的设计、页面框的设计。

14、数据的导入、导出功能表单的设计。

15、菜单的设计、系统的连编。

二、实验的能力要求1、掌握数据库、数据表的基本概念2、掌握关系数据库的基本操作3、掌握可视化编程的基本思想4、掌握Visual FoxPro的语句及语法规则5、熟悉常用控件在编程中的应用6、利用Visual FoxPro编写一般应用程序7、能利用Visual FoxPro设计开发数据库管理系统。

实验一项目、数据库、表的建立一、实验目的掌握VFP6.0的启动,关闭,熟悉它的操作环境。

熟练掌握项目管理器的作用及其它的创建,默认目录的设置。

如何在项目中创建数据库,数据表,以及他们相关属性的设置,表结构的修改。

二.实验内容及指导1.在d盘创建一个文件夹,以自己的姓名命名保存,以下的操作均保存到该文件夹中。

将visual foxpro文件的默认目录设置为该文件夹。

2.创建一个项目管理器,命名为“人事管理系统”。

3.在该项目中创建一个数据库,命名为“rsglxt”。

4.在“rsglxt”中创建一个表,表结构如下,并对照课本P36录入几条数据记录:表一:jszl字段名类型宽度小数位数索引教师编号字符型 4 主索引姓名字符型 6性别字符型 2民族字符型 2出生年月日期型8部门字符型8职称字符型 4工作时间日期型8婚否逻辑型 1简历备注型 4照片通用型 45.在该项目中创建一个数据库,命名为“cjglxt”。

vfp实验6表的索引、排序、统计

vfp实验6表的索引、排序、统计

vfp实验6表的索引、排序、统计
实验六表的索引、排序、统计
一、实验目的
1、理解表的4种索引类型,熟悉单项索引和复合索引的建立和应用;
2、掌握记录排序命令sort to的应用方法;
3、掌握表的常用统计命令;
二、实验内容
注意:数据文件务必存放在 D 盘!
用你的学号在D 盘下建立一个文件夹(如08514101),将文件正确保存到该文件夹中。

为方便文件打开和调试,可以用SET DEFAULT TO 修改系统的文件存放默认路径,如:SET DEFAULT TO D:\08514101
1、打开表xsda.dbf,完成以下操作:
(1)使用单项索引将表中的记录按出生日期降序
..排列显示,生成csrq.idx 文件;
(2)使用复合索引将表中的记录按性别显示不同地区的记录信息,索引标识符为xbjg;
(3)使用复合索引将表中的记录按性别降序显示男女学生的入学成绩信息,索引标识符为xbrxcj;
(4)制定当前索引为xbjg,重新显示操作(2)的结果;
2、利用表xsda.dbf的字段xh、xm、jg、rxcj和zy,生成排序文件zfpx.dbf,排序的文件按总分降序排列(sort to…on);
3、打开xscj.dbf表,分别统计不同科目的平均分,并将统计结果存在不同的变量中;
文件上交:
访问ftp://219.222.113.14,用户名:vfp8,密码:000,将你的文件以“实验
6学号姓名.rar”上传到“上传区”中,如“实验608514101蔡
梦雅.rar”。

VFP索引与排序

VFP索引与排序

创建索引
• 命令法:
结构化索引
Index On <索引表达式> Tag <索引标识名>[For 条件]
[Ascending|Descending] [Unique|Candidate]
升 序 | 降 序 唯一索引 候选索引
主索引的建立
可以不打开但建立 索引后自动被打开
Alter table <数据库表名> add primary key <索引 表达式> Tag <索引标识名>
在数据库中讲解
创建索引
• 命令法:
单索引
快速存 取索引
建立新的索引文件时不 关闭已打开的索引文件
Index On <索引表达式> To <索引文件名> 单索引文件 [Compact[Unique]] [Additive] 只能按升序
创建索引实例2
用命令法对学生.dbf表建立复合索引
1. 以籍贯的升序排列,普通索引,索引标识为jg,并 浏览显示。 2. 按cj1标识,建立以外语成绩降序排列的普通索引。 3. 对男学生以其出生日期降序显示记录。(narq) 4. 以性别升序排列,若性别相同,则按数学成绩降 序排列。(xbcj)
删除
索引的应用
说明:对表达式的内容进行查 找,找到时记录指针指在该记 录上,未找到时记录指针则在 Find 表达式 文件尾。用“Skip” 辅助命 令查找下一条件满足条件的记 录 SEEK(索引关键字表达式 )
Seek 表达式
索引查询
解释见教材 P41
当没找到记录时, 记录指针指到文 件尾。
用FOUND( )函数测试查找是否成功,找到为"T",否则为"F" 。

VFP索引与排序

VFP索引与排序

菜单法选择主控索引 操作 表文件打开且相应的索引文件已打开 要点
① 进入“工作区属性”窗口 “工作数据期“工具按钮,选择“属性”按钮,进 入。 或若为浏览表状态下选择菜单“表\属性”,进入。
②在“工作区属性”窗口的“索引顺序”框中选择索引 标识,按“确定”按钮。
命令法关闭索引文件 关闭索引文件
单索引、非结构复合索引被关,
–自由表中也可建立。
索引的类型 • 普通索引(Regular Indexes)
–一张表可有多个。
–数据库表和自由表均可有。
• 唯一索引(Unique Indexes)
索引表达式中重复的值在索引表中只出现第一个, 忽略重复值。
索引文件的种类
含多个索 引
非结构复合索引
建立时,用 户单独为其 命名
需使用单独命令 打开、关闭
例:val(工作部门)+基本工资
则原题意写为 val(工作部门)*10^6-基本工资*100
创建索引实例1

关键字表达式为C型和D型时,要将日期型数据转为 字符型数据,再用字符型连接符号“+”连接。
函数:DTOC(日期型数据) DTOS(日期型数据)
“工作部门 工作时间” 工作部门+dtos(工作时间)
在数据库中讲解
创建索引
• 命令法:
单索引
快速存 取索引
建立新的索引文件时不 关闭已打开的索引文件
Index On <索引表达式> To <索引文件名> 单索引文件 [Compact[Unique]] [Additive] 只能按升序
创建索引实例2
用命令法对学生.dbf表建立复合索引
1. 以籍贯的升序排列,普通索引,索引标识为jg,并 浏览显示。 2. 按cj1标识,建立以外语成绩降序排列的普通索引。 3. 对男学生以其出生日期降序显示记录。(narq) 4. 以性别升序排列,若性别相同,则按数学成绩降 序排列。(xbcj)

vfp上机练习题_索引与排序

vfp上机练习题_索引与排序

vfp上机练习题_索引与排序排序与索引将sb.dbf复制到D盘根目录下的xxx文件夹(xxx可用任意字母代替),执行命令:SET DEFAULT TO D:\XXX。

一、表的排序命令SORT示例1:将所有设备按部门降序排列,部门相同时按价格升序排列USE SBSORT TO bmjg ON 部门/D,价格/AUSE bmjgLIST示例2:将所有设备按部门升序排列,部门相同按启用日期降序排列,要求只包含编号、名称、启用日期及部门4个字段。

USE sbSORT TO bmrq ON 部门/A,启用日期/D FIELDS 编号,名称,启用日期,部门USE bmrqLIST2(表的索引命令建立索引的命令示例1:为设备表以价格字段作为索引关键字建立普通索引,要求降序排列USE sbINDEX ON 价格 TAG jg DESCENDINGLIST示例2:为设备表以编号作为索引关键字建立候选索引,要求升序排列USE sbINDEX ON 编号 TAG bh ASCENDING CANDIDATELIST示例3:为设备表以启用日期作为索引关键字建立普通索引,要求降序排列USE sbINDEX ON 启用日期 TAG qyrq DESCENDINGLIST示例4:为设备表建立索引,要求按部门升序排列,部门相同时按启用日期升序排列USE SBINDEX ON 部门+DTOS(启用日期) TAG bmrq ASCENDINGLIST示例5:为设备表建立索引,要求按部门降序排列,部门相同时按价格降序排列USE sbINDEX ON 部门+str(价格,9,2) TAG bmjg1 DESCENDINGLIST示例6:为设备表建立索引,要求按部门升序排列,部门相同时按价格降序排列USE sbINDEX ON val(部门)-价格/1000000 TAG bmjg2 ASCENDINGLIST示例7:为设备表建立索引,要求按部门降序排列,部门相同时按价格升序排列USE sbINDEX ON val(部门)-价格/1000000 TAG bmjg3 DESCENDINGLIST注意:比较示例6和示例7确定主控索引的命令示例1:确定jg为当前主控索引SET ORDER TO TAG jg示例2:确定bmjg2为当前主控索引SET ORDER TO bmjg2二、用SELECT-SQL命令建立查询1(单表查询示例查询所有设备信息SELECT * FROM sb查询价格在一万元以上的设备信息SELECT * FROM sb WHERE 价格>=10000查询价格在一万元以上、十万元以下的设备的编号、名称及价格SELECT 编号,名称,价格 FROM sb WHERE 价格>=10000 AND 价格<=100000 查询所有设备的编号、名称及价格,并按价格降序排列SELECT 编号,名称,价格 FROM sb ORDER BY 价格 DESCENDING查询按价格由高到低排列后的前3条记录SELECT * FROM sb ORDER BY 价格 DESCENDING TOP 3 ? 查询价格在一万元以上的设备台数SELECT COUNT(*) AS 万元以上设备台数 FROM sb WHERE 价格>=10000 查询主要设备和非主要设备的台数SELECT 主要设备,COUNT(*) AS 设备台数 FROM sb GROUP BY 主要设备查询资产总额SELECT SUM(价格) AS 资产总额 FROM sb ? 查询各部门资产额SELECT 部门,SUM(价格) AS 部门资产额 FROM sb GROUP BY 部门查询各部门资产额,仅列出部门资产在一万元以上的记录,并按部门资产额降序排列SELECT 部门,SUM(价格) AS 部门资产额 FROM sb GROUP BY 部门;HAVING SUM(价格)>=10000 ORDER BY 2 DESCENDING ? 查询各设备的累计增值金额SELECT 编号,SUM(增值) AS 累计增值金额 FROM zz GROUP BY 编号查询累计大修费用在五千元以上的设备编号及累计大修费用SELECT 编号,SUM(费用) AS 累计大修费用 FROM dx GROUP BY 编号;HAVING 累计大修费用>=50002(多表查询示例查询所有设备的编号、名称、价格及所在部门的名称 ? SELECT sb.编号,sb.名称 AS 设备名称,sb.价格,bmdm.名称 AS 部门名称;FROM sb,bmdm WHERE sb.部门=bmdm.代码SELECT sb.编号,sb.名称 AS 设备名称,sb.价格,bmdm.名称 AS 部门名称;FROM sb JOIN bmdm ON sb.部门=bmdm.代码 ? 查询部门资产额在十万元以上的部门名称及资产额,并按资产额降序排列SELECT bmdm.名称,SUM(sb.价格) AS 部门资产额 FROM sb,bmdm;WHERE sb.部门=bmdm.代码 GROUP BY 部门;HAVING 部门资产额>=100000 ORDER BY 2 DESCENDING ? SELECT bmdm.名称,SUM(sb.价格) AS 部门资产额;FROM sb JOIN bmdm ON sb.部门=bmdm.代码 GROUP BY 部门;HAVING 部门资产额>=100000 ORDER BY 2 DESCENDING ? 查询增值设备的名称及累计增值金额,并按累计增值金额降序排列SELECT sb.名称,SUM(zz.增值) AS 累计增值金额 FROM sb,zz;WHERE sb.编号=zz.编号 GROUP BY zz.编号 ORDER BY 2 DESCENDINGSELECT sb.名称,SUM(zz.增值) AS 累计增值金额FROM sb;JOIN zz ON sb.编号=zz.编号 GROUP BY zz.编号 ORDER BY 2 DESCENDING 查询累计大修费用在五千元以上的设备名称及累计大修费用SELECT sb.名称,SUM(dx.费用) AS 累计大修费用 FROM sb,dx;WHERE sb.编号=dx.编号 GROUP BY dx.编号 HAVING 累计大修费用>5000SELECT sb.名称,SUM(dx.费用) AS 累计大修费用 FROM sb JOIN dx;ON sb.编号=dx.编号 GROUP BY dx.编号 HAVING 累计大修费用>5000 查询增值设备的名称、所在部门名称及累计增值金额 ? SELECT sb.名称 AS 设备名称,bmdm.名称 AS 部门名称,;SUM(zz.增值) AS 累计增值金额 FROM sb,bmdm,zz;WHERE sb.部门=bmdm.代码 AND sb.编号=zz.编号;GROUP BY zz.编号SELECT sb.名称 AS 设备名称,bmdm.名称 AS 部门名称,;SUM(zz.增值) AS 累计增值金额;FROM sb JOIN bmdm ON sb.部门=bmdm.代码 JOIN zz ON sb.编号=zz.编号;GROUP BY zz.编号查询大修过的设备名称、所在部门名称及累计大修费用SELECT sb.名称 AS 设备名称,bmdm.名称 AS 部门名称,;SUM(dx.费用) AS 累计大修费用 FROM sb,bmdm,dx;WHERE sb.部门=bmdm.代码 AND sb.编号=dx.编号;GROUP BY dx.编号SELECT sb.名称 AS 设备名称,bmdm.名称 AS 部门名称,;SUM(dx.费用) AS 累计大修费用;FROM sb JOIN bmdm ON sb.部门=bmdm.代码 JOIN dx ON sb.编号=dx.编号; GROUP BY dx.编号三、用查询设计器建立查询1(建立查询的命令CREATE QUERY <查询文件名>MODIFY QUERY <查询文件名〉示例:CREATE QUERY cx1MODIFY QUERY cx2注意:查询文件的扩展名为.qpr2(运行查询的命令DO <查询文件名〉示例:DO cx1.qprDO cx2.qpr注意:命令中查询文件的扩展名不可省略3(练习用查询设计器建立单表及多表查询。

VF中查询与统计报告

VF中查询与统计报告

查询与统计一、实验目的练习VFP查询与统计的相关操作,包括数据排序、界面和命令方式建立索引、查询满足条件的记录,建立表的关联和统计命令的使用。

二、内容与设计思想实验内容:1.数据排序;2.索引的建立;3.顺序查询和索引查询;4.数据工作区;5.统计命令;6.SELECT-SQL查询7.数据完整性。

设计思想:在Visual ProFox中,使用软件提供的界面和命令操作两种方式,对表中的数据进行查询和统计的相关操作。

三、使用环境Windos XP操作系统;Visual ProFox 6.0四、核心代码及调试过程1、做教材习题(p119)的第3题,并打开表设计器,查看已建立的3个索引,写命令;(9分)use sb &&打开sbindex on 编号tag bh descending &&建立以编号降序排列,标识为普通索引 (1)index on 名称+dtos(启用日期) tag mcrq descending unique &&index on val(部门)-val(dtos(启用日期))/100000000 tag bmrq descending candidatemodify structure2、删除第3(3)小题所建立的索引,并用表设计器重新建立之(截图);(6分)delete tag bmrq3、做教材习题(p119)的第4题;(10分)顺序查询:locate for year(启用日期)=1992 and 主要设备=.f.索引查询:index on 主要设备tag zysb for year(启用日期)=1992seek .f.4、做教材习题(p120)第14题;(21分)(1)查询价格小于10万元的设备的启用日期select SB.名称,SB.启用日期FROM SB WHERE SB.价格<100000(2)查询车间使用的设备或者价格不小于10万元的设备的部门名,查询结果输出到表RESULT.DBFSELECT SB.名称AS 设备名,BMDM.名称AS 部门名;FROM SB INNER JOIN BMDM ON SB.部门=BMDM.代码;WHERE "车间"$BMDM.名称OR SB.价格>=100000(3)查询1992年启用的设备的名称和部门名SELECT SB.名称AS 设备名,BMDM.名称AS 部门名;FROM SB INNER JOIN BMDM ON SB.部门=BMDM.代码;WHERE YEAR(SB.启用日期)=1992(4)查询大修过的设备的编号和名称SELECT SB.编号,SB.名称FROM SB,DX WHERE SB.编号=DX.编号(5)查询有增值的设备的设备名和部门名SELECT SB.名称AS 设备名,BMDM.名称AS 部门名;FROM SB,BMDM,ZZ;WHERE SB.部门=BMDM.代码AND SB.编号=ZZ.编号(6)试算出1992年前启用的主要设备的台数SELECT COUNT(SB.编号) AS 1992年前启用设备台数;FROM SB WHERE YEAR(SB.启用日期)<1992(7)试算出大修过的设备中每种设备大修费用的平均值SELECT SB.名称,A VG(DX.费用) AS 平均大修费用;FROM SB,DX WHERE SB.编号=DX.编号group BY DX.编号5、有表GZ.DBF(工资)和ZC.DBF(职称)内容如下:(9分)(表在sever上拷贝使用)1)同时打开GZ和ZC,写命令或者在数据工作期中操作截图均可。

《VFP索引与排序》

《VFP索引与排序》
“工作部门 工作时间” 工作部门+dtos(工作时间)
.
操作示范
.
创建索引
• 命令法:
结构化索引
可以与字 段同名
➢Index On <索引表达式> Tag <索引标识名>[For 条
件] [Ascending|Descending] [Unique|Candidate]
升序|降序
唯一索引 候选索引
由多个关键字段值和其对应的多个记录的物理位置 构成。(一个索引文件中有多张“对照表”)
–结构化复合索引文件
索引文件名与表文件同名(由系统自动生成)
其打开和关闭与表文件同步,是表的一部分。
表文件修改时,系统自动更新该索引文件。
.
不常用的索引或 临时性的索引
–非结构化复合索引 索引文件名由用户给出,要用专门的命令打开。 可随表文件关闭也可用命令关闭。
菜单操作中默 认是升序排列
转为数值型函数:VAL(数字字符型数据,长度)
例:val(工作部门)+基本工资
则原题意写为 val(工作部门)*10^6-基本工资*100
.
创建索引实例1
关键字表达式为C型和D型时,要将日期型数据转为
字符型数据,再用字符型连接符号“+”连接。
函数:DTOC(日期型数据) DTOS(日期型数据)
.
索引的类型 • 主索引(Primary Indexes)
– 每张表只能有一个。一般为表的关键字或索引表 达式的值没有重复值的才能作为主索引。
– 只存在数据库表中的结构复合索引中。
• 候选索引(Candidate Indexes)
– 可有多个。一般为表的关键字或索引表达式的值 没有重复值的才能作为候选索引。

VFP索引

VFP索引

VFP 索引可以这么理解,索引是表中记录的一种逻辑顺序,例如,假设有如下学生表,下面分别按照入校总分、年龄、姓名为之建立索引:学生表.dbf记录号 学号 姓名 性别 年龄 入校总分1sc0001 张三 男 16 654 2sc0002 李四 女 18 684 3sc0003 王五 男 19 346 4sc0004 王六 女 17 964 5sc0005 钱二 男 20 801 按入校总分降序建立索引记录号顺序为(即索引):45213○1 按年龄升序建立索引 记录号顺序为(即索引): 1 4 2 3 5 ○2 按学号降序建立索引 记录号顺序为(即索引): 5 4 3 2 1 ○3如果按照第○1种方式依次从学生表里取出记录并显示出来,则显示出来的顺序就是按照入校总分从高到低的显示结果,即:如果按照第○2种方式依次从学生表里取出记录并显示出来,则显示出来的顺序就是按照年龄从低到高的显示结果,即:如果按照第○3种方式依次从学生表里取出记录并显示出来,则显示出来的顺序就是按照学号从高到低的显示结果,即:上面的三种索引(或称索引方式)是存放于文件里的,存放索引的文件就是索引文件,索引文件可以分为单索引文件和复合索引文件(结构复合索引、非结构复合索引),单索引文件里只能存放一种索引(方式),复合索引文件里可以存放多种索引(方式)。

假设“学生表.dbf”在“d:\上机题”文件夹里。

一、单索引及单索引文件的建立:命令格式:index on 索引表达式to 索引文件名例1:index on 入校总分to d:\上机题\dsy.idx↙(命令中的扩展名“.idx”可以省略)该例为“入校总分”字段建立单索引,并将索引存放于“d:\上机题”文件夹中,命令执行后,注意观察“d:\上机题”里是不是有了一个新文件:dsy.idx。

此种方式建立的索引就是单索引,单索引文件里(本例中是dsy.idx)只能存放一种索引方式。

本例如果再用list 命令查看表,则显示的记录顺序就是入校总分的升序方式显示(注:建立单索引时默认为升序方式)。

重要资料VFP表操作索引、统计、关联、连接等讲解

重要资料VFP表操作索引、统计、关联、连接等讲解

查询、统计和多表操作表文件中记录的顺序通常是人们在输入数据时按输入的先后次序存储的,并以记录号表示,这个顺序只反映了存放数据的先后顺序。

但在数据处理实际应用中,由于数据库十分庞大,为了高效方便地处理数据,常常需要对记录位置进行重新整理,并按某种指定的顺序对表记录进行处理。

例如,对学生成绩表按学号为序显示输出记录,以便查找;或按总分高低为序输出记录,以便进行比较等等。

对记录位置进行重新整理通常有排序和索引两种方法。

排序是对表文件进行物理位置的整理;索引是对表文件进行逻辑位置的整理。

一、排序表文件的排序操作就是根据表的某个关键字或关键字表达式重新排列表记录的位置。

执行排序操作后将生成一个新的表文件(称为:排序文件)。

新文件的结构和数据可以与源文件完全相同,也可以只取源文件的部分字段。

新文件不改变源文件内容和记录顺序。

【命令】 SORT TO<新文件名>ON <字段名1>[/A] [/D] [/C] [,<字段名2> [/A] [/D] [/C]…] [ASCENDING|DESCENDING][<范围>][FOR<条件>|WHILE<条件>][FIELDS<字段名表>| FIELDS LIKE<通配符>|FIELDS EXCEPT<通配符>]【功能】对当前表中指定范围内、满足条件的记录按指定字段升序或降序重新排序,并将排序结果存入新文件名中。

【说明】①排序结果存入由TO <新文件名>指定的表文件中,系统默认文件扩展名为.DBF。

②在ON子句中的字段名表示排序的关键字段。

当使用一个关键字时,叫“单重排序”;使用多个关键字时,叫“多重排序”。

在多重排序中,关键字有主次之分。

主关键字是指能够唯一标识某个记录的关键字;次关键字是指标识具有某种相同属性的某些记录的关键字。

在关键字表达式中,主关键字排在前面,次关键字排在后面。

Visual FoxPro排序、索引与查询统计

Visual FoxPro排序、索引与查询统计
2016/5/6 目录 16
4-4-2 求合计
【命令】SUM [<表达式表>][TO <内存变量名表>] [<范围>] [FOR <条件>] [WHILE <条件>] 【功能】将指定范围内满足条件的记录,按指定的表 达式表分别求和 【说明】<表达式表>是由数值型字段组成, 若省略,则对当前表的所有数值型字段求和 TO <内存变量表>:将求和结果按顺序存入 指定内存变量
4-3-2 索引查询
索引查询命令:FIND、SEEK
1、FIND命令
【命令】 FIND <字符串>/<数值常量> 【功能】在表文件的主控索引中查找定位关键字值与 <字符串>或<数值常量>相匹配的第一条记录 (1)如果找到,则把记录指针指向该记录,并且将 FOUND()函数的值为“真”; (2)如果没有找到与其相符的记录,则将记录指针 指向表的末尾,且将FOUND()函数的值置为“假” ,将EOF()函数的值置为“真”。
2016/5/6 目录 17
4-4-3 求平均值
【命令】AVERAGE [<表达式表>][TO <内存变量表>] [<范围>] [FOR <条件>] [WHILE <条件>]
【功能】对当前表中指定范围内满足条件的记 录的数值型字段求算术平均值 【说明】选项用法同SUM 求合计命令
2016/5/6
目录 18
2016/5/6 目录 19
4-4-5 分类汇总
【格式】TOTAL TO <汇总文件名> ON <关键字段> [FIELDS<字段名表>][<范围>][FOR <逻辑表达式1>] [WHILE <逻辑表达式2>] 【功能】按关键字段对当前表文件的数值型字段进行分 类汇总,形成一个新的文件 【说明】当前表必须在关键字上排序或索引 选择FIELDS <字段名表>短语时对指定的数值型字段求 和,否则对所有的字段求和。将当前表文件中关键字段 值相同的记录分成一类,每一类产生一个记录,各记录 中的汇总字段值为汇总后的和,而非汇总字段值为每一 类的第一条记录的值。

Visual FoxPro6.0程序设计教程第四章 索引、排序与多表操作

Visual FoxPro6.0程序设计教程第四章 索引、排序与多表操作
说明: <字段名1>:指定主排序字段。如果有多个排序字段,先 按<字段名1>排序,对于字段值相同的记录,再按<字段名 2>排序。 <表文件名>:新建的数据表文件名,默认扩展名 .dbf。 注意:该命令最终的结 [/A][/D][/C]:指明按字段的升序、降序排序和排序时不区 果是生成一个新表!!且 分字母大小写。 使用该命令不需要建索引! Ascending | Descending:对没有用/A或/D指明排序顺序 的字段按升序或降序排序。 For <条件表达式>:对满足条件的记录进行排序。 Fields <字段名表>:指定新文件中所含字段及其顺序。
每次表打开时自动打 索引 开,并且在表修改时 自动更新的索引文件, 通常与表同名,但扩 展名是.CDX
VFP6.0索引文件
结构复合索引文件 复合索引文件(· CDX )
包含多个索引入口的索 引文件,在使用时需明 确指定打开
非结构复合索引文件
4.2 索引
4.2.2 索引的分类
三种索引文件的比较
索引类型
4.1 排序 对表文件进行物理位置的整理
命令格式:Sort To <表文件名> On <字段名1>[/A] [/D] [/C] [,<字段名2 >[/A] [/D] [/C]…] [Ascending | Descending] [For <条件表达式>] [Fields <字段名表>]
4.1 排序
独立 .idx
描述 必须明确的打开, .idx的基本 名由用户定义 必须明确的打开,使用和表名 不同的基本名 使用和表文件名相同的文件名, 和表一起自动打开

数据库(VFP)实验报告-排序、索引、查询、数据工作期

数据库(VFP)实验报告-排序、索引、查询、数据工作期
记录以出生日期的降序排列,并且为候选索引。
index on 出生日期 tag csrq desc candidate
6、重新打开student表,确定第4题建立的索引为主控索引,并显示表数据信息
set index to xb
7、确定第5(3)题索引为主控索引,并显示表数据信息
setorder to tag csrq
数据库(VFP)实验报告-排序、索引、查询、数据工作期
实验名称:排序、索引、查询、数据工作期
实验目的:通过实验练习,掌握排序与索引的命令知识和上机操作方法,掌握顺序查询与索引查询的概念知识和上机操作命令使用,掌握数据工作期的使用。
实验原理(预习内容):
实验器材(软件):Visual FoxPro
实验结果分析与小结:
sort to student4 on 系别 /D for 出生日期>{^1985/01/01}
use student4
list
3、将学生按系别排序,当系别相同时则按姓名升序排序生成新文件student5
sort to student5 on 系别,姓名
4、建立系别是升序排列的单索引文件,并显示索引后的结果。
select 1
use repto xh
select 2
use student
set relation to 学号 into reportcard
list 学号,姓名,reportcard.高等数学
使用命令建立employee表和contribution表之间的关联,浏览出每个职员的姓名、每次捐款的时间及捐款金额
打开employee表,求出所有职工工资的平均值,并将结果保存到内存变量a中
use employee

实验2:表的排序、索引与统计

实验2:表的排序、索引与统计

实验报告
实验名称表的排序与索引
课程名数据库原理及其应用
专业班级:学生姓名:
学号:成绩:
指导教师:实验日期:
实验二表的排序与索引
一、实验目的
1.掌握表中数据的排序与索引。

2. 掌握数据记录顺序查询和索引查询。

二、实验准备
1.排序的概念。

2.索引的概念、索引的类型和索引文件的创建与使用。

3.记录的索引和查询命令(LOCATE,CONTINUE,SEEK,FIND)。

三、实验内容
利用实验一建立的student.dbf表完成下列操作:
1.显示总成绩(数学和英语成绩之和)在前5名的学生记录。

2.建立一个结构复合索引文件,其中包括两个索引标识:
(1)记录以学号降序排列。

(2)记录以姓名降序排列,姓名相同时则按出生年月升序排列。

3.测试FIND、SEEK命令的用法:
(1)分别用FIND命令和SEEK命令查询学号为009902学生的情况,并显示之,比较二命令的不同。

(2)分别用FIND命令和SEEK命令查询出生年月为1983.12.12的学生情况,比较二者的不同用法。

VFP6电子教案第4章数据处理与SQL

VFP6电子教案第4章数据处理与SQL

<索引关键表达式>可以是字段名,也可以是含有当前表中字段的 合法表达式。表达式值的数据类型可以是字符型、数值型、日期 型、逻辑型。若在表达式中包含有几种类型的字段名,常常需要 使用类型转换函数将其转换为相同类型的数据。
[UNIQUE]:指定UNIPUE子句时,若有多条记录的<索引关键表 达式>的值相同时,则只把第一次遇到的记录进行排序加入到索 引文件中;省略该子句时,则把所有遇到的记录值都加入到索引 文件中。
[ADDITIVE]:若省略ADDITIVE子句,当为一个表建立新的索 引文件时,除结构复合索引文件外,所有其它打开的索引文件都 将会被关闭;若选择此选择项,则已打开的索引文件仍然保持打 开状态。
FOR <条件>:指定一个条件,只显示和访问满足这个条件的表 达式<条件>的记录,索引文件只为那些满足条件的表达式的记录 创建索引关键字。
选择合适的索引类型可以以下列准则作为依据: 1、如果需要排序记录,以便显示、查询或打印,可以使用普通 索引、候选索引或主索引。 2、如果要在字段中控制重复值的输入并对记录排序,则对数据 表可以使用主索引或候选索引,对自由表可以使用候选索引。 3、如果准备设置关系,则可以依据表在关系中所起的作用来分 别使用普通索引、主索引或候选索引。

在此框中输 在此文本框中输
入索引标记 入索引表达式
按 钮
返回
4.2.2 使用索引
1、打开索引文件 (1)在打开表时打开索引文件 复合索引文件在打开表时将自动被打开。
格式:USE <表文件名> INDEX <索引文件名表> [ORDER <数 值表达式>/ <单索引文件名>/[TAG] <索引标记名> [OF <复合索 引文件名>]] [ASCENDING/ DESCENDING]

论VFP中的索引

论VFP中的索引

论VFP中的索引索引的作用类似于一本图书的章节内容目录——可以通过其准确查询相关内容和页码。

因此,在关系数据库中索引相当于一个表文件,在VFP中占有举足轻重的地位,值得我们探讨。

标签:VFP索引;索引文件1 索引简介一般情况下,表中记录的顺序由数据录入的先后顺序而定,并用记录号予以标识,因此,表中的记录无规律。

要想使无规律的记录有规律,VFP中提供了两种方法:一是排序法,二是索引法。

排序是对表中记录进行整理,按指定的关键字段排序,并将排序结果形成一个新的数据表,属于物理排序。

其缺点是:当原始的表文件被修改后,必须重新排序,排序时产生的新表文件,占用磁盘空间,当表较大时,排序处理太耗时,因此此法较少使用。

索引是根据某一字段的值进行逻辑排序,VFP在输出记录时,按照索引的顺序分别读取每一条记录,而这些记录的实际储存位置并未改变。

一般来讲,在数据库中,索引不会自动生成新的表文件,只是会生成有用的索引新文件。

但是,不能单独利用索引新文件来进行搜索,必须在表文件的密切配合下,才能加以利用。

因此,在一定意义上,可以将索引的优势概括为三点:(1)在数据检索上,利用索引使得搜索速度得到了质的提升,节约了搜索过程的时间;(2)可以精确定位数据库中每一行,甚至每一个字符的唯一性;(3)能够加强表与表之间的关联性,同时也加快了他们之间的连接。

2 索引的分类索引是根据某一特定关键字进行排序的,因此根据对关键字的不同要求,可以将索引分为以下四种不同的类型。

(1)主索引:主索引的关键字不允许出现重复值,因此,只能在数据库表中建立主索引,并且,一个数据库也只能建立唯一的主索引。

(2)候选索引:一般情况下,一个表中可以建立若干个候选索引,但是,候选索引却不允许关键字出现重复值。

(3)普通索引:普通索引可以认为是候选索引的进一步扩展,既允许一个表建立若干个普通的索引,同时也允许索引的关键出现重复值。

所以,可以将普通索引归类为默认类型的索引。

VFP6教程第2章 表的操作

VFP6教程第2章 表的操作

第2章表的操作表是VFP基本内容。

数据库的管理最终是对表的管理。

表是对数据进行有效的加工、管理,使数据更能显示出它的价值,由于表可以独立于程序,因而表使得数据得以共享,同时使数据得到充分的利用。

VFP中的表可分为自由表、数据库表两种。

本章讲的表是针对自由表而言的,数据库表将在后续章节中介绍。

本章主要介绍表的建立、表的基本操作。

2.1 表的建立在VFP中表的建立方式有多种。

本节中只介绍可视化的界面建立表和用命令建立表两种方式,其他几种方式将在后续章节中逐步介绍。

建立表的过程一般可分为三步。

第一步要确立表的结构,第二步用界面或用命令开始建表,以上步骤实际上就是对表结构的定义。

第三步输入表的内容。

表2.1所示是学生自然情况表。

表2.1 学生自然情况表VFP表的建立及相关知识。

2.1.1 确定表的结构一个二维表是由它的列项与行项组成,从1.2.2节中已经掌握了表的列项称为字段,表中内容一行称为一个记录。

学段也是一种变量,它的命名规则已在前面介绍了。

字段变量类型可为表1.1数据类型中的所有数据类型。

由表2.1来确定学生自然情况表的结构:学号C(9)、姓名C(6)、性别C(2)、出生D、团否L、入学成绩N(3)、近照G及备注M。

2.2.2 建表、修改、显示一个表的建立应确定表建立在磁盘中的位置,这样,在建立表后,需要打开表时,按表在磁盘中的位置找到表将表打开。

为了叙述的方便本书规定用“―〉”表示进行下一步操作。

在X盘上已经建立一个Y文件夹,X盘表示任意盘,Y文件夹表示任意名的文件夹。

例如在D盘建立一个名为学生的文件夹,也可由用户自定义文件夹的名。

建文件夹可通过win的我的电脑或资源管理器等建立。

如果用户不给出路径,VFP可以建立默认路径,当打开VFP时它自动在默认路径上。

下面给出默认路径的方法:单击工具菜单->[选项],打开选项对话框,如图 2.1所示。

->[文件位置]选项卡->选[默认目录]->[修改]按钮,打开[更改文件位置]对话框->使用[默认目录]复选框->在定位默认目录文本框中输入路径。

Visual Foxpro 6.0 检索、统计与多工作区操作

Visual Foxpro 6.0 检索、统计与多工作区操作
2011-4-14 Visual FoxPro 6.0程序设计 8
2、复合索引文件的建立 、 复合索引文件是由索引标记组成的,每个复合索引文件可包含多 个索引标记,每个索引标记都有标记名,一个索引标记相当于一 个单索引文件。 格式: 索引关键表达式> 标记名> 格式:INDEX ON <索引关键表达式 TAG <标记名 [OF <复合 索引关键表达式 标记名 复合 索引文件名>][FOR <条件 条件>] [ASCENDING | 索引文件名 条件 DESCENDING] [UNIQUE][ADDITIVE] 功能:建立和修改复合索引文件,并打开此索引文件,其缺省的 功能: 文件扩展名为.CDX。 参数描述: 参数描述: <索引关键表达式 、[FOR <条件 、[ADDITIVE]:与上相同。 索引关键表达式>、 条件>]、 索引关键表达式 条件 : TAG <标记名 [OF <复合索引文件名 :创建一个复合索引文件。 标记名> 复合索引文件名>]: 标记名 复合索引文件名 在TAG <标记名>参数中不包含可选的[OF <复合索引文件名>]子 句时,便可以创建结构复合索引文件。
2011-4-14 Visual FoxPro 6.0程序设计 9
如果在TAG <标记名>参数后包含可选项[OF <复合索引文件名>] 子句,则可以创建非结构复合索引文件。 [ASCENDING | DESCENDING]:ASCENDING 指定复合索引文 : 件为升序,这是默认值。DESCENDING 指定复合索引文件为降 序。 [UNIQUE]:对于一个索引关键值,只有第一个满足该值的记录 : 包含在.IDX文件或.CDX标识中。利用UNIQUE子句可以避免显示 或访问记录的重复值。 说明: 说明: ⑴执行上述命令时,系统先检查指定的复合索引文件是否存在, 若存在,在此文件中增加一个索引标记,若不存在,则建立此索 引文件。 ⑵标记名的命名规则与变量名的命名规则相同。 ⑶单索引文件只能按升序排列,而复合索引文件既可以按升序排 列也可以按降序排列,选择DESCENDING为降序,选择 ASCENDING为升序,缺省时约定为升序。

vf排序索引统计多表操作

vf排序索引统计多表操作

四、数据表的计算
USE E:\excise\type.dbf BROWSE
五、数据表的复制
数据表结构的复制 命令:COPY STRUCTURE TO <数据表名> [FIELDS
<字段表>][[WITH]CDX|[WITH]PRODUCTION] 例如: USE E:\excise\book1.dbf INDEX ON B_number TAG B_number candidate INDEX ON Type TAG Type LIST STRUCTURE &&(可观察book1的结构) COPY STRUCTURE TO E:\excise\book2.dbf WITH CDX
3.数据表的联接
命令
JION WITH <工作区号>|<别名> TO <文件名>]
[FOR条件] [FIELDS<字段名表>]
例如
sele 1
use book1
sele 2
use brower
JOIN WITH book1 TO ts FOR B_number=A.b_number
FIELDS b_number, A.b_name, lend_date, back_date
use ts
ቤተ መጻሕፍቲ ባይዱlist
【小结】
本章主要介绍了对VFP中的数据表的操作, 主要知识点如下:
数据记录的排序与索引 数据表的查询 数据表的计算 数据表的复制 数据表的关联、连接
谢谢!
2.数据表的关联
所谓关联,就是当前数据表记录指针的 移动,能引起别的数据表按某种条件相 应地移动记录指针。

第3章 VFP 6.0数据库及其操作(3)

第3章 VFP 6.0数据库及其操作(3)
说明:④ 如果对所有字段均按升序或降序方式排列, 则可以使用ASCENDING或DESCENDING选项,但 /A,/D,/C比ASCENDING和DESCENDING优先级 高。
7
3.6.1 数据表排序
2. 命令
SORT TO <文件名> ON <字段名1> [/A][/D][/C] [,<字段名2> [/A][/D][/C]…] [ASCENDING|DESCENDING][<范围>] [FOR<条件>][WHILE<条件>][FIELDS<字段名表>]
功能:将当前数据表中指定范围内满足条件的记录, 按指定字段的升序或降序重新排列,并将排序后的记 录按FIELDS子句指定的字段写入新的表文件中。
3
3.6.1 数据表排序
2. 命令
SORT TO <文件名> ON <字段名1> [/A][/D][/C] [,<字段名2> [/A][/D][/C]…] [ASCENDING|DESCENDING][<范围>] [FOR<条件>][WHILE<条件>][FIELDS<字段名表>]
(1)菜单:打开浏览窗口,选择“表|属性”命令, 打开 “工作区属性”对话框,在“索引顺序”框中选 择一个索引项,浏览窗口中的记录就会按按照该索引 顺序排列。
24
3.6.2 数据表索引
选择索引顺序
“工作区属性”对话框:设置索引顺序
25
3.6.2 数据表索引
(2)命令:SET ORDER TO [TAG <索引标识名>] 功能:在打开的复合索引文件中设置一个索引标识 作为主标识(当前索引),使数据表中的记录按该索 引顺序处理。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验六表的索引、排序、统计
一、实验目的
1、理解表的4种索引类型,熟悉单项索引和复合索引的建立和应用;
2、掌握记录排序命令sort to的应用方法;
3、掌握表的常用统计命令;
二、实验内容
注意:数据文件务必存放在 D 盘!
用你的学号在 D 盘下建立一个文件夹(如08514101),将文件正确保存到该文件夹中。

为方便文件打开和调试,可以用SET DEFAULT TO 修改系统的文件存放默认路径,如:SET DEFAULT TO D:\08514101
1、打开表xsda.dbf,完成以下操作:
(1)使用单项索引将表中的记录按出生日期降序
..排列显示,生成csrq.idx 文件;
(2)使用复合索引将表中的记录按性别显示不同地区的记录信息,索引标识符为xbjg;
(3)使用复合索引将表中的记录按性别降序显示男女学生的入学成绩信息,索引标识符为xbrxcj;
(4)制定当前索引为xbjg,重新显示操作(2)的结果;
2、利用表xsda.dbf的字段xh、xm、jg、rxcj和zy,生成排序文件zfpx.dbf,排序的文件按总分降序排列(sort to…on);
3、打开xscj.dbf表,分别统计不同科目的平均分,并将统计结果存在不同的变量中;
文件上交:
访问ftp://219.222.113.14,用户名:vfp8,密码:000,将你的文件以“实验
6学号姓名.rar”上传到“上传区”中,如“实验608514101蔡梦雅.rar”。

相关文档
最新文档