数据库表的查询与统计_第1页
数据库表的查询与统计_第2页
数据库表的查询与统计_第3页
数据库表的查询与统计_第4页
数据库表的查询与统计_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章表的查询与统计根据表的某些字段重排记录,排序后将产生一个新表,其记录按新的顺序排列,但原文件不变。 SORT TO ON /A|/D/C , /A|/D/C FOR WHILE FIELDS FILEDS LIKE | EXCEPT 排序与索引排序【例】Use students Sort to sts ON bh, rxcj/D For ssmz Use sts List & 主窗口显示如下 文件中的记录一般按其磁盘存储顺序输出,这种顺序称为物理顺序。排序后,在生成的新文件中形成了新的物理顺序。索引与此不同,它不改变记录的物理顺序,而是按某个索引关键字来建立记录的逻辑顺序。在索引文件中,

2、所有关键字值顺序排列,每个值对应原文件的一个记录号,这样便确定了记录的逻辑顺序。使用时,系统就依次按索引文件中的记录号取出表中的物理记录,达到按关键字值顺序来列出记录的效果。索引功能分类表索引类型关键字重复值说 明创建修改命令索引个数普通索引允许可作为一对多永久关系中的“多方”INDEX 允许多个唯一索引允许,但输出无重复值为与以前版本兼容而设置候选索引不允许,输入重复值将禁止存盘可用作主关键字,可用于在永久关系中建立参照完整性INDEXCREATE TABLEALTER TABLE主索引仅适用数据库表,可用于在永久关系中建立参照完整性CREATE TABLEALTER TABLE仅可1个排序

3、与索引索引单索引文件,复合索引文件:结构化复合索引(主名与表的主名相同),非结构化复合索引。排序与索引利用表设计器的字段标签页建立索引文件 建立索引文件或增加索引标识 INDEX ON TO | TAG OF FOR ASCENDING | DESCENDING UNIQUE | CANDIDATEADDITIVE排序与索引确定主控索引 SET ORDER TO | | TAG ASCENDING | DESCENDING 索引文件的更新 REINDEX COMPACT删除索引 DELETE TAG ALL | ,.【例】为Students.dbf建立一个结构复合索引文件,其中包括3个索引:(

4、1) 记录以入学成绩(rxcj)降序排列,,索引标识为普通索引型。(2) 记录以班号(bh)升序排列,班号相同时则按学号(xh)升序排列,索引标识为普通索引型。(3) 记录以班号(bh)升序排列,班号相同时则按入学成绩(rxcj)降序排列,索引标识为候选索引型。排序与索引 Use students Index on rxcj tag cj desc &建复合索引,关键字rxcj,索引标识cj,普通索引 List & 记录已按rxcj降序排列 Index on bh+xh tag bhxh &关键字bh+xh,索引标识bhxh,增入Students.cdx List & 记录按班级升序、班级相同

5、按学号升序排列 Index on bh+str(1000-rxcj) tag bhcj candidate * bhcj为候选索引型索引标识,索引标识增入students.cdx List & 索引表达式运算后升序排列,使记录按bh升序、bh相同按rxcj降序排列 Set order to tag cj & 指定索引标识CJ为主控索引 List & 记录按入学成绩降序排列 Set order to tag bhxh List & 记录按(2)排列 Set order to & 取消主控索引 List CONTINUE ?RECNO(),xh,xm,xb,csrq 查询顺序查询【格式】 LOCA

6、TE FOR WHILE USE students LOCATE FOR rxcj600 AND NOT ssmz DISPLAY CONTINUE索引查询【格式】 SET EXACT ON | OFF 设置完全匹配或模糊匹配 FIND | 【功能】在已经建立索引的表文件中查找索引关键值与指定的字符串或数值型常量相匹配的第一条记录。【说明】此命令只能对索引关键字进行查询,且必须在索引文件打开之后使用。 查询字符串,字符串可以不用定界符括起来,但前后有空格的,则必须要括进来。 查询常数,必须使用索引关键字的完整值。 允许查询字符型内存变量,但必须使用宏替换函数。 由于索引文件中关键字表达式值相同

7、的记录总是排在一起的,可用SKIP、DISP命令来逐个查询。查询【格式】SEEK 【功能】在表文件的主索引中查找关键字值与值相匹配的第一个记录。【说明】 SEEK命令与FIND命令的功能基本相同,但SEEK命令的功能更强,不仅可以查找字符串和常数,它还可以查找字符型、数值型、日期型或逻辑型表达式的值。 SEEK命令中的表达式的类型必须与索引表达式的类型相同。Use studentsInde on xm tag xmFind 李DispAa=“费敏“Find &aa? Recno(),Found()Inde on rxcj tag cjFind 600DispSkipDisp INDEX ON

8、csrq TAG rq SEEK 1988/08/12 ? FOUND() &.显示.T. INDEX ON rxcj TAG cj SEEK 602 USE students INDEX ON xh TAG xh SEEK 07011002 ? RECNO(),FOUND() & 显示:2 .T. AA=“07011003” SEEK AA【格式】 COUNT FOR TO 【格式】 SUM FOR TO | ARRAY 【说明】 在Set talk off状态下,不显示执行命令统计的结果;在Set deleted on状态下,带有删除标记的记录不被统计。【例】 Use students C

9、ount for xb=”女” to girl Count for xb=”男” and ynty to boy? ”女生的人数为:”,girl? ”男生中团员的人数为:,boy在选课成绩表中如何统计某学生共选修了多少门课。【说明】 若不选择任何选项,则对表文件中所有数值型字段分别求和。【例】 Use Classes Sum rs to n1 Sum rs to n2 for left(bh,2)=”JZ” ? n1,n2表的统计与计算统计记录个数求和9表的统计与计算【格式】 AVERAGE FOR TO |ARRAY 【例】 Use students Average year(date()-

10、year(csrq), rxcj for xb=”女” to n1,n2 Average year(date()-year(csrq), rxcj for xb=”男” to array nn? ”女生的平均年龄为:”,n1,”平均入学成绩为:”,n2? ”男生的平均年龄为:”,nn(1),”平均入学成绩为:”,nn(2)【格式】 CALCULATE FOR TO |ARRAY 【说明】 表达式表中的表达式通常是一些财会统计中的函数表达式。【例】 Use Classes Calculate Avg(rs),sum(rs),max(rs),min(rs) to n1,n2,n3,n4 ? ”所有

11、班级的平均人数为:”,n1, ”所有班级人数总数为:”,n2? ”人数最多班级的人数为:”,n3, ”人数最少班级的人数为:”,n4求平均值计算表的统计与计算 可对数据进行分类合计。在当前表中,分别对值相同的记录的数值型字段值求和,并将结果存入一个新表。 一组关键字值相同的记录在新表中只产生一个记录,对于非数值型字段,只将关键字值相同的第一个记录的字段放入该记录。【例】 Use Classes Index on yxbm tag yxbm set order to yxbm total on yxbm to yxrs fields rs use yxrs in 0 sele yxrs list

12、 close all分类汇总 【格式】 TOTAL TO ON FIELDS FOR 注:在汇总前必须对进行排序或索引。表的统计与计算【例】Use studentsSet exact off Count for xm=李 or xm=王 to A &统计姓李或姓王同学的记录个数 ? A Count to B &统计表记录总数 ? 总记录个数, B ? Recsize() Sum rxcj to cj &求入学成绩总和Store cj/b TO av &求平均入学成绩,并存入变量av中? 平均成绩=,av pinture 9999.99 &运行结果:平均成绩= 600.17AVER ALL rx

13、cj TO av1? Av1 &运行结果:600.17CALC CNT(),AVG(rxcj),MAX(rxcj),min(rxcj) TO x1,x2,x3,x4? x1,x2,x3,x4多工作区操作 工作区是指当打开表文件时,把指定的表文件从磁盘调入内存中所分配的一个区域。VFP系统可提供32767个工作区,其编号从1至32767,每个工作区任何时候只能被一个表文件打开占据,在多个工作区中可同时打开多个表文件,但在任何一个时刻只能对一个工作区(当前工作区)进行操作。 系统别名:VFP对编号1-10前10个工作区规定了固定的系统别名,用字母AJ表示。用户别名:用户打开表文件时自定义的工作区别

14、名。【格式】 Use Alias In 【例】 Use d:vfpStudents in 0 use g:students alias st in 0 sele st ? Select() go 5 sele students ? Select() go 2 ? Students.xh, xm, st.xh, st.xm Close all 【格式】 Select | | 0工作区别名工作区工作区选择“0”工作区代表未被使用的最小号工作区工作区别名.字段名多工作区操作【例】 Sele 1 Use Students Sele 2 Use Course Sele 1 Browse Close da

15、tabaseSele AUse Students & 在A工作区中打开StudentsSele BUse Grade & 在B工作区中打开GradeSele A & 选择A工作区为当前工作区Disp all xh, xm, xb, csrq, B.kch, Grade.cj表的关联在2个或2个以上工作区的表之间建立的逻辑连接,使其表的记录指针同步移动。父表子表索引字段多一关系关联关联的一多关系表的关联父表子表索引字段多一关系表的关联【例】use students Set order to bh Sele 0 Use Classes set rela to bh into students Br

16、ow fields bh,bjmc,students.xh,students.xm set skip to students Brow fields bh,bjmc,students.xh,students.xm Set rela off into students Close【例】 sele studentsSet order to xhSele 0Use classesset relation to mon_xh into studentsBrow fields zy,bjmc,students.xm List zy,bjmc,students.xm,students,xbSet rela

17、 to Close all【格式】 Set Relation to | into Additive建立表文件之间的关联关系的前提条件:父表和子表必须具有某一相同的关联字段,并且其域相同。子表必须以关联字段建立索引,并且把它设为主控索引。 关联的关系有:“一对一”、“一对多”和“多对一”三种(VFP系统不能处理“多对多”关系)。表的关联一对多多对一表的关联在数据库设计器中创建表与表之间的永久关联。表的参照完整性课后作业完成实验指导书“实验1.3”,熟悉VFP表的记录排列次序的两种方法:排序、索引。分清两种方法的特点 :物理排序和逻辑排序。熟悉主索引、候选索引、唯一索引和普通索引的不同,通过对已创

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论