




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4.1数据库记录的排序与索引4.2数据库的查询,第4章数据库的排序、索引和查询,返回主目录,第4章数据库的排序、索引和查询,.数据库记录的排序与索引4.1.1数据库记录的排序排序命令的常用格式:SORTTOWB路径WB生成库文件名ON表达式1/A/D/C,;FIELDS字段名表FOR记录选择条件其中:TO指定本命令生成的排序库的文件名。,/A、/D依次表示按排序关键值的升序、降序排列,缺省值为/A。/C表示当关键值是字符型数据时,不分大小写。缺省值是分大小写,C可以和/A或/D组合使用,如/AC或/DC。FIELDS在对生成库的字段进行选择时使用。FOR在对生成库的记录进行选择时使用。路径如果生成的索引文件不存储在当前目录中,应当指定存储路径。在网络环境下的用户,一般需要指定用户可存取目录的路径。注意:被排序库是当前库,生成库存入了磁盘。若要使用生成的排序库,应先打开它。,例4.1对数据库RSH.DBF按技术等级的降序排列,若技术等级相同,则按工资的升序排列。生成库不选择字段、不选择记录,生成库取名为RSHst1.DBF。为此,依次执行下列命令:USED:rsh(打开需要排序的数据库)SORTTOD:rshst1ON技术等级J/D,工资(排序命令)USED:rshst1(打开生成的排序库)BROW(浏览分类库中记录的排列),例4.2对数据库RSH.DBF按技术等级的降序排列。生成库只选用姓名、技术等级、工资三个字段,并且生成库只存入工资大于300元的记录,生成库名为RSHst2.DBF。为此,依次执行命令:USED:rshSORTTOD:rshst2ON技术等级/DFIEL姓名,技术等级,工资FOR工资300,4.1.2数据库的索引对数据库进行索引操作后,被索引的数据库中,记录的物理存放位置并不改变,只是生成一个能反映按索引关键字排列的索引表文件(索引文件)。如果数据库及其索引文件都被打开,则数据库中的记录将按索引关键字的值的顺序显示(显示的是逻辑顺序)。索引操作分为单索引和复合索引,所生成的索引文件类型分别是.IDX、.CDX。上面在对于数据库索引的叙述中,并没有说明对数据库进行索引操作后记录的排列方式。实际上,数据库索引后的记录排列方式,在单索引操作和复合索引操作中有不同的规定。在单索引操作中,用户不能指定记录的排列方式,索引后,记录一律按索引关键值的升序排列;在复合索引操作中,用户可以指定记录按索引关键值的升序或降序排列。,(1)单索引命令:INDEXON索引关键字表达式TO路径生成的索引文件名FOR选择条件UNIQUECOMPACTADDITIVE其中:FOR条件只对符合条件的记录进行索引。UNIQUE索引表达式值相同时,只把第一个记录的索引信息记入索引文件。COMPACT建立压缩索引文件,否则建立标准索引文件。,ADDITIVE当执行本命令时,被索引的数据库中已打开的索引文件仍保持打开状态,否则,除“结构复合索引文件”以外的所有索引文件被关闭。例4.3对数据库Rsh.dbf按性别进行索引,为此依次打入命令:USED:rshINDEXON性别TOD:rshxb此时,可在Windows的资源管理器下看到一个名为Rshxb.idx的文件。注意,扩展名.IDX是系统自动附加的。,例4.4对数据库Rsh.dbf,按字段名表达式“姓名+性别”进行索引,为此打入命令:USED:rshINDEXON姓名+性别TOD:rshxmxb(2)说明:必须由同类型的字段名、常量、变量、函数组成索引表达式。系统将按表达式的结果值进行索引。例如,设数据库GZ060.DBF中有数值型字段A3、A4、A5,则执行索引命令:INDEXONA3+A4+A5TOD:xyz,数据库中的记录将按三个字段的代数和由小到大排列。此时,若用快速查找命令也只能按代数和查找,不能区分每个数值字段的值。在已打开索引的数据库中,记录指针按索引顺序(逻辑顺序)移动。2.建立复合索引文件复合索引文件是复合索引命令生成的索引文件。复合索引文件是分别按多个索引表达式进行索引的,由于多个索引信息都保存在同一个索引文件里,所以需要分别用不同的索引标记名(TAG名)来区分不同的索引,一个索引标记名的作用相当于一个单索引文件。复合索引文件的扩展名由系统自动附加.CDX。,复合索引文件又分为结构复合索引文件和非结构复合索引文件。与被索引的数据库文件同名的复合索引文件叫做结构复合索引文件,否则叫做非结构复合索引文件,简称为复合索引文件。使用结构复合索引文件的优点是,结构复合索引文件随数据库的打开而打开、随数据库的关闭而关闭。(1)复合索引操作的命令格式:INDEXON索引关键字表达式TAG索引标记名OF路径复合索引文件名FOR条件UNIQUUEADDITIVEASCENDINGDESCENDING(2)说明:可选参数路径、FOR条件、UNIQUE、ADDITIVE等和单索引命令相同。,参数ASCENDING(升序)和DESCENDING(降序)用于指定索引时的记录排列方式,缺省值是ASCENDING。这种指定记录排列方式的参数,在单索引操作命令中是不允许使用的。是否选择OF复合索引文件名,决定是否建立结构复合索引:如果不选择OF复合索引文件名,则建立和数据库文件同名的结构复合索引文件。命令执行时系统将检测当前目录中是否已存在结构复合索引文件。若有,则只是向结构复合索引文件中追加一个新的TAG索引标记;若没有则建立一个结构复合索引文件。如果选择OF复合索引文件名,则建立非结构复合索引文件。命令执行时,系统将自动检查当前目录中是否有OF后所指定的非结构复合索引文件。,若有,则只是向指定的非结构复合索引文件中追加一个新的TAG索引标记;若没有,则建立一个非结构复合索引文件。索引标记名是用户指定的标识符,最好用助记符号,例如,用字段名。例4.5分别按工资、性别建立人事档案数据库的复合索引文件。USED:rsWB(要先打开作为操作对象的数据库)INDEXON工资TAG工资OFD:rsh1DW(建立非结构复合索引文件rsh1.CDX)INDEXON性别TAG性别OFD:rsh1,执行最后的一条索引命令时,因为所指定的非结构复合索引文件在指定的目录中已经存在,所以只是向rsh1.CDX追加一个TAG索引标记名(性别)。下面的命令是建立结构复合索引文件,其索引文件的文件名是什么?INDEXON姓名TAG姓名因为该命令中没有选择OF,所以是针对结构复合索引文件的操作,如果该数据库的结构复合索引文件已存在,则只追加一个TAG索引标记。3.用选单方式建立索引文件首先应当打开一个需要索引的数据库文件。用选单方式建立当前数据库的索引文件的操作步骤如下:,(1)选择系统菜单File的子菜单“New.”,进入New对话框,从FileType区选择Index,按下“New”按钮后,进入Index对话框(见图4.1)。(2)Index对话框的操作:在Fields区内选择作为索引关键字的字段名;选择索引顺序(Ascending或Descending)及是否对键值相等的记录只保存第一条记录的索引信息(Unique);,单击“AddtoIndexList”按钮,将所选择的字段,按选择的索引顺序加入到IndexKey区,如果单击“NewKey”按钮,则取消刚刚选择的索引键;可多次选择并加入索引键;如果要从IndexKey区中取消某一个索引键,则用鼠标选中欲取消的键后单击“RemoveFromList”按钮;在OutputFile区,选择索引文件类型,其中复选框:CompoundIndexFile(CDX)建立非结构复合索引文件StructuralIndexStructure建立结构复合索引文件SingleIndexFile(IDX)建立单索引文件,CompactIndexStructure建立压缩结构的索引文件给出文件名并单击“OK”按钮。注意:因为结构复合索引文件是随数据库的打开而打开、随数据库的关闭而关闭的,所以如果当前数据库已经有了结构复合索引文件,那么进入Index对话框后,将自动显示结构复合索引文件的文件名和该索引文件内所包含的索引Tag标记名,此后的操作可以追加新索引Tag标记。但是,不能在IndexKey区删除原有的Tag标记。如果要删除原有的Tag标记,应使用后面将要介绍的专用于删除Tag标记的命令。,4.1.3索引文件的打开与关闭如果要按索引使用数据库,必须打开其索引文件。当打开数据库时,其结构复合索引文件会随之打开。但是使用单索引文件和非结构复合索引文件时,需要使用索引文件打开命令才能打开索引文件。1.索引文件的打开(1)对数据库进行索引时,所生成的索引文件已处于打开状态。例如,顺序执行下列两条命令:USED:rshINDEXON姓名TOD:inxm,则此时的INXM.IDX文件就处于打开状态。(2)如果要打开的索引文件已存在,则可以在打开数据库的命令中,使用关键字INDEX指定要打开的索引文件。在打开数据库的同时打开索引文件的命令格式是:USE路径数据库文件名INDEX索引文件名表例如,设数据库Rsh.dbf的索引文件INXM.IDX在当前目录下已存在,则下面的命令使索引文件随数据库打开:USED:rshINDEXD:inxm(3)如果数据库已打开,且该数据库要打开的索引文件在当前目录下已存在,则可以用专门的索引文件打开命令打开该文件。索引文件打开命令格式为:SETINDEXTO路径索引文件名表ADDITIVE,其中:索引文件名表可以指定多个要打开的索引文件,各索引文件名之间用逗号作分隔符。ADDITIVE不关闭已经打开的索引文件的情况下,追加打开索引文件。例4.6设数据库Rsh.dbf存在单索引文件INXM、INXB、INGZ,使用SETINDXTO命令打开索引文件。USED:rshSETINDEXTOD:inxm,D:inxb,D:ingz(打开三个索引文件)SETINDEXTOD:ingzADDITIVE(再追加打开一个索引文件),2.索引文件的关闭(1)当关闭数据库时,它的所有打开的索引文件随之关闭。(2)不关闭数据库,可以使用下列命令关闭它的索引文件:SETINDEXTO(关闭除结构复合索引文件之外的所有索引文件)CLOSEALL(关闭所有打开的文件)CLEARAL(关闭所有打开的文件并清除用户内存变量),4.1.4主索引的指定和改变如果当前数据库的多个单索引文件或复合索引文件已被打开,则数据库中记录的逻辑排列顺序,只能按其中一个索引文件中的索引关键字排列。对当前记录排列起作用的索引,叫主索引。显然,可以按需要改变主索引。(1)用USE命令打开多个单索引文件时,在关键字INDEX后面所指定的第一个索引文件就是主索引文件,以后还可以用命令:SETORDERTO单索引文件名改变当前索引文件。例4.7USED:rshINDEXD:inxm,D:inxb,D:ingz(inxm.idx是主索引),SETORDERTOingz(主索引文件改为ingz.idx)(2)对已打开的复合索引文件,如果用户只知道它包含了哪些TAG索引标记,并不知道哪个TAG索引标记是主索引标记,为了指定一个主索引标记,应使用主索引标记指定命令:SETORDERTOTAG标记名OF路径非结构复合索引文件名例4.8设数据库rsh.dbf的复合索引文件incdx.CDX已存在,它包含有索引标记名“姓名”。执行下列命令,观察指定索引标记后的记录排列情况:USED:rshSETINDEXTOD:incdx(打开一个复合索引文件),SETORDERTO姓名OFD:incdx(指定索引标记名“姓名”为主索引)BROW当执行命令SETORDERTO或SETORDERTO0后,则取消复合索引文件中所有索引标记对数据库记录排列的作用,即不关闭复合索引文件,恢复数据库中记录排列的物理顺序。说明:若对当前数据库分别进行了多次索引(包括单索引、非结构复合索引、结构复合索引),则最后的一次索引是主索引。,如果一个数据库有结构复合索引文件,虽然打开该数据库的同时,其结构复合索引文件也随之打开,但是只有指定了主索引标记之后,结构复合索引文件才起作用。,4.1.5索引文件的修改对数据库中的记录进行增、删、改、插等操作时,索引文件中原来存储的记录顺序必须随之改变。但是,如果在对数据库中的数据进行修改时,没有打开对应的索引文件,或者被修改的字段值不是主索引,那么索引文件中的索引信息就不能随数据库数据的修改而改变,以后使用这种未随之改变的索引文件时,就会出现索引错误。下列两种方法,可以解决由于数据库更新与索引文件更新不同步出现的问题:(1)再次索引:INDEXON索引表达式TO路径索引文件名。(2)使用重新索引命令:REINDEX。,4.1.6复合索引文件组合或分离单索引文件1.把单索引文件加入复合索引文件的命令命令格式:COPYINDEX路径单索引文件名表/ALLTO路径非结构复合索引文件名说明:(1)单索引文件名表中所列单索引文件必须是已被打开的。(2)若使用ALL,则所有已打开的单索引文件都加入复合索引文件。,(3)若不选择TO参数,则表示将单索引文件加入到结构复合索引文件;如果当前数据库不存在结构复合索引文件,则建立该文件;若选择了参数TO,但是指定的非结构复合索引文件不存在,则建立该文件。(4)单索引文件加入到复合索引文件后,代表单索引文件的TAG标记是单索引文件的主名,而不是当初建立单索引文件时的索引关键字。例4.9设数据库Rsh.dbf在指定的目录下有三个单索引文件(Inxm.idx、Inxb.idx、Ingx.idx),将这三个单索引文件追加到一个复合索引文件中。为此,依次打入下列命令:,USED:rshINDEXD:inxm,D:inxb,D:ingzCOPYINDEXinxm,inxb,ingzTOD:incdx若上面的命令中所指定的复合索引文件INCDX.CDX不存在,本命令将建立该文件。2.由复合索引文件产生单索引文件的命令命令格式:COPYTAG标记名表OF路径复合索引文件名TO路径单索引文件名说明:若省略OF复合索引文件名,则表示使用结构复合索引文件。,例4.10设数据库Rsh.dbf存在结构复合索引文件和复合索引文件Incdx.cdx,其结构复合索引文件中包含索引标记“姓名”、复合索引文件Incdx.cdx中包含索引标记“性别”,执行下列命令,分别按TAG标记“姓名”、“性别”,生成两个单索引文件。USED:rsh(打开数据库和结构复合索引文件)COPYTAG姓名TOD:inxm(从结构复合索引文件产生单索引文件)COPYTAG性别OFD:incdxTOD:inxb(从复合索引文件产生单索引文件),4.1.7索引文件和索引标记的删除1.删除单索引文件对于单索引文件(.IDX),可以在Windows(或DOS)下,用文件删除命令删除。2.删除复合索引文件中指定的TAG索引标记的命令命令格式:DELETETAG索引标记1OF路径复合索引文件名1,索引标记2OF路径复合索引文件2说明:(1)若省略OF非结构复合索引文件名,则表示从结构复合索引文件中删除索引标记。,(2)一条删除命令可以删除分属不同复合索引文件中的标记,但是所用复合索引文件应当是被打开的文件。3.删除复合索引文件因为数据库文件中记录了复合索引文件的有关信息,如果删除复合索引文件,这些信息并不能从数据库中删除,所以在Windows(或DOS)下删除复合索引文件是不正确的,必须用FoxPro的结构复合索引文件删除命令。删除复合索引文件的命令格式为DELETETAGALLOF路径非结构复合索引文件名注意:被删除的非结构复合索引文件必须是已经打开的。,.数据库的查询,4.2.1数据库的顺序查询按数据库记录的物理顺序或逻辑顺序,进行逐条记录查询的方式,叫做数据库的顺序查询。顺序查询的命令格式:LOCATE范围FOR条件(1)顺序查询命令的动态执行过程:在指定的范围内,逐条记录查找满足条件的记录。当找到第一个满足条件的记录后,该记录成为当前记录(即数据库的记录指针指向所找到的记录)。如果还要按指定的范围和条件继续查询,应当反复使用CONTINUE命令,直到在指定的范围内找不到满足条件的记录为止。,当找不到满足条件的记录时,记录指针指向了指定范围内的最后一条记录,如果没有指定查找范围,则记录指针指向数据库文件的尾标记。当找不到满足条件的记录时,屏幕显示:EndofLocatescope。(2)说明:CONTINUE命令只有和LOCATE命令配合起来,才能使用。顺序查找命令中,如果缺省FOR条件,则指定范围中的每一条记录都是符合条件的记录,显然这种查询是没有意义的,故FOR条件不能缺省。例4.11从数据库Rsh.dbf中顺序查找工资小于500元的三条记录。为此,顺序执行下列命令:,USED:rshLOCATEFOR工资500(执行顺序查找命令)DISP(显示找到的第一条记录)COMTINUE(继续顺序查找)DISP(显示找到的第二条记录)CONTINUE(再执行一次顺序查找命令)DISP(显示找到的第三条记录),4.2.2数据库记录的快速查询按用户指定的查找条件,在索引文件中找到与之匹配的索引关键值,则记录指针会立即指向数据库文件中对应的记录,这种查询方式叫做快速查询。显然,进行快速查询的数据库,必须是以所查找的关键字索引,并且是以此为主索引打开的数据库。快速查询命令有:FIND和SEEK。1.FIND命令命令格式:FIND字符型常量数值型常量&字符型变量,(1)命令的动态执行过程:每次执行FIND命令,都是从数据库的逻辑首记录开始,按FIND命令指定的查询关键字的值查找能与之匹配的第一个记录。如果找到了匹配记录,函数FOUND()的值为真,否则屏幕显示Nofind,且函数FOUND()的值为假,而函数EOF()的值为真。但是,当从数据库中找到第一条满足条件的记录之后,如果后面还有能与之匹配的记录时,反复执行FIND命令,仍然指向与之匹配的第一条记录,并不能指向后面那些能与之匹配的记录。,例4.12设数据库Rsh.dbf中有姓名为李娟的职工而无姓名为张三的职工。分别用快速查找命令,查找这两个职工的记录。为此,顺序执行下列命令:USED:rsh(打开操作对象库)INDEXON姓名TOD:inxm(为快速查找某一姓名的职工,必须按姓名索引)FIND李娟(快速查找姓名叫李娟的职工)DISP(显示被找到的职工的记录)FIND张三(查找姓名叫张三的职工,屏幕将显示Nofind),?EOF()(测试指针是否指向了文件的尾标记,将显示.T.)?FOUND()(测试是否找到的函数值为假,将显示.F.)(2)说明:所查询数据必须和主索引关键字相对应。所查询数据如果是字符型常量,可以不加字符串界定符;但是,当字符串中有空格字符时,必须加界定符。例4.13从数据库Rsh.dbf中,快速查找姓名为李磊的女职工。,USED:rsh(打开操作对象数据库)INDEXON姓名+性别TOD:inxmxb(按表达式“姓名+性别”进行索引)FIND李磊女(因为查找字符串中有空格,需加界定符)DISP(显示找到的职工)注意:有时所查询的数据中,英文字母的大小写表示不同的字符。如果作为查询关键值的字符串已被存入了一个字符型变量,快速查找该变量时,需要用替换函数(即FIND字符型变量名)。例4.14问题
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025垫资合同范本:文化旅游项目资金投入
- 2025年度商品混凝土原材料供应与加工合同
- 2025年新型环保材料全国总代理销售合同
- 2025版教育系统岗位配置与教师职称评定合作协议
- 2025版全国蔬菜种植基地居间销售合同
- 2025年度水稳材料运输与配送服务合同模板
- 重庆主城区半期高2024届高三第一学期期中考试生物试题
- 2025年高效车间承包运营与管理合同
- 2025年商品房代理销售项目风险控制及收益分配协议
- 2025年度电子商务区域代理产品售后服务与品牌保护协议
- 工程项目决算书
- DZ∕T 0399-2022 矿山资源储量管理规范(正式版)
- 2024年国药控股股份有限公司招聘笔试冲刺题(带答案解析)
- “新高考、新课标、新教材”背景下2025届高考地理二轮三轮复习备考策略
- 葡萄糖耐量试验课件
- 常见泌尿系统疾病的护理与治疗
- 儿童读写三十讲
- 可编程控制器系统应用编程(1+X)培训考试题库汇总(附答案)
- 不等式及其基本性质说课课件
- 肺切除术后支气管胸膜瘘处理策略
- 中国有色金属行业:决战元素周期表-20210810-海通国际-201正式版
评论
0/150
提交评论