程序设计基础(vfp)第三章-数据库表课件2.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《程序设计基础(vfp)第三章-数据库表课件2.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 基础 vfp 第三 数据库 课件
- 资源描述:
-
1、第三章 数据库和数据表的操作第二部分3.4 索引文件及其应用数据表中的顺序是按输入的顺序存储在表中。数据表中的顺序是按输入的顺序存储在表中。如果查找某条记录怎么办?如果查找某条记录怎么办?3.4.1 索引文件及分类索引文件及分类 1.索引文件索引文件索引文件:它仅由两个字段组成,一个字段是索引文件:它仅由两个字段组成,一个字段是排序的关键字值(也可以是一个表达式),另排序的关键字值(也可以是一个表达式),另一个字段是每个关键字在原始数据表中对应的一个字段是每个关键字在原始数据表中对应的记录号。例,在记录号。例,在Rsda.dbf数据表中,以编号为数据表中,以编号为关键字段并按升序建立的索引文件
2、的示意图如关键字段并按升序建立的索引文件的示意图如下图所示。下图所示。在索引文件中,记录是按索引关键字值的顺序排列的在索引文件中,记录是按索引关键字值的顺序排列的,当要查找某一编号的记录时,当要查找某一编号的记录时,VFP先在索引文件中查找先在索引文件中查找该编号,找到后再根据对应的记录号,在数据表中将记该编号,找到后再根据对应的记录号,在数据表中将记录指针快速移动到该记录上。录指针快速移动到该记录上。一个索引文件中可以只有一个索引,也可以有一个索引文件中可以只有一个索引,也可以有多个索引多个索引。可以包含多个索引的索引文件称该文件为复合索引文件。可以包含多个索引的索引文件称该文件为复合索引文
3、件。在复合索引文件中,需要为每个索引指定一个索引标识在复合索引文件中,需要为每个索引指定一个索引标识名,以便于通过索引标识相互区分各个索引。名,以便于通过索引标识相互区分各个索引。3.4.1 索引文件及分类索引文件及分类 2.索引的类型索引的类型(1)主索引主索引主索引通常是主索引通常是数据表的关键字索引数据表的关键字索引,作为主索引的,作为主索引的字段称为主关键字。主索引不能用在自由表中,而字段称为主关键字。主索引不能用在自由表中,而只能用在数据库表中,可用于在只能用在数据库表中,可用于在永久关系中建立参永久关系中建立参照完整性照完整性。创建主索引的字段。创建主索引的字段不允许有重复值不允许
4、有重复值,且,且一个表一个表只能有一个主索引只能有一个主索引。例如,在数据表中,常用学生证号、身份证号、工例如,在数据表中,常用学生证号、身份证号、工作证号等作为主索引,而姓名可能有同名的情况,作证号等作为主索引,而姓名可能有同名的情况,一般不能作为主索引。一般不能作为主索引。3.4.1 索引文件及分类索引文件及分类(2)候选索引候选索引候选索引类似于主索引,候选索引类似于主索引,其索引值就不能有重复其索引值就不能有重复值。值。与主索引不同的是,与主索引不同的是,一个数据表中可以有多个候选一个数据表中可以有多个候选索引索引,而且侯选索引不能用来在永久关系中建立参,而且侯选索引不能用来在永久关系
5、中建立参照完整性。照完整性。(3)惟一索引惟一索引惟一索引表示索引值只能取一个,如果有两个或两惟一索引表示索引值只能取一个,如果有两个或两个以上的索引值,则只能取其中一个,因此,惟一个以上的索引值,则只能取其中一个,因此,惟一索引使用时可能会隐藏一些记录。例如,若有两个索引使用时可能会隐藏一些记录。例如,若有两个同名的人员,将姓名字段作为惟一索引,则只能找同名的人员,将姓名字段作为惟一索引,则只能找到一个记录,另一个记录将不会找到。到一个记录,另一个记录将不会找到。3.4.1 索引文件及分类索引文件及分类(4)普通索引普通索引 普通索引没有上面各索引的限制,是普通索引没有上面各索引的限制,是允
6、许重复索引值的允许重复索引值的索引索引。作为普通索引的字段,其字段值可以重复,。作为普通索引的字段,其字段值可以重复,也可也可以作为排序的依据以作为排序的依据,但因为可能有多个相同的索引值,但因为可能有多个相同的索引值,因此查询时会找到多个符合条件的记录。一个数据表中因此查询时会找到多个符合条件的记录。一个数据表中可以有可以有多个多个普通索引。普通索引。3.4.1 索引文件及分类索引文件及分类 3.索引文件的分类索引文件的分类单入口索引文件单入口索引文件(扩展名为(扩展名为.IDX)(IDX索引索引文件中只包含一个索引文件中只包含一个索引)复合索引文件复合索引文件(扩展名(扩展名.CDX),)
7、,.CDX索引文索引文件中可以包含有一个或多个索引,所以称为复件中可以包含有一个或多个索引,所以称为复合索引文件。合索引文件。结构化复合索引文件结构化复合索引文件非结构化复合索引文件非结构化复合索引文件(独立符合索引文件独立符合索引文件)结构化复合索引结构化复合索引的主文件名与数据表的的主文件名与数据表的主文件名相同,并随着数据表的打开而主文件名相同,并随着数据表的打开而打开,在添加、更改或删除记录时会自打开,在添加、更改或删除记录时会自动进行维护;动进行维护;非结构化复合索引文件非结构化复合索引文件(独立符合索引文独立符合索引文件件)的主文件名与数据表文件不同,必须的主文件名与数据表文件不同
8、,必须用命令打开。用命令打开。3.4.2 创建索引文件创建索引文件1.建立结构化复合索引文件建立结构化复合索引文件(1)在表设计器中创建索引文件在表设计器中创建索引文件(2)命令方式创建索引命令方式创建索引【格式格式】INDEX ON 表达式 TAG 索引标识名 FOR 条件表达式 ASCENDING|DESCENDING UNIQUE|CANDIDATEADDITIVE【功能功能】建立结构化复合索引文件。建立结构化复合索引文件。对对rsda表(表(1)按编号升序建立索引;()按编号升序建立索引;(2)按工作日期降序;()按工作日期降序;(3)先)先按按性别性别升序升序,若性别相同,则按,若性
9、别相同,则按工作日期工作日期升序建立索引(升序建立索引(rsda.cdx)USE rsda INDEX ON 编号编号 TAG bhINDEX ON 工作日期工作日期 TAG gzrq desc INDEX ON 性别性别+dtoc(工作日期工作日期)TAG xbrq 2.建立独立复合索引文件建立独立复合索引文件独立复合索引文件的扩展名也是独立复合索引文件的扩展名也是.CDX,但其但其主文件名与数据表文件名主文件名与数据表文件名不相同,且不相同,且使用时还需使用时还需单独打开单独打开。独立复合索引文件。独立复合索引文件主要用来创建那些使用不太频繁的索引。主要用来创建那些使用不太频繁的索引。独立
10、复合索引文件不能在表设计器中创建,独立复合索引文件不能在表设计器中创建,命令建立。命令建立。【格式格式】INDEX ON 表达式TAG 索引标识名 OF 独立复合索引文件名独立复合索引文件名 FOR 条件表达式 ASCENDING|DESCENDING UNIQUE|CANDIDATEADDITIVE 例:对例:对rsgl.dbf表,(表,(1)编号升序建立索引;)编号升序建立索引;(2)先按)先按性别性别升序升序,若性别相同,则按,若性别相同,则按工作工作日期日期升序建立独立索引文件升序建立独立索引文件gl.cdxuse rsglindex on 编号编号 tag bh cand of gl
11、.cdxindex on 性别性别+dtoc(出生日期出生日期)tag xbcsrq of gl.cdx 3.重新建立索引文件重新建立索引文件在数据表的使用过程中,当增删记录或数据表中被在数据表的使用过程中,当增删记录或数据表中被索引文件使用的关键字段改动时,索引文件使用的关键字段改动时,结构化复合索引结构化复合索引会随着数据表的打开自动打开并能及时得到更新会随着数据表的打开自动打开并能及时得到更新,但如果在使用数据表时未打开相应的独立复合索引但如果在使用数据表时未打开相应的独立复合索引文件或传统的单入口文件或传统的单入口.IDX索引文件,则索引文件会索引文件,则索引文件会因为无法及时更新而产
12、生错误索引。这时须打开索因为无法及时更新而产生错误索引。这时须打开索引文件,并对其重新索引。引文件,并对其重新索引。菜单方式:菜单方式:打开数据表打开数据表“显示显示”“”“浏览浏览”,菜单,菜单“表表”、“重重建建立索引建建立索引”命令,或打开数据表后用命令,或打开数据表后用REINDEX命令命令重新建立索引。重新建立索引。命令方式命令方式【格式格式】REINDEX 4、索引的删除若单索引:直接在windows中删除若复合索引,删除索引标识删除所有的索引标识:Delete tag all删除特指的索引标识Delete tag,3.4.3 索引文件的使用索引文件的使用 1.指定主控索引指定主控
13、索引 一个数据表可以建立一个数据表可以建立多个索引文件多个索引文件,每个索引,每个索引文件中又可能包含文件中又可能包含多个索引多个索引,而一种索引就是,而一种索引就是一种排序方式一种排序方式 在使用索引时,必须指明哪一个索引是对数据在使用索引时,必须指明哪一个索引是对数据表记录排序起作用的,即指定主控索引。表记录排序起作用的,即指定主控索引。在没有指定哪一个索引为主控索引之前,数据在没有指定哪一个索引为主控索引之前,数据表的表的访问顺序访问顺序仍然是原来的物理顺序,即按记仍然是原来的物理顺序,即按记录号的顺序访问。录号的顺序访问。主控索引和主索引有什么区别?主控索引和主索引有什么区别?主控索引
14、和主索引是完全不同的概念。主主控索引和主索引是完全不同的概念。主索引是用来控制数据的完整性的,而主控索引是用来控制数据的完整性的,而主控索引是用来指定目前记录排列顺序的。索引是用来指定目前记录排列顺序的。1.指定主控索引 菜单方式:菜单方式:“浏览浏览”“表表”“”“属性属性”命令命令-即弹出即弹出“工作区工作区属性属性”对话框对话框设定主控索引后,利用设定主控索引后,利用LIST、DISPLAY命令输命令输出的记录顺序也是排序后的顺序。出的记录顺序也是排序后的顺序。主控索引只是改变了记录的输出顺序,记录在数主控索引只是改变了记录的输出顺序,记录在数据库中的顺序并没有发生变化。据库中的顺序并没
15、有发生变化。命令方式命令方式【格式一格式一】USE 数据表名 ORDER TAG ASCENDING|DESCENDING【功能功能】打开表,同时指定结构化复合索引文件的索引为主打开表,同时指定结构化复合索引文件的索引为主控索引。控索引。【格式二格式二】SET ORDER TO TAG ASCENDING|DESCENDING【功能功能】打开表后,指定结构化复合索引文件的索引为主控打开表后,指定结构化复合索引文件的索引为主控索引。索引。对于独立的复合索引文件或单入口的索引文件,需要用对于独立的复合索引文件或单入口的索引文件,需要用命令将其打开和关闭,只有打开要使用的独立复合索引命令将其打开和关
16、闭,只有打开要使用的独立复合索引文件后,才能指定其中的索引为主控索引。文件后,才能指定其中的索引为主控索引。【格式一格式一】USE ORDER TAG OF ASCENDING|DESCENDING【格式二格式二】SET INDEX TO TAG OF (4)关闭索引文件【格式一】SET INDEX TO【格式二】CLOSE INDEX2.使用索引快速查找记录 FIND命令和命令和SEEK命令都可在指定主控命令都可在指定主控索引的情况下进行记录的查找操作。索引的情况下进行记录的查找操作。SEEK 表达式表达式USE Rsda ORDER TAG bh&打开打开Rsda同时同时指定指定BH为主控
17、索引为主控索引SEEK 03002disp SET ORDER TO gzrq&重新指定重新指定rq为主控为主控索引索引seek 1963/09/02&日期格式要与设置相同,否则会出错日期格式要与设置相同,否则会出错dispUse rsdaset order to bh3.5 数据表的统计计算 3.5.1 累加求和及求平均值 对每个记录的对每个记录的横向求和横向求和和统计可以用前面介绍的操和统计可以用前面介绍的操作或命令方便地给出,如作或命令方便地给出,如REPLACE命令。对于每命令。对于每个记录的个记录的纵向求和纵向求和统计可以用统计可以用累加求和累加求和命令实现。命令实现。【格式格式】S
18、UM|AVERAGE 表达式表范围 FOR 条件表达式 TO 内存变量名表|TO 数组变量名【例例】求出求出Rsgz.dbf中计算机系所有职工的月中计算机系所有职工的月基本工资平均值及全年实发工资之和并显示。基本工资平均值及全年实发工资之和并显示。AVERAGE 基本工资基本工资 TO a FOR SUBSTR(编编号号,1,2)=03 SUM 实发工资实发工资*12 TO b FOR SUBSTR(编编号号,1,2)=03“【例例】求出求出xscj每门课的平均成绩,每个每门课的平均成绩,每个同学的平均成绩和总成绩。同学的平均成绩和总成绩。use xscj.dbf brow average 英
19、语英语,数学数学,计算机计算机 to a,b,c?a,b,c repl all 总成绩总成绩 with 英语英语+数学数学+计算机,计算机,平均成绩平均成绩 with 总成绩总成绩/3 3.5.2 统计记录个数统计记录个数【格式格式】COUNT 范围范围FOR 条件表达式条件表达式 WHILE 条件表达式条件表达式TO 内存变量名表内存变量名表|TO 数组变量名数组变量名 例:统计每门课成绩均在例:统计每门课成绩均在90分以上的人数,以及不及格分以上的人数,以及不及格的人数。的人数。count for 英语英语=90 and 数学数学=90 and 计算机计算机=90 to s1 count
20、for 英语英语60 or 数学数学60 or 计算机计算机60 to s2?S1,s2 3.5.3 分类汇总分类汇总 分类汇总对已经建立了索引并且指定了主控索引的数据表,分类汇总对已经建立了索引并且指定了主控索引的数据表,可以按关键字进行分类求和可以按关键字进行分类求和【格式格式】TOTAL ON 关键字表达式关键字表达式 TO 新表名新表名 FIELDS 字段名表字段名表 范围范围FOR 条件表达式条件表达式WHILE 条件表达式条件表达式2 当前数据表必须是按关键字表达式索引过,并当前数据表必须是按关键字表达式索引过,并指定该索引为主控索引,以保证具有相同关键字值的记指定该索引为主控索引
21、,以保证具有相同关键字值的记录能连续访问。录能连续访问。FIELDS短语给出了需分类求和的字段名,这些字段短语给出了需分类求和的字段名,这些字段只能是数值型或货币型的,如果缺省,则对当前表中的只能是数值型或货币型的,如果缺省,则对当前表中的所有数值型或货币型字段分类求和。不管选不选所有数值型或货币型字段分类求和。不管选不选FIELDS短语,新表与当前表的结构是一样的。短语,新表与当前表的结构是一样的。对当前数据表中的若干个关键字表达式相同的记录,对当前数据表中的若干个关键字表达式相同的记录,生成新表中的一条记录。这条记录的非数值型或非货币生成新表中的一条记录。这条记录的非数值型或非货币型字段取
22、自关键字相同的一组记录中首记录的相应字段,型字段取自关键字相同的一组记录中首记录的相应字段,参加求和的字段值取自求和结果。参加求和的字段值取自求和结果。例题(1)统计本月每种商品的台数和总价,以及统计本月每种商品的台数和总价,以及每个售货员销售的台数和总价每个售货员销售的台数和总价例题 USE xs.dbf brow repl all 总价总价 with 单价单价*台数台数 index on 售货员售货员 to shy total on 售货员售货员 to shytj fields 台数台数,总价总价 index on 商品名商品名 to spm total on 商品名商品名 to sptj
23、 fields 台数台数,总价总价 use shytj brow use sptj brow(2)统计每天的销售台数和总价,以及本月统计每天的销售台数和总价,以及本月每天每个售货员的销售台数和总价。每天每个售货员的销售台数和总价。Index on 日期日期 tag rq Total on 日期日期 to rqtj fields 台数台数,总价总价 Index on 日期日期+售货员售货员 tag rqshy Total on 日期日期+售货员售货员 to rqshtj fields 台台数数,总价总价3.6 数据交换 3.6.1 数组与数据表的数据交换 1.将数据表中的记录数据保存到数组中将数
24、据表中的记录数据保存到数组中【格式一格式一】SCATTER FIELDS 字段名表字段名表 MEMO TO 数组名数组名【格式二格式二】COPY TO ARRAY 数组名数组名FIELDS 字段名表字段名表 范围范围FOR 逻辑逻辑表达式表达式【功能功能】将当前打开的数据表中的某些记将当前打开的数据表中的某些记录数据存储在数组中。录数据存储在数组中。2.将数组中的数据传递到当前数据表中将数组中的数据传递到当前数据表中【格式一格式一】GATHER FROM 数组名数组名 FIELDS 字段名表字段名表MEMO【格式二格式二】APPEND FROM ARRAY 数组名数组名 FOR 逻辑表达式逻辑
25、表达式FIELDS 字段名表字段名表【功能功能】将数组中各元素的数据传递给当前打开将数组中各元素的数据传递给当前打开的数据表中。的数据表中。注意:请读者将注意:请读者将COPY TO ARRAY与与SCATTER、APPEND FROM ARRAY与与GATHER FROM的差的差别搞清楚。别搞清楚。例:将第例:将第1条记录与第条记录与第4条记录互换条记录互换 go 1 Scatter to a&把第一条记录存到变量把第一条记录存到变量a中中 go 4 Scatter to b&把第四条记录存到变量把第四条记录存到变量b中中 go 1 gather from b&把把b中存的第中存的第4条记录
展开阅读全文