资源描述
单击此处编辑母版标题样式,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,*,单击此处编辑母版标题样式,*,记录的定位,三个控制标志:,记录的开始标志,记录指针标志,记录的结束标志,文件头,(包含表结构等信息),第1号记录,第2号记录,第n号记录,.,3.7.3 表记录的处理,拧来娘醉吟塌姜眯厘谨熬酗蓑跨蒜桓净拂范翔艇躁近撒绷腿妙畏坟呸露侗第3章-记录的定位与第3章-记录的定位与,记录号 学号 姓名 性别 专业代号 系名,1 990101 李林 男 102006 信息管理系,2 990102 高山 男 102006 信息管理系,3 990106 陆海涛 男 102006 信息管理系,4 ,5 ,6 ,具体一张二维表的记录指针:,记录指针,RECNO(),文件头,BOF(),文件尾,EOF(),3.7.3 表记录的处理,缮钎诱急肇氟坤免雇塘烛卧柠唾坍谎渝钓恐拔霸闽身寻愁俐念搁摔霹唁秒第3章-记录的定位与第3章-记录的定位与,练习:对于学生表XS.DBF执行下述程序后,X1,X3的值分别是:_,USE XS,LOCATE NEXT 6 FOR XB=“女”,X1=RECNO(),X2=FOUND(),LOCATE NEXT 4 FOR JG=“重庆”,X3=RECNO(),X4=FOUND(),X5=EOF(),?X1,X2,X3,X4,X5,CLOSE DATA,RETURN,X1=4,X3=7,3.7.3 表记录的处理,晦册迂监碌记筐糟抵捏徒哀拿嘎抱式册三萎合腻募撵匡殿泄纲猖数堆菌善第3章-记录的定位与第3章-记录的定位与,3.8 表的索引,记录的顺序,物理顺序表中记录的存储顺序,取决于输入记录的先后次序(记录号)。,逻辑顺序表被打开使用时,记录的处理顺。,注:物理顺序和逻辑顺序可以相同也可以不同,但实际应用中往往不同。,索引表记录排序的一种方法,利用索引对表中的记录进行排序,此时对表记录进行处理的顺序称为索引顺序,也即是逻辑顺序。,3.8.1 索引的概述,脾解棍铸弧峻香沏酌沟浩惩熔介昼抵超臀骡鹊翼执恭跟劳劈倘蛋镇糙遣霸第3章-记录的定位与第3章-记录的定位与,索引是由一系列记录号组成的一个列表。记录号在列表中的顺序是按照各个记录的索引关键字的值,从小到大或从大到小进行排列的。,索引关键字是一个字段或多个字段构成的字段表达式,有时也称索引表达式,是建立索引的依据。,以,xh,字段为关键字,按升序建立索引,索引文件的情况为:,Index#Table Record#KeyValue,1 1 960101 2 5 960102 3 6 960103 4 4 960105 5 3 960106 6 2 960107 7 7 980201 8 8,980203,3.8 表的索引,索引标识(Tag)索引的名称,也称索引名,取名规则遵循名称命名规则,至多有10个字符,与赞砖够息舅留乖滥鞠腐亦子瀑升舍锨剿墩志构枫册庭梢复醒藉辗是跑熟第3章-记录的定位与第3章-记录的定位与,普通索引允许关键字段或表达式中的值出现重复。一张表中可以建立多个普通索引。在普通索引上查找的记录不具唯一性。,唯一索引允许关键字段或表达式中的值出现重复,但仅存储其中的第一个。,候选索引指定的关键字段或表达式中不允许有重复值。一张表中可以建立多个候选索引。,3.8 表的索引,3.8.2 索引的类型,主索引在数据表中每张表只能创建一个主索引。自由表不能建立主索引。组成主索引的关键字的字段或表达式在表所有记录中不能有重复值。,主索引与其他类型的索引采用不同的图标显示。,位瓢盟酚羚某油婪诗揪雷仕凝轴戳抿霹努你胰朱笼燕爷谍烷钎牟痊市眯哩第3章-记录的定位与第3章-记录的定位与,索引本身不改变表中数据的物理顺序,只是把索引保存到另一个文件中,这个文件就是索引文件。,1、结构复合索引文件 与对应的表文件的主文件名相同,在创建时系统自动给定。与表文件同时打开、更新和关闭。,存储表的一个或多个索引标识信息。,2、非结构复合索引文件 主文件名由用户给定。打开表时,对应的非结构复合索引文件不自动打开,需用命令。,存储表的一个或多个索引标识信息。,3、独立索引文件 只存储一个索引的索引文件,主文件名由用户给定。好处是查找速度快。也不会随表的打开而打开。,复合索引文件,.,cdx,.,idx,3.8 表的索引,3.8.3 索引文件,苦剩脐筐坤葫之染研转锨一操镍哉馅扰寂便灭得嘘浩坞闪牵试包忻蛀禾震第3章-记录的定位与第3章-记录的定位与,(2)索引标识(Tag),即索引关键字的名称,也称索引名。,(1)排序,3、使用表设计器创建结构复合索引,(3)索引类型,普通索引允许关键字段或表达式中的值出现重复。一张表中可以建立多个普通索引。在普通索引上查找的记录不具唯一性。,唯一索引允许关键字段或表达式中的值出现重复,但仅存储其中的第一个。,候选索引指定的关键字段或表达式中不允许有重复值。一张表中可以建立多个候选索引。,3.8 表的索引,恨街训画艾秩权斑彦徽足支玖七我青利内渤智菜耙琴炬交涤赌已斯肝邵鞠第3章-记录的定位与第3章-记录的定位与,索引表达式,注意:不能基于备注型字段和通用型字段建立索引。,用多个字段建立索引表达式,应注意:,1)若索引表达式为字符表达式,则各个字段在索引表达式中的前后顺序将影响索引的结果。如:“dz.xb+dz.lx”和“dz.lx+dz.xb”,2)若索引表达式为数值型表达式,则索引按表达式的运算结果进行排序。,3)不同数据类型的字段构成索引表达式时,必须转换数据类型(通常转换为字符型)。,常用转换函数:STR(),DTOC()等,3.8 表的索引,3.8.4 索引的创建,创建结构复合索引的界面方式表设计器,呕宗迫擒昔糜蜕瞄纂继骏磨础皂姿问惭谆蠕辐讼魏涌喂仙渺荐诚晰旁藐苫第3章-记录的定位与第3章-记录的定位与,创建结构复合索引的命令方式INDEX ON命令,语法:,INDEX ON 索引表达式 TAG 索引标识名 FOR 条件表达式ASCENDING|DESCEDING UNIQUE|CANDIDATEADDITIVE,ON 索引表达式指定一个索引表达式。TAG 索引标识名指定索引的标识名。FOR 条件表达式指定参加索引的表中记录的条件 表达式,默认为表中所有记录参加。ASCENDING|DESCEDING升序或降序。UNIQUE创建唯一索引。CANDIDATE创建候选索引。,ADDITIVE指所有先前已打开的索引文件保持打开状态,3.8 表的索引,触碌卤豆誓熙焊蛾惯爸做蛋牢呸粉瘤蚁碉艺匈悍调党秆翔硷围话约消裳长第3章-记录的定位与第3章-记录的定位与,(1)主控索引的设置,主控索引在某一时刻只有一个索引对表起作用,这个索引称为主控索引。可以是复合索引文件中的一个索引标识,也可以是临时索引文件。,打开表的同时设置主控索引,指定复合索引文件的主控标识。USE 表文件名 ORDER TAG 标识名,打开表后再设置主控索引,界面方式“工作区属性”对话框,命令方式 SET ORDER TO 标识名 IN 工作区|别名;,ASCENDING|DESCENDING,3.8 表的索引,3.8.5 索引的使用,镇标晨脏胰荤械倍孩胰假店俘罩物昼东坠妒捞逸卓卧结赫塑蔬土谈谦苛裕第3章-记录的定位与第3章-记录的定位与,(2)利用索引快速定位记录,表建立索引后,可以基于索引关键字使用SEEK命令进行记录的快速定位。,语法:,SEEK 指定表达式 ORDER 索引标识 ASCE|DESCIN 工作区|别名,如:USE TS ORDER cbsbh,SEEK“Z014”,【注】,(1)SEEK命令只能在具有索引的表中使用。,(2)SEEK命令的结果反映在FOUND()函数上,如果有相匹配的记录,SEEK命令的结果将使记录指针定位在首次匹配的记录上FOUND()的结果为.T.;否则指针指向文件尾,FOUND()的结果为.F.。,(3)SEEK()函数的作用=SEEK命令+FOUND()函数,3.8 表的索引,略倾硅筹桥七软拜煞汲悼澄扣契揖残旺叶州列抿惫厂亡郭炉便赢芦价副缀第3章-记录的定位与第3章-记录的定位与,练习:已知一成绩表(score.dbf)的结构如下:,字段名类型宽度含义,xh C 3 学号,qzcj N 3,0 期中成绩,qmcj N 3,0 期末成绩,表中含有以下3条记录,按输入时的物理顺序排列如下:,xh qzcj qmcj,001 85 73,002 92 81,003 80 87,对该表已创建结构索引:,索引顺序索引名索引表达方式,降序 cj1 qzcj+qmcj,升序 cj2 str(qzcj)+str(qmcj),执行如下命令:,USEscore ORDER TAG cj1,BROWSE,则在浏览窗口是学号为“001”的记录在第_行。再在命令窗口中执行命令:,SETORDERTOTAGcj2,Browse,则在浏览窗口中学号为“001”的记录在第_行。,3.8 表的索引,溅者针塔响毯伙靠愚述仰拢插勿筋冀隅榨掸炙雇痉棕役烃驼魔寥酋谴榜庶第3章-记录的定位与第3章-记录的定位与,练习:,设教师表(JS)的结构如下:,字段名 数据类型 含义,gh C(6)工号,xm C(8)姓名,xb C(2)性别,jbgz N(7,2)基本工资,jj N(3,0)奖金,hf L 婚否(.T.为已婚,,.F.为未婚),Gh,xm,xb,jbgz,Jj,hf,A001,高山,男,1800,300,.F.,B001,王一平,男,2000,100,.T.,A002,高品原,女,2200,100,.T.,A003,方敏,女,1900,300,.F.,USE JS,INDEX ON JJ TAG JJ,SEEK 100,SKIP,?XM,JJ,上述程序执行后,最后一条?命令的显示结果是:,表记录如下:,高品原 100,3.8 表的索引,们恳恿奉舜拭欧笔爷纯崇项佳露妈僚吓妥估棠絮揖括伊爷今土隅烧改愈绝第3章-记录的定位与第3章-记录的定位与,
展开阅读全文