《数据表基本操作课件》由会员分享,可在线阅读,更多相关《数据表基本操作课件(71页珍藏版)》请在金锄头文库上搜索。
1、第第3章章VisualFoxPro6.0数据表基本操作数据表基本操作 数据表基本操作数据表基本操作2设置默认目录设置默认目录v(1)菜单操作方式)菜单操作方式“工具工具”“选项选项”“文件位置文件位置”“默认目录默认目录”v(2)命令方式)命令方式SETDEFAULTTOD:vfpv注意:注意:VFP中所有命令全部使用英文标点符号中所有命令全部使用英文标点符号2数据表基本操作数据表基本操作3创建自由表创建自由表v菜单操作方式菜单操作方式v表文件扩展名表文件扩展名*.dbfv备注型字段或通用型字段数据的输入方法备注型字段或通用型字段数据的输入方法(Ctrl+Home)v使用备注型、通用型字段后,
2、系统会自动生成备注文件,扩展名使用备注型、通用型字段后,系统会自动生成备注文件,扩展名为为.FPT,此文件不可删除此文件不可删除vCtrl+w保存所输入的数据保存所输入的数据ctrl+q取消所输入的数据取消所输入的数据v窗口分割器窗口分割器3数据表基本操作数据表基本操作4v命令方式命令方式v【格式格式1】 Createv【格式格式2】 Createtable(,)v字符型字符型C,数值型,数值型N,日期型,日期型Dv逻辑型逻辑型L,备注型,备注型M,通用性,通用性Gv例:例:createtablexscj(学号学号c(5),课程号课程号c(4),成绩成绩n(6,3) 4数据表基本操作数据表基本
3、操作5Visual FoxPro 6.0中的命令 vVisualFoxPro6.0命令的一般格式命令的一般格式v命令动词命令动词FIELDSFOR|WHILEv范围子句范围子句vALL表中全部记录表中全部记录vRECORDn表中指定的第表中指定的第n条记录条记录vNEXTn从表中当前记录开始向下的从表中当前记录开始向下的n条记录条记录vREST从表中当前记录开始到最后一条记录为止的所有记录从表中当前记录开始到最后一条记录为止的所有记录 5数据表基本操作数据表基本操作6FOR和WHILE选项的不同v(1)FOR子句是子句是从首记录开始从首记录开始判断逻辑表达式的值是真还判断逻辑表达式的值是真还是
4、假,而是假,而WHILE子句则是子句则是从当前记录开始从当前记录开始判断逻辑表达式值判断逻辑表达式值的真假。的真假。v(2)FOR子句子句是对整个表中所有满足条件的记录进行操作,是对整个表中所有满足条件的记录进行操作,而而WHILE子句子句则是从当前记录开始对满足条件的连续记录进则是从当前记录开始对满足条件的连续记录进行操作,即遇到不满足条件的记录,则立即停止操作,不管行操作,即遇到不满足条件的记录,则立即停止操作,不管其后是否还有满足条件的记录。其后是否还有满足条件的记录。v(3)FOR和和WHILE子句在某些命令中既可以单独使用,也子句在某些命令中既可以单独使用,也可以同时使用,可以同时使
5、用,WHILE优先于优先于FOR。6数据表基本操作数据表基本操作7命令的使用 v(1)每条命令以命令动词开头,动词后的选项)每条命令以命令动词开头,动词后的选项先后顺序可先后顺序可以任意以任意,但必须符合命令格式的规定。,但必须符合命令格式的规定。v(2)用)用空格空格来分隔每条命令中的各个选择项。来分隔每条命令中的各个选择项。v(3)分号作为)分号作为续行符(续行符(;)用来表示下行仍是同一命令的一用来表示下行仍是同一命令的一部分,这样就可以把一条长命令分成多行来写,但部分,这样就可以把一条长命令分成多行来写,但命令的最命令的最后一行不能以分号结尾后一行不能以分号结尾。v(4)命令动词、各短
6、语中的关键字、函数名都可以)命令动词、各短语中的关键字、函数名都可以简写为简写为4个字符,不区分大小写个字符,不区分大小写。7数据表基本操作数据表基本操作8表记录操作1.表的打开与关闭表的打开与关闭v表的打开表的打开v命令格式:命令格式:USEv表的关闭表的关闭v格式格式:USE&关闭当前工作区中的表关闭当前工作区中的表vCLOSEALL&数据库、索引、项目管理器等同时被关闭数据库、索引、项目管理器等同时被关闭8数据表基本操作数据表基本操作92. 表记录的浏览 v菜单方式菜单方式v命令方式命令方式v格式格式1:BROWSEFIELDSFOR|WHILEv格式格式2:DISPLAYFIELDSF
7、OR|WHILETOPRINTOFFv格式格式3:LISTFIELDSFOR|WHILETOPRINTOFFvBROWSE命令执行时打开命令执行时打开“浏览浏览”窗口。窗口。DISP、LIST将显示结果送到将显示结果送到屏幕。屏幕。v有有“OFF”时,不显示记录号时,不显示记录号9数据表基本操作数据表基本操作10LIST和DISPLAY命令的区别v(1)省略省略时,时,LIST默认值为默认值为ALL,显示所有,显示所有记录;省略记录;省略和和时,时,DISPLAY默认值默认值为当前记录为当前记录,即显示一条记录。,即显示一条记录。v(2)当显示内容较多时,当显示内容较多时,DISPLAY是分页
8、显示是分页显示;LIST不分页不分页,而是连续地滚动显示。,而是连续地滚动显示。10数据表基本操作数据表基本操作113.表记录的定位 记录的指针记录的指针系统在打开一个表文系统在打开一个表文件后将自动生成三个件后将自动生成三个控制标志:控制标志:记录开始记录开始标志、记录指针标志、标志、记录指针标志、记录结束标志。记录结束标志。文件头文件头(含表结构等信息含表结构等信息)文件记录开始标志文件记录开始标志第第1条记录条记录第第n条记录条记录文件记录结束标志文件记录结束标志Skip-1Skip111数据表基本操作数据表基本操作12v根据定位的方式,分为绝对定位(根据定位的方式,分为绝对定位(GO或
9、或GOTO)、相对定)、相对定位(位(SKIP)、条件定位()、条件定位(LOCATE)和索引定位()和索引定位(FIND或或SEEK)四种。)四种。v当表打开时,当前记录为第一条记录。当表打开时,当前记录为第一条记录。v菜单方式定位记录菜单方式定位记录v“表表”“转到记录转到记录” 12数据表基本操作数据表基本操作13命令方式定位记录 (1)绝对定位(绝对定位(GO)v命令格式命令格式1:GO|TOP|BOTTOMv命令格式命令格式2:(2)相对定位相对定位(SKIP)v命令格式命令格式:SKIPv当当为为1时可省略,即时可省略,即SKIP等价于等价于SKIP1。13数据表基本操作数据表基本
10、操作14常用测试函数vBOF() 是否在开始标志处vEOF() 是否在结束标志处vRECNO() 当前记录号vRECCOUNT() 表文件总记录数刚打开表时记录指针的情况刚打开表时记录指针的情况表中表中表中表中记录记录情况情况情况情况BOF( ) BOF( ) 的的的的值值RECNO( )RECNO( )的的的的值值EOF( )EOF( )的的的的值值无无无无记录记录.T.T.1 1.T.T.有有有有记录记录.F.F.1 1.F.F.14数据表基本操作数据表基本操作15 4.表记录的修改 (1)在在“浏览浏览”窗口修改表记录窗口修改表记录(2)在在“编辑编辑”窗口中修改表记录窗口中修改表记录v
11、命令格式命令格式:EDITFIELDSFOR|WHILECHANGEFIELDSFOR|WHILEv功能功能:这两条命令的格式、功能相同,以竖直编辑窗口显示、这两条命令的格式、功能相同,以竖直编辑窗口显示、编辑与修改表中的记录。编辑与修改表中的记录。默认范围:默认范围:Rest15数据表基本操作数据表基本操作16(3) 用REPLACE命令直接修改表记录 v命令格式命令格式:vREPLACEWITHADDITIVEv,WITHADDITIVEvFOR|WHILEv功能功能:不进入全屏幕编辑方式,根据命令中指定的条不进入全屏幕编辑方式,根据命令中指定的条件和范围,用表达式的值去更新指定字段的内容
12、。件和范围,用表达式的值去更新指定字段的内容。16数据表基本操作数据表基本操作17v(1)WITH,WITH;指定用指定用的值来代替的值来代替字段中的数据;依此类推。字段中的数据;依此类推。v(2)、都缺省时,都缺省时,REPLACE仅对当前记录仅对当前记录操作。操作。v(3)ADDITIVE:把对把对备注字段备注字段的替代内容的替代内容追加追加到备注字段到备注字段原内容的后面。原内容的后面。ADDITIVE只对替换备注字段有用。如果省只对替换备注字段有用。如果省略略ADDITIVE,则用表达式的值,则用表达式的值改写改写备注字段原有内容。备注字段原有内容。v例:例:USEXSCJMODIFY
13、STRUCTURE&增加一个平均分字段增加一个平均分字段REPLACE平均分平均分WITH总分总分/3ALL 17数据表基本操作数据表基本操作18REPLACE命令对应菜单方式 v“表”菜单中选择“替换字段(R).” 18数据表基本操作数据表基本操作195.表记录的追加与插入v(1)菜单方式追加表记录菜单方式追加表记录“表表”“追加新记录追加新记录”“显示显示”“追加方式追加方式”v(2)命令方式追加表记录命令方式追加表记录命令格式命令格式:APPENDBLANK功能功能:在当前使用的表文件后面追加记录。假设该表文件已有在当前使用的表文件后面追加记录。假设该表文件已有n条记录,执行该命令后,则
14、从第条记录,执行该命令后,则从第n+1条记录开始追加条记录开始追加;若表若表文件尚无记录,则从第文件尚无记录,则从第1号记录开始追加。号记录开始追加。19数据表基本操作数据表基本操作20v【例例】打开学生情况表打开学生情况表XSDA.dbf,向其中追加空白记录,向其中追加空白记录,用用REPLACE命令往该记录的命令往该记录的“学号学号”字段填入字段填入”00051”,“姓名姓名”字段填入字段填入”王平王平”,“性别性别”字段填入字段填入”男男”。vCLOSEALLvUSEXSDAvAPPENDBLANKvREPLACE学号学号WITH”00051”,姓名姓名WITH“王平王平”,性别性别WI
15、TH”男男”说明:说明:有有BLANK时,不打开浏览窗口,系统自动在表末时,不打开浏览窗口,系统自动在表末尾加一条空白记录,可配合尾加一条空白记录,可配合REPLACE等命令编辑新记录。等命令编辑新记录。无此项时,进入编辑窗口,让用户输入空白记录,无此项时,进入编辑窗口,让用户输入空白记录,CTRL+W存盘退出。存盘退出。20数据表基本操作数据表基本操作21v(3)外部追加外部追加v将另一个表文件的记录追加到当前表的尾部。在实际将另一个表文件的记录追加到当前表的尾部。在实际应用中,两个表的结构应尽量保持一致。应用中,两个表的结构应尽量保持一致。v菜单方式菜单方式“表表”“追加记录(追加记录(A
16、).”“追加来源追加来源”对话框对话框v命令方式命令方式格式格式:APPENDFROM|?FIELDS功能功能:将其他表(文件)中的记录加入到当前表中。将其他表(文件)中的记录加入到当前表中。21数据表基本操作数据表基本操作22(4) 记录的插入v格式格式:INSERTBEFOREBLANKv功能功能:在当前表、当前位置前后插入一个新记录。在当前表、当前位置前后插入一个新记录。v相关参数和选项的含义相关参数和选项的含义:v无任何选项时,打开无任何选项时,打开“编辑编辑”窗口,在表的当前记录之窗口,在表的当前记录之后添加一个新的记录,随后显示该记录以便用户录入数据。后添加一个新的记录,随后显示该
17、记录以便用户录入数据。v含含“BEFORE”选项时,新记录插入在当前记录的前面。选项时,新记录插入在当前记录的前面。v含含“BLANK”选项时,不进入选项时,不进入“编辑编辑”窗口,而是自动插窗口,而是自动插入一条空白记录。入一条空白记录。22数据表基本操作数据表基本操作23(1)逻辑删除(为记录做上删除标记)逻辑删除(为记录做上删除标记) 格式:格式:DELETE FOR WHILE 功能:对当前表文件中指定的记录做删除标记。GO 7DELETEGO 4DELETE NEXT 3 LIST执行上述命令后屏幕显示结果:执行上述命令后屏幕显示结果:6.表记录的删除与恢复表记录的删除与恢复setd
18、eletedonsetdeletedoff23数据表基本操作数据表基本操作24(2)物理删除(清除带有删除标记的记录)物理删除(清除带有删除标记的记录) 格式:格式:PACK功能:功能:省略选择项,该命令将从当前表中删除所有带省略选择项,该命令将从当前表中删除所有带删除标记的记录。删除标记的记录。说明:说明:用用PACK命令删除的记录是不可被恢复的。命令删除的记录是不可被恢复的。所以在使用所以在使用PACK命令前一定要检查删除标记是否加的正确。命令前一定要检查删除标记是否加的正确。 例:例:PACKLIST执行上述命令后屏幕显示的结果:执行上述命令后屏幕显示的结果:注意:在进行这一步操作前先备
19、份数据注意:在进行这一步操作前先备份数据24数据表基本操作数据表基本操作25(3) 恢复带删除标记的记录恢复带删除标记的记录 格式:格式:RECALL FOR WHILE 功能:功能:恢复当前表中带删除标记的记录,即去掉删除标记“*”号。当省略所有的选项时,仅恢复当前记录。RECALL ALLBROWSE执行上述命令后屏幕显示的结果(4) 清除所有记录清除所有记录 格式:格式:ZAP 功能:功能:从当前表中清除全部记录,仅保留表的结构。ZAPDELETE ALL + PACK25数据表基本操作数据表基本操作26(1)复制任何类型文件复制任何类型文件命令格式:COPY FILETO功能:功能:从
20、从文件复制得文件复制得文件文件说明:说明:(a1)若对表进行复制,该表必须处于关闭状态。)若对表进行复制,该表必须处于关闭状态。(a2)文件扩展名必须写。文件扩展名必须写。(a3) 和和都可使用通配符都可使用通配符*和和? 例:例: CLOSE ALL COPY FILE XSDA.DBF TO DA.DBF COPY FILE XSDA.* TO DA.*7.表和表结构的复制表和表结构的复制26数据表基本操作数据表基本操作27(2)从表复制出表或其他类型的文件从表复制出表或其他类型的文件COPY TO 范围范围FORFIELDS功能:功能:将当前表中选定的部分记录和部分字段复将当前表中选定的
21、部分记录和部分字段复制成一个新表或其他类型的文件。制成一个新表或其他类型的文件。说明:说明:(a1)若对表进行复制,首先要打开原表)若对表进行复制,首先要打开原表(a2) 对于含有备注型字段的表,系统自动复制备注文件对于含有备注型字段的表,系统自动复制备注文件 例:例: USE XSDA COPY TO XSDA227数据表基本操作数据表基本操作28COPY TO命令(3)新文件的类型除了表之外,还可以是系统数据格式、新文件的类型除了表之外,还可以是系统数据格式、定界格式等文本文件或定界格式等文本文件或Mifrosoft Excel文件。文件。 例: Close all use xsda co
22、py to a1 next 3 sdf go 1 copy to b1 next 3 delimited(4)TYPE 子句的格式子句的格式 TYPESDF|XLS|DELIMITEDWITH|WITHBLANK|WITHTAB比较a1.txt和b1.txt两个文件28数据表基本操作数据表基本操作29(3)复制表结构复制表结构COPY STRUCTURE TOFIELDS功能:功能:将当前打开的表文件结构的部分或全部复制到将当前打开的表文件结构的部分或全部复制到所制定的表结构,仅复制当前表结构,不复制其所制定的表结构,仅复制当前表结构,不复制其中的数据。中的数据。说明:说明:(1) 指定新表结
23、构的表文件名指定新表结构的表文件名(2) FIELDS指定在新表中包含的字段及顺序。指定在新表中包含的字段及顺序。 例:例: COPY STRUCTRE TO XSDA FIELDS 姓名姓名,性别性别,出生日期出生日期29数据表基本操作数据表基本操作303.4 排序与索引v3.4.1排序排序1基本概念基本概念v排序是将已建好的表记录按某一关键字规定的顺序重排序是将已建好的表记录按某一关键字规定的顺序重新排列。排序后产生一个新的表文件,但源文件不变。新排列。排序后产生一个新的表文件,但源文件不变。v“关键字关键字”是用作排序的字段,其类型可以是是用作排序的字段,其类型可以是C型、型、N型型和和
24、D型,不能是型,不能是L型和型和M型。型。v数据从小到大排列称为数据从小到大排列称为“升序升序”,从大到小排列称为,从大到小排列称为“降降序序”,若是字符型数据,则按其内部代码的值论大小。,若是字符型数据,则按其内部代码的值论大小。30数据表基本操作数据表基本操作31【格式】【格式】SORTTOON/A/C/D,/A/C/D.FIELDSFORWHILE【功功能能】对对当当前前打打开开的的表表,按按指指定定的的字字段段进进行行排排序序,生生成成新的表文件。新的表文件。【说说明明】用用作作排排序序的的字字段段的的数数据据类类型型允允许许是是N、C、D、L型。型。/A表示升序表示升序/D表示降序表
25、示降序/C表示不区分大小写。表示不区分大小写。2.排序命令排序命令31数据表基本操作数据表基本操作32若有多个排序字段时,先按命令中若有多个排序字段时,先按命令中的值顺的值顺序排列,序排列,值相同则按值相同则按值的顺序值的顺序排列,依次类推。排列,依次类推。其中其中称为主关键字,这称为主关键字,这种排序也称为多重排序。种排序也称为多重排序。注意注意:在在setdeleon的情况下,带有删除标记的记录的情况下,带有删除标记的记录不参加排序,显示时原表中还有此记录,但排序后不参加排序,显示时原表中还有此记录,但排序后的表中不存在。的表中不存在。【例例】对对表表XSCJ.dbf按按“总总分分”降降序
26、序排排序序,排排序序后后生生成成的的的的排排序序文文件件名名为为XSCJ1.dbf,且且只只有有学学号号和和总总分分2个字段。个字段。vUSEXSCJvLISTvSORTTOXSCJ1ON总分总分/DFIELDS学号,总分学号,总分32数据表基本操作数据表基本操作33示例:示例:CloseallClearUseXSDAListSorttoXSDA2on学号学号/DUseXSDA2ListSorttoXSDA3on入学分入学分/AFIELDS学号,姓名,入学分学号,姓名,入学分UseXSDA3List33数据表基本操作数据表基本操作343.4.2 索引 v1.基本概念基本概念索引索引是按照索引关
27、键字的值使数据表中的记录有是按照索引关键字的值使数据表中的记录有序排列的一种技术。序排列的一种技术。索引文件索引文件是由指针构成的文件,只包括是由指针构成的文件,只包括索引关键索引关键字值和记录号字值和记录号两项内容,所有关键字值按升序或两项内容,所有关键字值按升序或降序排列,每个关键字值对应源表文件的一条记降序排列,每个关键字值对应源表文件的一条记录号,这样便确定了记录的逻辑顺序。录号,这样便确定了记录的逻辑顺序。索引文件总是依附、从属于源表文件而存在,不索引文件总是依附、从属于源表文件而存在,不可单独使用。可单独使用。 34数据表基本操作数据表基本操作v记录的顺序记录的顺序物理顺序物理顺序
28、:表中记录的存储顺序。表中记录的存储顺序。按记录输入的时间顺序存放。按记录输入的时间顺序存放。逻辑顺序逻辑顺序:记录的处理顺序。记录的处理顺序。对记录按某个(些)字段的值进行排序。对记录按某个(些)字段的值进行排序。35数据表基本操作数据表基本操作索引示例索引示例v学生成绩情况表学生成绩情况表纪录号纪录号姓名姓名成绩成绩1李平李平742李彤李彤863刘晓玲刘晓玲924宋海英宋海英75索引文件是由指针构成的文件,只包括关键字和记录号两项内容,所索引文件是由指针构成的文件,只包括关键字和记录号两项内容,所有关键字值按升序或降序排列,每个关键字对应原表文件的一个记录有关键字值按升序或降序排列,每个关
29、键字对应原表文件的一个记录号。建立一个索引后,原记录的物理存储不发生变化。号。建立一个索引后,原记录的物理存储不发生变化。索引文件的结构索引文件的结构关键字值关键字值纪录号纪录号923862754741数据库表文件结构数据库表文件结构36数据表基本操作数据表基本操作排序与索引的区别排序与索引的区别v排序排序: :产生的表文件的扩展名为产生的表文件的扩展名为.dbf,.dbf,记录的输出顺记录的输出顺序是物理顺序序是物理顺序( (重新排列的重新排列的),),原表中记录的排列顺序原表中记录的排列顺序并不发生改变并不发生改变, ,但新排序表中的记录与原表中的记录但新排序表中的记录与原表中的记录已不再
30、一一对应。已不再一一对应。 v索引索引: :产生的文件扩展名为产生的文件扩展名为.idx(.idx(单索引单索引) )或或.cdx(.cdx(复复合索引合索引),),文件只包含索引关键字的值和与其对应的文件只包含索引关键字的值和与其对应的记录号记录号, ,记录的输出是逻辑排序的记录的输出是逻辑排序的, ,原表中记录的物原表中记录的物理顺序并不发生改变理顺序并不发生改变, ,但产生的索引文件中的每个记但产生的索引文件中的每个记录值对应原表中的一个记录号。录值对应原表中的一个记录号。 37数据表基本操作数据表基本操作2. 索引类型 v索引可分为主索引、候选索引、普通索引、惟一索引索引可分为主索引、
31、候选索引、普通索引、惟一索引4种类型。种类型。(1)主索引(主索引(PrimaryIndex)v作为主索引的索引关键字,其在表中的值是作为主索引的索引关键字,其在表中的值是惟一能够惟一能够标识每个记录的值标识每个记录的值。它。它“强调不允许出现重复值强调不允许出现重复值”,是指是指建立索引的字段值不允许重复建立索引的字段值不允许重复。v一个数据表只能建一个主索引,只有数据库中的数据一个数据表只能建一个主索引,只有数据库中的数据表才能建立和使用主索引。表才能建立和使用主索引。38数据表基本操作数据表基本操作(2)候选索引(候选索引(CandidateIndex)v 候选索引也是一个候选索引也是一
32、个不允许不允许在指定字段和表达式中出在指定字段和表达式中出现重复值的索引。现重复值的索引。v数据库表和自由表都可以创建候选索引。一个表可数据库表和自由表都可以创建候选索引。一个表可以建立多个候选索引。以建立多个候选索引。 v当数据库表无主索引时,可指定一个候选索引为主当数据库表无主索引时,可指定一个候选索引为主索引。索引。v主索引和候选索引都存储在主索引和候选索引都存储在.CDX结构复合索引文件结构复合索引文件中,不能存储在非结构复合索引文件和单索引文件中,不能存储在非结构复合索引文件和单索引文件中,因中,因为主索引和候选索引都必须与表文件同时打为主索引和候选索引都必须与表文件同时打开和同时关
33、闭。开和同时关闭。39数据表基本操作数据表基本操作(3)普通索引(普通索引(RegularIndex)v作为普通索引的索引关键字,其表中不同记录的对应值可重作为普通索引的索引关键字,其表中不同记录的对应值可重复,并且索引项也允许出现重复。一个表可以建立多个普通复,并且索引项也允许出现重复。一个表可以建立多个普通索引。数据库表和自由表均可建立普通索引。索引。数据库表和自由表均可建立普通索引。(4)惟一索引(惟一索引(UniqueIndex)v作为惟一索引的索引关键字,其表中不同记录的对应值可重作为惟一索引的索引关键字,其表中不同记录的对应值可重复,但在索引文件中仅保存重复值记录的第一个,复,但在
34、索引文件中仅保存重复值记录的第一个,即索引文即索引文件中的记录值惟一。件中的记录值惟一。一个表可以建立多个惟一索引,数据库一个表可以建立多个惟一索引,数据库表和自由表均可建立惟一索引。表和自由表均可建立惟一索引。40数据表基本操作数据表基本操作3. 索引文件的类型(1)单索引文件单索引文件(.idx)(2)复合索引文件复合索引文件(.cdx)“结构复合索引结构复合索引”文件文件“非结构复合索引非结构复合索引”文件文件与表同名与表同名,随着相随着相关表的打开而自关表的打开而自动打开动打开与表不同名与表不同名,由用由用户使用命令方式户使用命令方式打开打开41数据表基本操作数据表基本操作(1)命令方
35、式建立索引)命令方式建立索引4. 建立索引42数据表基本操作数据表基本操作v注意:单索引文件默认为升序注意:单索引文件默认为升序ASCENDING,不可不可用用DESCENDING降序,但数值型字段可在前面乘降序,但数值型字段可在前面乘上一个上一个-1降序排列。降序排列。【例例2】打开打开xsda.dbf表表,按年龄的降序建立索引文件按年龄的降序建立索引文件nl.idxusexsdaindexon-年龄年龄tonllist43数据表基本操作数据表基本操作【例例3】打开打开xsda.dbf表表,按性别建立唯一索引文件按性别建立唯一索引文件XB.idx。USExsdaINDEXON性别性别TOXB
36、UNIQUELIST【例例4】打开打开xsda.dbf表表,性别为第一关键字性别为第一关键字,年龄为第二关键字年龄为第二关键字建立索引文件建立索引文件xn.idx。USExsdaINDEXON性别性别+str(年龄年龄,3)TOxnList44数据表基本操作数据表基本操作v若若是索引表达式:是索引表达式:若索引表达式中用到了不同类型的字段变若索引表达式中用到了不同类型的字段变量,应当用函数将它们转换成统一的类型。量,应当用函数将它们转换成统一的类型。字符型字符型+数值型数值型字符型字符型+STR(数值字段数值字段,长度,小数位)长度,小数位)数值型数值型+数值型:不用转换数值型:不用转换(将两
37、个数值表达式的值相加后的值进行排序)将两个数值表达式的值相加后的值进行排序)字符型字符型+日期型日期型字符型字符型+DTOC(日期型日期型,1)数值型数值型+日期型日期型STR(数值字段数值字段,长度长度,小数位小数位)+DTOC(日期型日期型,1)v数值转换成字符串函数:数值转换成字符串函数:STR(,,)v字符串转换成数值函数:字符串转换成数值函数:VAL()v日期型转换成字符型函数:日期型转换成字符型函数:DTOC()v字符型转换成日期型函数:字符型转换成日期型函数:CTOD()45数据表基本操作数据表基本操作复合索引文件示例复合索引文件示例总分总分语文语文英语英语关键字关键字记录号记录
38、号关键字关键字记录号记录号关键字关键字记录号记录号340.00292.03101.01346.00193.02117.02352.503100.01127.03索引标识索引标识数据表基本操作数据表基本操作(1)命令方式建立索引v建立结构复合索引文件(建立结构复合索引文件(.cdx)INDEXONTAGFORASCENDING|DESCENDINGUNIQUE|CANDIDATEADDITIVE【例例1】为表为表xsda.dbf建立结构复合索引文件。索引关键字为建立结构复合索引文件。索引关键字为姓名姓名,用用xm作为普通索引标识作为普通索引标识(TAG标记标记),建立复合索引文,建立复合索引文件
39、件xsda.cdx。usexsdaindexon姓名姓名tagxmlist47数据表基本操作数据表基本操作【例例2】以总分为关键字,降序排序以总分为关键字,降序排序,把把zf作为索引标作为索引标识添加到识添加到xscj.cdx中。中。usexscjIndexon总分总分tagzfdescendingList【例【例3】在表在表XSDA.DBF的结构复合索引文件中,先的结构复合索引文件中,先按性别再按学号追加一个索引标识。按性别再按学号追加一个索引标识。USEXSDAINDEXON性别性别+学号学号TAGxbxhList48数据表基本操作数据表基本操作【例例4】对表对表XSCJ.dbf中总分大于
40、等于中总分大于等于345分的记录按总分的降分的记录按总分的降序建立一个单索引文件。对表序建立一个单索引文件。对表XSDA.dbf中北京的学生按中北京的学生按“姓姓名名”字段(升序)建立结构复合文件的一个索引标识字段(升序)建立结构复合文件的一个索引标识XM,索,索引类型为普通索引;按引类型为普通索引;按“性别性别”字段(降序)建立结构复合文字段(降序)建立结构复合文件的另一个索引标识件的另一个索引标识XB,索引类型为惟一索引。,索引类型为惟一索引。vUSEXSCJvINDEXON总分总分TOXSCJ1FOR总分总分=345vLISTvUSEXSDAvINDEXON姓名姓名TAGXMFOR住址住
41、址=”北京北京”vLISTvINDEXON性别性别TAGXBDESCUNIQUEvLIST49数据表基本操作数据表基本操作(1)命令方式建立索引50数据表基本操作数据表基本操作(2)在表设计器中建立索引)在表设计器中建立索引在排序选项中,选择索引方向,升序(在排序选项中,选择索引方向,升序()或降)或降序(序()。)。数值型按其值论大小,西文字符按其数值型按其值论大小,西文字符按其ASCII码值码值论大小,汉字等字符串按其内码论大小。论大小,汉字等字符串按其内码论大小。在表设计器中建立的索引文件与表同名,是结构在表设计器中建立的索引文件与表同名,是结构复合索引文件。复合索引文件。51数据表基本
42、操作数据表基本操作5打开索引文件刚刚建立完索引文件时刚刚建立完索引文件时,该索引文件处于打开状态。该索引文件处于打开状态。在打开表文件时在打开表文件时,结构复合索引文件随之打开。结构复合索引文件随之打开。可以同时打开多个索引文件,但任何时候只能有一可以同时打开多个索引文件,但任何时候只能有一个索引文件起作用。个索引文件起作用。当打开多个索引文件时,(复合索引文件中的多个当打开多个索引文件时,(复合索引文件中的多个子索引同时打开),此时只有一个索引起作用子索引同时打开),此时只有一个索引起作用,该索该索引称是引称是主控索引主控索引。52数据表基本操作数据表基本操作打开单索引文件和非结构复合索引文
43、件打开单索引文件和非结构复合索引文件v命令格式命令格式1:SETINDEXTOADDITIVEv命令格式命令格式2:USEINDEXv功能功能:打开当前表的一个或多个索引文件。打开当前表的一个或多个索引文件。v(1):指定要打开的一个或多个索引文件,多指定要打开的一个或多个索引文件,多个索引文件之间要用逗号分隔,个索引文件之间要用逗号分隔,第一个索引文件自动成为主第一个索引文件自动成为主控索引文件。控索引文件。v(2)ADDITIVE:若缺省该项,则在用本命令打开索引文件的若缺省该项,则在用本命令打开索引文件的同时,除结构复合索引文件之外的其他索引文件均被关闭。同时,除结构复合索引文件之外的其
44、他索引文件均被关闭。若含此项,表示不关闭以前打开的索引文件。若含此项,表示不关闭以前打开的索引文件。53数据表基本操作数据表基本操作【例例】单索引文件使用方法示例。单索引文件使用方法示例。usexsdasetindextoxm,xn&打开索引文件打开索引文件xm和和xn,xm被设置为主索引被设置为主索引List&显示显示xm.idx主控索引文件记录的逻辑排序结果主控索引文件记录的逻辑排序结果v使用使用SETINDEXTO或或CLOSEINDEX命令将关闭命令将关闭单索引文件和非结构复合索引文件。单索引文件和非结构复合索引文件。54数据表基本操作数据表基本操作6. 设置当前索引的命令55数据表基
45、本操作数据表基本操作v【例例】打开索引文件和设置当前索引示例。打开索引文件和设置当前索引示例。vUSEXSCJvLISTvSETINDEXTOXSCJ1&打开单索引文件打开单索引文件XSCJ1,当前主控索引文件,当前主控索引文件vLISTvUSEXSDAvLISTvSETORDERTOXM&设置当前索引为包含在结构复合索引文件中的设置当前索引为包含在结构复合索引文件中的XM索引项索引项vLISTvSETORDERTOXB&设置当前索引为包含在结构复合索引文件中的设置当前索引为包含在结构复合索引文件中的XB索引项索引项vLISTvSETORDERTO&记录还是按物理顺序显示记录还是按物理顺序显示
46、vLIST56数据表基本操作数据表基本操作7. 更新索引v(1)自动更新自动更新已打开的索引文件跟随数据的改变自动改已打开的索引文件跟随数据的改变自动改变记录的逻辑顺序变记录的逻辑顺序v(2)重新索引重新索引格式格式:REINDEX57数据表基本操作数据表基本操作8. 删除索引v单索引文件可采取删除文件的方法直接删除,复合单索引文件可采取删除文件的方法直接删除,复合索引文件可用下列命令删除。索引文件可用下列命令删除。v命令格式命令格式:DELETETAG|ALLOF.v【例例】删除索引示例。删除索引示例。vUSEXSDAvDELETETAGXBvMODISTRUvDELETETAGALLvMO
47、DISTRU58数据表基本操作数据表基本操作9. 关闭索引文件v格式一格式一:USEv功能功能:关闭表文件的同时,也关闭了所有已打开的索关闭表文件的同时,也关闭了所有已打开的索引文件。引文件。v格式二格式二:SETINDEXTOv功能功能:关闭所有已打开的索引文件,但表文件仍处于关闭所有已打开的索引文件,但表文件仍处于打开状态。打开状态。v格式三格式三:CLOSEINDEXv功能功能:功能同功能同SETINDEXTO命令。命令。59数据表基本操作数据表基本操作3.5 数据查询3.5.1顺序查询顺序查询顺序查找是在表文件中依次查找满足条件的顺序查找是在表文件中依次查找满足条件的记录。顺序查询也称
48、直接查询。记录。顺序查询也称直接查询。v命令格式命令格式:LOCATEFORCONTINUEu默认范围:默认范围:ALL60数据表基本操作数据表基本操作v说明说明v该命令不显示结果,使用有关函数可证实找到否。该命令不显示结果,使用有关函数可证实找到否。v若查找到一个满足条件的记录可用函数若查找到一个满足条件的记录可用函数RECNO()()返回该记录号,此时函数返回该记录号,此时函数FOUND()返回值为()返回值为.T.,EOF()返回值为()返回值为.F.;v若找不到满足条件的记录可用函数若找不到满足条件的记录可用函数RECNO()返()返回值为该表文件总记录数回值为该表文件总记录数+1,函
49、数,函数FOUND()返()返回值为回值为.F.,EOF()返回值为()返回值为.T.。61数据表基本操作数据表基本操作v【例例】在表在表XSDA.dbf中(共有中(共有50条记录)按顺序查找不是条记录)按顺序查找不是团员且家在安徽的所有男同学记录。团员且家在安徽的所有男同学记录。vUSEXSDAvLOCATEFOR性别性别=”男男”.AND.是否团员是否团员=.F.AND.住住址址=”安徽安徽”v?FOUND()()v?RECNO()()vDISPLAYvCONTINUEv?FOUND()()v?RECNO()()62数据表基本操作数据表基本操作3.5.2 索引查询v格式格式:SEEKv功能
50、功能:在已确定当前索引的表文件中快速查找满足在已确定当前索引的表文件中快速查找满足值值的第一条记录。的第一条记录。v说明说明:v(1)要产生一个索引内容的值(如:要产生一个索引内容的值(如:”许小亭许小亭”)而)而不是关系表达式(如:姓名不是关系表达式(如:姓名=”许小亭许小亭”)。)。v(2)只能在索引过的表中使用,并且只能对当前索引关键字)只能在索引过的表中使用,并且只能对当前索引关键字进行查询。进行查询。v(3)当表中有多个符合条件的记录时,指针定位在第一个,)当表中有多个符合条件的记录时,指针定位在第一个,用用SKIP可定位到下一个。可定位到下一个。63数据表基本操作数据表基本操作v【
51、例例】索引查找示例。索引查找示例。vCLOSEALLvUSEXSDAvINDEXON姓名姓名TAGXMvINDEXON出生日期出生日期TAGCSRQvSETORDERTOXMvSEEK”许小亭许小亭”v?RECNO()vDISPLAYvSETORDERTOCSRQvSEEK1982/07/27v?RECNO()vDISPLAY64数据表基本操作数据表基本操作3.6数据统计数据统计3.6.1统计记录个数命令统计记录个数命令v格式格式:COUNTFORWHILETOv功能功能:统计当前表中指定范围内满足条件的记录个数,并存于统计当前表中指定范围内满足条件的记录个数,并存于中。中。【例例】分别统计表
52、分别统计表XSDA.dbf中学生总人数、男同学的人数。中学生总人数、男同学的人数。vUSEXSDAvCOUNTTONv?NvCOUNTFOR性别性别=”男男”TOBOYv?BOY65数据表基本操作数据表基本操作3.6.2 求和命令v格式格式:SUMFORWHILETOv功能功能:在当前表中,对指定范围内给定条件的数值型字段或含在当前表中,对指定范围内给定条件的数值型字段或含数值型字段的数值表达式进行纵向求和计算,并把结果存放数值型字段的数值表达式进行纵向求和计算,并把结果存放在对应的在对应的标识的变量中。标识的变量中。v缺省则对所有数值型字段进行纵向求和缺省则对所有数值型字段进行纵向求和;若若
53、使用可选项使用可选项,则只对,则只对中的各表达式累加求和,数值型字段之间或表达式之间用逗中的各表达式累加求和,数值型字段之间或表达式之间用逗号分隔开。号分隔开。66数据表基本操作数据表基本操作3.6.3 求平均值命令v格式格式:AVERAGEFORWHILETOv功能功能:对当前表中指定范围内满足条件的记录的数值对当前表中指定范围内满足条件的记录的数值型字段求算术平均值,并把结果存入型字段求算术平均值,并把结果存入中中67数据表基本操作数据表基本操作v【例例】分别计算学生成绩表分别计算学生成绩表XSCJ.dbf中全中全班语文、数学、英语课程的成绩和。班语文、数学、英语课程的成绩和。vUSEXS
54、CJvSUM语文语文,数学数学,英语英语v【例例】分别计算学生成绩表分别计算学生成绩表XSCJ.dbf中全中全班语文、数学以及英语课程的平均成绩。班语文、数学以及英语课程的平均成绩。vUSEXSCJvAVERAGE语文语文,数学数学,英语英语68数据表基本操作数据表基本操作3.6.4 汇总命令v格式格式:TOTALONTOFIELDSFORWHILEv功能功能:按关键字对当前表文件的数值型字段进行分按关键字对当前表文件的数值型字段进行分类合计,结果存入类合计,结果存入表示的新生成的表文件表示的新生成的表文件中。中。69数据表基本操作数据表基本操作v相关参数和选项的含义相关参数和选项的含义:v(
55、1)该命令将产生一个新的表文件。它)该命令将产生一个新的表文件。它将已打开的表的某些数值型将已打开的表的某些数值型字段的内容按照关键字相同的原则进行汇总字段的内容按照关键字相同的原则进行汇总,汇总结果放在一个汇总,汇总结果放在一个汇总表内,汇总表名由用户在必选参数表内,汇总表名由用户在必选参数里指定。里指定。对被汇总的表对被汇总的表文件必须先按关键字进行排序或索引。文件必须先按关键字进行排序或索引。v(2)FIELDS选择项是选择要参加汇总的数值型字段,缺省时对当选择项是选择要参加汇总的数值型字段,缺省时对当前表中所有数值型字段合计。前表中所有数值型字段合计。v(3)缺省指缺省指ALL。v(4
56、)生成的汇总表中不含)生成的汇总表中不含“备注型备注型”字段。字段。v(5)凡未求和的字段,在新表文件中生成记录的字段值等于其第一)凡未求和的字段,在新表文件中生成记录的字段值等于其第一条记录的字段值条记录的字段值;而在被求和的字段上,生成记录的字段值等于求和而在被求和的字段上,生成记录的字段值等于求和的结果,若其结果超过了该字段的宽度,将会产生数据溢出错误,数的结果,若其结果超过了该字段的宽度,将会产生数据溢出错误,数据被丢失,并在汇总表文件中以星号据被丢失,并在汇总表文件中以星号“*”填满该字段。填满该字段。70数据表基本操作数据表基本操作v【例例】给学生成绩表给学生成绩表XSCJ.dbf增加一个增加一个“性别性别”字段,然后按性别分类统计男女同学的字段,然后按性别分类统计男女同学的“总分总分”字字段之和。段之和。vCLOSEALLvUSEXSCJvINDEXON性别性别TAGXBvTOTALON性别性别TOXSCJZFFIELDS总分总分vUSEXSCJZFvLIST71数据表基本操作数据表基本操作