1、1 1设置默认目录设置默认目录 v(1)菜单操作方式)菜单操作方式 “工具工具”“选项选项”“文件位置文件位置”“默认目录默认目录”v(2)命令方式)命令方式 SET DEFAULT TO D:vfpv注意:注意:VFP中所有命令全部使用英文标点符号中所有命令全部使用英文标点符号2 2创建自由表创建自由表v菜单操作方式菜单操作方式v表文件扩展名表文件扩展名 *.dbfv备注型字段或通用型字段数据的输入方法备注型字段或通用型字段数据的输入方法(Ctrl+Home)v使用备注型、通用型字段后,系统会自动生成备注文件,扩展名使用备注型、通用型字段后,系统会自动生成备注文件,扩展名为为.FPT,此文件
2、不可删除此文件不可删除vCtrl+w 保存所输入的数据保存所输入的数据 ctrl+q 取消所输入的数据取消所输入的数据v窗口分割器窗口分割器 3 3v命令方式命令方式 v【格式格式1】Create v【格式格式2】Create table(,)v字符型字符型 C,数值型,数值型 N,日期型,日期型 Dv逻辑型逻辑型 L,备注型,备注型 M,通用性,通用性 Gv例:例:create table xscj(学号学号 c(5),课程号课程号 c(4),成绩成绩 n(6,3)4 4Visual FoxPro 6.0中的命令 vVisual FoxPro 6.0命令的一般格式命令的一般格式v命令动词命令
3、动词FIELDSFOR|WHILE v范围子句范围子句vALL 表中全部记录表中全部记录vRECORD n 表中指定的第表中指定的第n条记录条记录vNEXT n 从表中当前记录开始向下的从表中当前记录开始向下的n条记录条记录vREST 从表中当前记录开始到最后一条记录为止的所有记录从表中当前记录开始到最后一条记录为止的所有记录 5 5FOR和WHILE选项的不同v(1)FOR子句是子句是从首记录开始从首记录开始判断逻辑表达式的值是真还判断逻辑表达式的值是真还是假,而是假,而WHILE子句则是子句则是从当前记录开始从当前记录开始判断逻辑表达式判断逻辑表达式值的真假。值的真假。v(2)FOR子句子
4、句是对整个表中所有满足条件的记录进行操作,是对整个表中所有满足条件的记录进行操作,而而WHILE子句子句则是从当前记录开始对满足条件的连续记录则是从当前记录开始对满足条件的连续记录进行操作,即遇到不满足条件的记录,则立即停止操作,不进行操作,即遇到不满足条件的记录,则立即停止操作,不管其后是否还有满足条件的记录。管其后是否还有满足条件的记录。v(3)FOR和和WHILE子句在某些命令中既可以单独使用,也子句在某些命令中既可以单独使用,也可以同时使用,可以同时使用,WHILE优先于优先于FOR。6 6命令的使用 v(1)每条命令以命令动词开头,动词后的选项)每条命令以命令动词开头,动词后的选项先
5、后顺序可先后顺序可以任意以任意,但必须符合命令格式的规定。,但必须符合命令格式的规定。v(2)用)用空格空格来分隔每条命令中的各个选择项。来分隔每条命令中的各个选择项。v(3)分号作为)分号作为续行符(续行符(;)用来表示下行仍是同一命令的一用来表示下行仍是同一命令的一部分,这样就可以把一条长命令分成多行来写,但部分,这样就可以把一条长命令分成多行来写,但命令的最命令的最后一行不能以分号结尾后一行不能以分号结尾。v(4)命令动词、各短语中的关键字、函数名都可以)命令动词、各短语中的关键字、函数名都可以简写为简写为4个字符,不区分大小写个字符,不区分大小写。7 7表记录操作1.表的打开与关闭表的
6、打开与关闭 v表的打开表的打开v命令格式:命令格式:USE v表的关闭表的关闭v格式格式:USE&关闭当前工作区中的表关闭当前工作区中的表 vCLOSE ALL&数据库、索引、项目管理器等同时被关闭数据库、索引、项目管理器等同时被关闭8 82.表记录的浏览 v菜单方式菜单方式 v命令方式命令方式v格式格式1:BROWSE FIELDS FOR|WHILE v格式格式2:DISPLAY FIELDS FOR|WHILE TO PRINT OFFv格式格式3:LIST FIELDS FOR|WHILE TO PRINT OFFvBROWSE命令执行时打开命令执行时打开“浏览浏览”窗口。窗口。DIS
7、P、LIST将显示结果送到将显示结果送到屏幕。屏幕。v有有“OFF”时,不显示记录号时,不显示记录号 9 9LIST和DISPLAY命令的区别v(1)省略省略时,时,LIST默认值为默认值为ALL,显示所有,显示所有记录;省略记录;省略和和时,时,DISPLAY默认值默认值为当前记录为当前记录,即显示一条记录。,即显示一条记录。v(2)当显示内容较多时,当显示内容较多时,DISPLAY是分页显示是分页显示;LIST不分页不分页,而是连续地滚动显示。,而是连续地滚动显示。10103.表记录的定位 记录的指针记录的指针 系统在打开一个表文系统在打开一个表文件后将自动生成三个件后将自动生成三个控制标
8、志:控制标志:记录开始记录开始标志、记录指针标志、标志、记录指针标志、记录结束标志。记录结束标志。文件头文件头(含表结构等信息含表结构等信息)文件记录开始标志文件记录开始标志第第1条记录条记录第第n条记录条记录文件记录结束标志文件记录结束标志Skip-1Skip 11111v根据定位的方式,分为绝对定位(根据定位的方式,分为绝对定位(GO或或GOTO)、相对定)、相对定位(位(SKIP)、条件定位()、条件定位(LOCATE)和索引定位()和索引定位(FIND或或SEEK)四种。)四种。v当表打开时,当前记录为第一条记录。当表打开时,当前记录为第一条记录。v菜单方式定位记录菜单方式定位记录v“
9、表表”“转到记录转到记录”1212命令方式定位记录(1)绝对定位(绝对定位(GO)v命令格式命令格式1:GO|TOP|BOTTOMv命令格式命令格式2:(2)相对定位相对定位(SKIP)v命令格式命令格式:SKIP v当当为为1时可省略,即时可省略,即SKIP等价于等价于SKIP 1。1313常用测试函数vBOF()是否在开始标志处vEOF()是否在结束标志处vRECNO()当前记录号vRECCOUNT()表文件总记录数刚打开表时记录指针的情况刚打开表时记录指针的情况1414 4.表记录的修改(1)在在“浏览浏览”窗口修改表记录窗口修改表记录(2)在在“编辑编辑”窗口中修改表记录窗口中修改表记
10、录v命令格式命令格式:EDIT FIELDS FOR|WHILE CHANGE FIELDS FOR|WHILE v功能功能:这两条命令的格式、功能相同,以竖直编辑窗口显示、这两条命令的格式、功能相同,以竖直编辑窗口显示、编辑与修改表中的记录。编辑与修改表中的记录。默认范围:默认范围:Rest1515(3)用REPLACE命令直接修改表记录 v命令格式命令格式:vREPLACE WITH ADDITIVEv,WITH ADDITIVEvFOR|WHILE v功能功能:不进入全屏幕编辑方式,根据命令中指定的条不进入全屏幕编辑方式,根据命令中指定的条件和范围,用表达式的值去更新指定字段的内容。件和
11、范围,用表达式的值去更新指定字段的内容。1616v(1)WITH ,WITH;指定用指定用的值来代替的值来代替字段中的数据;依此类推。字段中的数据;依此类推。v(2)、都缺省时,都缺省时,REPLACE仅对当前记录仅对当前记录操作。操作。v(3)ADDITIVE:把对把对备注字段备注字段的替代内容的替代内容追加追加到备注字段到备注字段原内容的后面。原内容的后面。ADDITIVE只对替换备注字段有用。如果省只对替换备注字段有用。如果省略略ADDITIVE,则用表达式的值,则用表达式的值改写改写备注字段原有内容。备注字段原有内容。v例:例:USE XSCJ MODIFY STRUCTURE&增加一
12、个平均分字段增加一个平均分字段 REPLACE 平均分平均分 WITH 总分总分/3 ALL 1717REPLACE命令对应菜单方式 v“表”菜单中选择“替换字段(R).”18185.表记录的追加与插入v(1)菜单方式追加表记录菜单方式追加表记录“表表”“追加新记录追加新记录”“显示显示”“追加方式追加方式”v(2)命令方式追加表记录命令方式追加表记录命令格式命令格式:APPEND BLANK功能功能:在当前使用的表文件后面追加记录。假设该表文件已有在当前使用的表文件后面追加记录。假设该表文件已有n条记录,执行该命令后,则从第条记录,执行该命令后,则从第n+1条记录开始追加条记录开始追加;若表
13、若表文件尚无记录,则从第文件尚无记录,则从第1号记录开始追加。号记录开始追加。1919v【例例】打开学生情况表打开学生情况表XSDA.dbf,向其中追加空白记录,向其中追加空白记录,用用REPLACE命令往该记录的命令往该记录的“学号学号”字段填入字段填入”00051”,“姓名姓名”字段填入字段填入”王平王平”,“性别性别”字段填入字段填入”男男”。vCLOSE ALLvUSE XSDA vAPPEND BLANKvREPLACE 学号学号 WITH ”00051”,姓名姓名 WITH “王王平平”,性别性别 WITH ”男男”说明:说明:有有BLANK时,不打开浏览窗口,系统自动在表末时,不
14、打开浏览窗口,系统自动在表末尾加一条空白记录,可配合尾加一条空白记录,可配合REPLACE等命令编辑新记录。等命令编辑新记录。无此项时,进入编辑窗口,让用户输入空白记录,无此项时,进入编辑窗口,让用户输入空白记录,CTRL+W存盘退出。存盘退出。2020v(3)外部追加外部追加v将另一个表文件的记录追加到当前表的尾部。在实际将另一个表文件的记录追加到当前表的尾部。在实际应用中,两个表的结构应尽量保持一致。应用中,两个表的结构应尽量保持一致。v菜单方式菜单方式 “表表”“追加记录(追加记录(A).”“追加来源追加来源”对话框对话框 v命令方式命令方式格式格式:APPEND FROM|?FIELD
15、S功能功能:将其他表(文件)中的记录加入到当前表中。将其他表(文件)中的记录加入到当前表中。2121(4)记录的插入v格式格式:INSERT BEFORE BLANKv功能功能:在当前表、当前位置前后插入一个新记录。在当前表、当前位置前后插入一个新记录。v相关参数和选项的含义相关参数和选项的含义:v 无任何选项时,打开无任何选项时,打开“编辑编辑”窗口,在表的当前记录之窗口,在表的当前记录之后添加一个新的记录,随后显示该记录以便用户录入数据。后添加一个新的记录,随后显示该记录以便用户录入数据。v 含含“BEFORE”选项时,新记录插入在当前记录的前面。选项时,新记录插入在当前记录的前面。v 含
16、含“BLANK”选项时,不进入选项时,不进入“编辑编辑”窗口,而是自动窗口,而是自动插入一条空白记录。插入一条空白记录。2222(1)逻辑删除(为记录做上删除标记)逻辑删除(为记录做上删除标记)格式:格式:DELETE FOR WHILE 功能:功能:对当前表文件中指定的记录做删除标记。对当前表文件中指定的记录做删除标记。GO 7DELETEGO 4DELETE NEXT 3 LIST执行上述命令后屏幕显示结果:执行上述命令后屏幕显示结果:6.表记录的删除与恢复表记录的删除与恢复 set deleted onset deleted off2323(2)物理删除(清除带有删除标记的记录)物理删除
17、(清除带有删除标记的记录)格式:格式:PACK功能:功能:省略选择项,该命令将从当前表中删除所有带省略选择项,该命令将从当前表中删除所有带删除标记的记录。删除标记的记录。说明:说明:用用PACK命令删除的记录是不可被恢复的。命令删除的记录是不可被恢复的。所以在使用所以在使用PACK命令前一定要检查删除标记是否加的正确。命令前一定要检查删除标记是否加的正确。例:例:PACKLIST执行上述命令后屏幕显示的结果:执行上述命令后屏幕显示的结果:注意:在进行这一步操作前先备份数据注意:在进行这一步操作前先备份数据2424(3)恢复带删除标记的记录恢复带删除标记的记录 格式:格式:RECALL FOR
18、WHILE 功能:功能:恢复当前表中带删除标记的记录,即去掉删除标记恢复当前表中带删除标记的记录,即去掉删除标记“*”号。当省略所有的选项时,仅恢复当前记录。号。当省略所有的选项时,仅恢复当前记录。RECALL ALLBROWSE执行上述命令后执行上述命令后屏幕显示的结果屏幕显示的结果(4)清除所有记录清除所有记录 格式:格式:ZAP 功能:功能:从当前表中清除全部记录,仅保留表的结构。从当前表中清除全部记录,仅保留表的结构。ZAPDELETE ALL +PACK2525(1)复制任何类型文件复制任何类型文件命令格式:命令格式:COPY FILETO功能:功能:从从文件复制得文件复制得文件文件
19、说明:说明:(a1)若对表进行复制,该表必须处于关闭状态。)若对表进行复制,该表必须处于关闭状态。(a2)文件扩展名必须写。文件扩展名必须写。(a3)和和都可使用通配符都可使用通配符*和和?例:例:CLOSE ALL COPY FILE XSDA.DBF TO DA.DBF COPY FILE XSDA.*TO DA.*7.表和表结构的复制表和表结构的复制2626(2)从表复制出表或其他类型的文件从表复制出表或其他类型的文件COPY TO 范围范围FOR FIELDS功能:功能:将当前表中选定的部分记录和部分字段复将当前表中选定的部分记录和部分字段复制成一个新表或其他类型的文件。制成一个新表或
20、其他类型的文件。说明:说明:(a1)若对表进行复制,首先要打开原表)若对表进行复制,首先要打开原表(a2)对于含有备注型字段的表,系统自动复制备注文件对于含有备注型字段的表,系统自动复制备注文件 例:例:USE XSDA COPY TO XSDA22727COPY TO命令命令(3)新文件的类型除了表之外,还可以是系统数据格式、新文件的类型除了表之外,还可以是系统数据格式、定界格式等文本文件或定界格式等文本文件或Mifrosoft Excel文件。文件。例:例:Close all use xsda copy to a1 next 3 sdf go 1 copy to b1 next 3 del
21、imited(4)TYPE 子句的格式子句的格式 TYPE SDF|XLS|DELIMITEDWITH|WITH BLANK|WITH TAB比较比较a1.txt和和b1.txt两个文件两个文件2828(3)复制表结构复制表结构COPY STRUCTURE TOFIELDS功能:功能:将当前打开的表文件结构的部分或全部复制到将当前打开的表文件结构的部分或全部复制到所制定的表结构,仅复制当前表结构,不复制其所制定的表结构,仅复制当前表结构,不复制其中的数据。中的数据。说明:说明:(1)指定新表结构的表文件名指定新表结构的表文件名(2)FIELDS指定在新表中包含的字段及顺序。指定在新表中包含的字
22、段及顺序。例:例:COPY STRUCTRE TO XSDA FIELDS 姓名姓名,性别性别,出生日期出生日期29293.4 排序与索引v3.4.1 排序排序1基本概念基本概念v排序是将已建好的表记录按某一关键字规定的顺序重排序是将已建好的表记录按某一关键字规定的顺序重新排列。排序后产生一个新的表文件,但源文件不变。新排列。排序后产生一个新的表文件,但源文件不变。v“关键字关键字”是用作排序的字段,其类型可以是是用作排序的字段,其类型可以是C型、型、N型和型和D型,不能是型,不能是L型和型和M型。型。v数据从小到大排列称为数据从小到大排列称为“升序升序”,从大到小排列称为,从大到小排列称为“
23、降序降序”,若是字符型数据,则按其内部代码的值论,若是字符型数据,则按其内部代码的值论大小。大小。3030【格式】【格式】SORT TO ON/A/C/D ,/A/C/D.FIELDSFORWHILE【功能】【功能】对当前打开的表,按指定的字段进行排序,生成对当前打开的表,按指定的字段进行排序,生成新的表文件。新的表文件。【说明】【说明】用作排序的字段的数据类型允许是用作排序的字段的数据类型允许是N、C、D、L型。型。/A 表示升序表示升序 /D 表示降序表示降序 /C 表示不区分大小写。表示不区分大小写。2.排序命令排序命令3131 若有多个排序字段时,先按命令中若有多个排序字段时,先按命令
24、中的值顺的值顺序排列,序排列,值相同则按值相同则按值的顺序值的顺序排列,依次类推。排列,依次类推。其中其中称为主关键字,这称为主关键字,这种排序也称为多重排序。种排序也称为多重排序。注意注意:在在set dele on的情况下,带有删除标记的记录的情况下,带有删除标记的记录不参加排序,显示时原表中还有此记录,但排序后不参加排序,显示时原表中还有此记录,但排序后的表中不存在。的表中不存在。【例【例】对表对表XSCJ.dbf按按“总分总分”降序排序,排序后降序排序,排序后生成的的排序文件名为生成的的排序文件名为XSCJ1.dbf,且只有学号和,且只有学号和总分总分2个字段。个字段。vUSE XSC
25、JvLISTvSORT TO XSCJ1 ON 总分总分/D FIELDS 学号,总分学号,总分3232示例:示例:Close allClearUse XSDAListSort to XSDA 2 on 学号学号/DUse XSDA 2 ListSort to XSDA 3 on 入学分入学分/A FIELDS 学号,姓名,入学分学号,姓名,入学分Use XSDA3List33333.4.2 索引 v1.基本概念基本概念索引索引是按照索引关键字的值使数据表中的记录有是按照索引关键字的值使数据表中的记录有序排列的一种技术。序排列的一种技术。索引文件索引文件是由指针构成的文件,只包括是由指针构成的
26、文件,只包括索引关键索引关键字值和记录号字值和记录号两项内容,所有关键字值按升序或两项内容,所有关键字值按升序或降序排列,每个关键字值对应源表文件的一条记降序排列,每个关键字值对应源表文件的一条记录号,这样便确定了记录的逻辑顺序。录号,这样便确定了记录的逻辑顺序。索引文件总是依附、从属于源表文件而存在,不索引文件总是依附、从属于源表文件而存在,不可单独使用。可单独使用。34v记录的顺序记录的顺序物理顺序物理顺序:表中记录的存储顺序。表中记录的存储顺序。按记录输入的时间顺序存放。按记录输入的时间顺序存放。逻辑顺序逻辑顺序:记录的处理顺序。记录的处理顺序。对记录按某个(些)字段的值进行排序。对记录
27、按某个(些)字段的值进行排序。35索引示例索引示例v学生成绩情况表学生成绩情况表 纪录号纪录号姓名姓名 成绩成绩1李平李平742李彤李彤863刘晓玲刘晓玲924宋海英宋海英75索引文件是由指针构成的文件,只包括关键字和记录号两项内容,所索引文件是由指针构成的文件,只包括关键字和记录号两项内容,所有关键字值按升序或降序排列,每个关键字对应原表文件的一个记录有关键字值按升序或降序排列,每个关键字对应原表文件的一个记录号。建立一个索引后,原记录的物理存储不发生变化。号。建立一个索引后,原记录的物理存储不发生变化。索引文件的结构索引文件的结构 关键字值关键字值 纪录号纪录号923862754741数据
28、库表文件结构数据库表文件结构36排序与索引的区别排序与索引的区别v排序排序:产生的表文件的扩展名为产生的表文件的扩展名为.dbf,.dbf,记录的输出顺记录的输出顺序是物理顺序序是物理顺序(重新排列的重新排列的),),原表中记录的排列顺序原表中记录的排列顺序并不发生改变并不发生改变,但新排序表中的记录与原表中的记录但新排序表中的记录与原表中的记录已不再一一对应。已不再一一对应。v索引索引:产生的文件扩展名为产生的文件扩展名为.idx(.idx(单索引单索引)或或.cdx(.cdx(复复合索引合索引),),文件只包含索引关键字的值和与其对应的文件只包含索引关键字的值和与其对应的记录号记录号,记录
29、的输出是逻辑排序的记录的输出是逻辑排序的,原表中记录的物原表中记录的物理顺序并不发生改变理顺序并不发生改变,但产生的索引文件中的每个记但产生的索引文件中的每个记录值对应原表中的一个记录号。录值对应原表中的一个记录号。372.索引类型 v索引可分为主索引、候选索引、普通索引、惟一索引索引可分为主索引、候选索引、普通索引、惟一索引4种类型。种类型。(1)主索引(主索引(Primary Index)v作为主索引的索引关键字,其在表中的值是作为主索引的索引关键字,其在表中的值是惟一能够惟一能够标识每个记录的值标识每个记录的值。它。它“强调不允许出现重复值强调不允许出现重复值”,是指是指建立索引的字段值
30、不允许重复建立索引的字段值不允许重复。v一个数据表只能建一个主索引,只有数据库中的数据一个数据表只能建一个主索引,只有数据库中的数据表才能建立和使用主索引。表才能建立和使用主索引。(2)候选索引(候选索引(Candidate Index)v 候选索引也是一个候选索引也是一个不允许不允许在指定字段和表达式中出在指定字段和表达式中出现重复值的索引。现重复值的索引。v数据库表和自由表都可以创建候选索引。一个表可数据库表和自由表都可以创建候选索引。一个表可以建立多个候选索引。以建立多个候选索引。v当数据库表无主索引时,可指定一个候选索引为主当数据库表无主索引时,可指定一个候选索引为主索引。索引。v主索
31、引和候选索引都存储在主索引和候选索引都存储在.CDX结构复合索引文件结构复合索引文件中,不能存储在非结构复合索引文件和单索引文件中,不能存储在非结构复合索引文件和单索引文件中,因中,因为主索引和候选索引都必须与表文件同时打为主索引和候选索引都必须与表文件同时打开和同时关闭。开和同时关闭。38(3)普通索引(普通索引(Regular Index)v作为普通索引的索引关键字,其表中不同记录的对应值可重作为普通索引的索引关键字,其表中不同记录的对应值可重复,并且索引项也允许出现重复。一个表可以建立多个普通复,并且索引项也允许出现重复。一个表可以建立多个普通索引。数据库表和自由表均可建立普通索引。索引
32、。数据库表和自由表均可建立普通索引。(4)惟一索引(惟一索引(Unique Index)v作为惟一索引的索引关键字,其表中不同记录的对应值可重作为惟一索引的索引关键字,其表中不同记录的对应值可重复,但在索引文件中仅保存重复值记录的第一个,复,但在索引文件中仅保存重复值记录的第一个,即索引文即索引文件中的记录值惟一。件中的记录值惟一。一个表可以建立多个惟一索引,数据库一个表可以建立多个惟一索引,数据库表和自由表均可建立惟一索引。表和自由表均可建立惟一索引。393.索引文件的类型(1)单索引文件单索引文件 (.idx)(2)复合索引文件复合索引文件 (.cdx)“结构复合索引结构复合索引”文件文件
33、“非结构复合索引非结构复合索引”文件文件40与表同名与表同名,随着相随着相关表的打开而自关表的打开而自动打开动打开与表不同名与表不同名,由用由用户使用命令方式户使用命令方式打开打开(1)命令方式建立索引)命令方式建立索引414.建立索引建立索引v注意:单索引文件默认为升序注意:单索引文件默认为升序ASCENDING,不可不可用用DESCENDING降序,但数值型字段可在前面乘降序,但数值型字段可在前面乘上一个上一个-1降序排列。降序排列。【例例2】打开打开xsda.dbf表表,按年龄的降序建立索引文件按年龄的降序建立索引文件nl.idx use xsda index on-年龄年龄 to nl
34、 list42【例例3】打开打开xsda.dbf表表,按性别建立唯一索引文件按性别建立唯一索引文件XB.idx。USE xsda INDEX ON 性别性别 TO XB UNIQUE LIST【例例4】打开打开xsda.dbf表表,性别为第一关键字性别为第一关键字,年龄为第二关键字年龄为第二关键字建立索引文件建立索引文件xn.idx。USE xsda INDEX ON 性别性别+str(年龄年龄,3)TO xn List 43v若若是索引表达式:是索引表达式:若索引表达式中用到了不同类型的字段变若索引表达式中用到了不同类型的字段变量,应当用函数将它们转换成统一的类型。量,应当用函数将它们转换成
35、统一的类型。字符型字符型+数值型数值型字符型字符型+STR(数值字段数值字段,长度,小数位)长度,小数位)数值型数值型+数值型:不用转换数值型:不用转换(将两个数值表达式的值相加后的值进行排序)将两个数值表达式的值相加后的值进行排序)字符型字符型+日期型日期型字符型字符型+DTOC(日期型日期型,1)数值型数值型+日期型日期型STR(数值字段数值字段,长度长度,小数位小数位)+DTOC(日期型日期型,1)v数值转换成字符串函数:数值转换成字符串函数:STR(,,)v字符串转换成数值函数:字符串转换成数值函数:VAL()v日期型转换成字符型函数:日期型转换成字符型函数:DTOC()v字符型转换成
36、日期型函数:字符型转换成日期型函数:CTOD()44复合索引文件示例复合索引文件示例总分总分语文语文英语英语关键字关键字记录号记录号关键字关键字记录号记录号关键字关键字记录号记录号340.00292.03101.01346.00193.02117.02352.503100.01127.03索引标识索引标识(1)命令方式建立索引v建立结构复合索引文件(建立结构复合索引文件(.cdx)INDEX ON TAG FOR ASCENDING|DESCENDING UNIQUE|CANDIDATE ADDITIVE【例例1】为表为表xsda.dbf建立结构复合索引文件。索引关键字为建立结构复合索引文件。
37、索引关键字为姓名姓名,用用xm作为普通索引标识作为普通索引标识(TAG标记标记),建立复合索引文,建立复合索引文件件xsda.cdx。use xsda index on 姓名姓名 tag xm list46【例例2】以总分为关键字,降序排序以总分为关键字,降序排序,把把zf作为索引标作为索引标识添加到识添加到xscj.cdx中。中。use xscj Index on 总分总分 tag zf descending List【例【例3】在表在表XSDA.DBF的结构复合索引文件中,先的结构复合索引文件中,先按性别再按学号追加一个索引标识。按性别再按学号追加一个索引标识。USE XSDA INDEX
38、 ON 性别性别+学号学号 TAG xbxh List47【例【例4】对表对表XSCJ.dbf中总分大于等于中总分大于等于345分的记录按总分的降分的记录按总分的降序建立一个单索引文件。对表序建立一个单索引文件。对表XSDA.dbf中北京的学生按中北京的学生按“姓姓名名”字段(升序)建立结构复合文件的一个索引标识字段(升序)建立结构复合文件的一个索引标识XM,索,索引类型为普通索引;按引类型为普通索引;按“性别性别”字段(降序)建立结构复合字段(降序)建立结构复合文件的另一个索引标识文件的另一个索引标识XB,索引类型为惟一索引。,索引类型为惟一索引。vUSE XSCJvINDEX ON 总分总
39、分 TO XSCJ1 FOR 总分总分=345 vLISTvUSE XSDAvINDEX ON 姓名姓名 TAG XM FOR 住址住址=”北京北京”vLISTvINDEX ON 性别性别 TAG XB DESC UNIQUEvLIST48(1)命令方式建立索引49(2)在表设计器中建立索引)在表设计器中建立索引 在排序选项中,选择索引方向,升序(在排序选项中,选择索引方向,升序()或降)或降序(序()。)。数值型按其值论大小,西文字符按其数值型按其值论大小,西文字符按其ASCII码值码值论大小,汉字等字符串按其内码论大小。论大小,汉字等字符串按其内码论大小。在表设计器中建立的索引文件与表同名
40、,是结构在表设计器中建立的索引文件与表同名,是结构复合索引文件。复合索引文件。505打开索引文件刚刚建立完索引文件时刚刚建立完索引文件时,该索引文件处于打开状态。该索引文件处于打开状态。在打开表文件时在打开表文件时,结构复合索引文件随之打开。结构复合索引文件随之打开。可以同时打开多个索引文件,但任何时候只能有一可以同时打开多个索引文件,但任何时候只能有一个索引文件起作用。个索引文件起作用。当打开多个索引文件时,(复合索引文件中的多个当打开多个索引文件时,(复合索引文件中的多个子索引同时打开),此时只有一个索引起作用子索引同时打开),此时只有一个索引起作用,该索该索引称是引称是主控索引主控索引。
41、51打开单索引文件和非结构复合索引文件打开单索引文件和非结构复合索引文件v命令格式命令格式1:SET INDEX TO ADDITIVEv命令格式命令格式2:USEINDEXv功能功能:打开当前表的一个或多个索引文件。打开当前表的一个或多个索引文件。v(1):指定要打开的一个或多个索引文件,多指定要打开的一个或多个索引文件,多个索引文件之间要用逗号分隔,个索引文件之间要用逗号分隔,第一个索引文件自动成为主第一个索引文件自动成为主控索引文件。控索引文件。v(2)ADDITIVE:若缺省该项,则在用本命令打开索引文件的若缺省该项,则在用本命令打开索引文件的同时,除结构复合索引文件之外的其他索引文件
42、均被关闭。同时,除结构复合索引文件之外的其他索引文件均被关闭。若含此项,表示不关闭以前打开的索引文件。若含此项,表示不关闭以前打开的索引文件。52【例例】单索引文件使用方法示例。单索引文件使用方法示例。use xsda set index to xm,xn&打开索引文件打开索引文件xm和和xn,xm被设置为主索引被设置为主索引 List&显示显示xm.idx主控索引文件记录的逻辑排序结果主控索引文件记录的逻辑排序结果 v 使用使用SET INDEX TO或或CLOSE INDEX命令将关闭命令将关闭单索引文件和非结构复合索引文件。单索引文件和非结构复合索引文件。536.设置当前索引的命令54v
43、【例】【例】打开索引文件和设置当前索引示例。打开索引文件和设置当前索引示例。vUSE XSCJvLIST vSET INDEX TO XSCJ1&打开单索引文件打开单索引文件XSCJ1,当前主控索引文件,当前主控索引文件vLIST vUSE XSDAvLISTvSET ORDER TO XM&设置当前索引为包含在结构复合索引文件中设置当前索引为包含在结构复合索引文件中的的XM索引项索引项vLIST vSET ORDER TO XB&设置当前索引为包含在结构复合索引文件中的设置当前索引为包含在结构复合索引文件中的XB索引项索引项 vLIST vSET ORDER TO&记录还是按物理顺序显示记录
44、还是按物理顺序显示vLIST557.更新索引v(1)自动更新自动更新 已打开的索引文件跟随数据的改变自动已打开的索引文件跟随数据的改变自动改变记录的逻辑顺序改变记录的逻辑顺序v(2)重新索引重新索引 格式格式:REINDEX568.删除索引v单索引文件可采取删除文件的方法直接删除,复合单索引文件可采取删除文件的方法直接删除,复合索引文件可用下列命令删除。索引文件可用下列命令删除。v命令格式命令格式:DELETE TAG|ALLOF.v【例】【例】删除索引示例。删除索引示例。v USE XSDAv DELETE TAG XB v MODI STRUv DELETE TAG ALL v MODI
45、STRU579.关闭索引文件v格式一格式一:USEv功能功能:关闭表文件的同时,也关闭了所有已打开的索关闭表文件的同时,也关闭了所有已打开的索引文件。引文件。v格式二格式二:SET INDEX TOv功能功能:关闭所有已打开的索引文件,但表文件仍处于关闭所有已打开的索引文件,但表文件仍处于打开状态。打开状态。v格式三格式三:CLOSE INDEXv功能功能:功能同功能同SET INDEX TO命令。命令。583.5 数据查询3.5.1 顺序查询顺序查询 顺序查找是在表文件中依次查找满足条件的顺序查找是在表文件中依次查找满足条件的记录。顺序查询也称直接查询。记录。顺序查询也称直接查询。v命令格式
46、命令格式:LOCATE FOR CONTINUEu默认范围:默认范围:ALL59v说明说明v该命令不显示结果,使用有关函数可证实找到否。该命令不显示结果,使用有关函数可证实找到否。v若查找到一个满足条件的记录可用函数若查找到一个满足条件的记录可用函数RECNO()返回该记录号,此时函数)返回该记录号,此时函数FOUND()返回值为()返回值为.T.,EOF()返回值为()返回值为.F.;v若找不到满足条件的记录可用函数若找不到满足条件的记录可用函数RECNO()返()返回值为该表文件总记录数回值为该表文件总记录数+1,函数,函数FOUND()返()返回值为回值为.F.,EOF()返回值为()返
47、回值为.T.。60v【例】【例】在表在表XSDA.dbf中(共有中(共有50条记录)按顺序查找不是条记录)按顺序查找不是团员且家在安徽的所有男同学记录。团员且家在安徽的所有男同学记录。vUSE XSDAvLOCATE FOR 性别性别=”男男”.AND.是否团员是否团员=.F.AND.住住址址=”安徽安徽”v?FOUND()()v?RECNO()()vDISPLAY vCONTINUEv?FOUND()()v?RECNO()()613.5.2 索引查询v格式格式:SEEK v功能功能:在已确定当前索引的表文件中快速查找满足在已确定当前索引的表文件中快速查找满足值值的第一条记录。的第一条记录。v
48、说明说明:v(1)要产生一个索引内容的值(如:要产生一个索引内容的值(如:”许小亭许小亭”)而)而不是关系表达式(如:姓名不是关系表达式(如:姓名=”许小亭许小亭”)。)。v(2)只能在索引过的表中使用,并且只能对当前索引关键字)只能在索引过的表中使用,并且只能对当前索引关键字进行查询。进行查询。v(3)当表中有多个符合条件的记录时,指针定位在第一个,)当表中有多个符合条件的记录时,指针定位在第一个,用用SKIP可定位到下一个。可定位到下一个。62v【例】【例】索引查找示例。索引查找示例。vCLOSE ALL vUSE XSDAvINDEX ON 姓名姓名 TAG XMvINDEX ON 出生
49、日期出生日期 TAG CSRQvSET ORDER TO XMvSEEK”许小亭许小亭”v?RECNO()vDISPLAYvSET ORDER TO CSRQvSEEK 1982/07/27v?RECNO()vDISPLAY633.6 数据统计数据统计 3.6.1 统计记录个数命令统计记录个数命令v格式格式:COUNT FOR WHILE TO v功能功能:统计当前表中指定范围内满足条件的记录个数,并存于统计当前表中指定范围内满足条件的记录个数,并存于中。中。【例】【例】分别统计表分别统计表XSDA.dbf中学生总人数、男同学的人数。中学生总人数、男同学的人数。vUSE XSDAvCOUNT
50、TO Nv?NvCOUNT FOR 性别性别=”男男”TO BOYv?BOY643.6.2 求和命令v格式格式:SUM FOR WHILE TO v功能功能:在当前表中,对指定范围内给定条件的数值型字段或在当前表中,对指定范围内给定条件的数值型字段或含数值型字段的数值表达式进行纵向求和计算,并把结果存含数值型字段的数值表达式进行纵向求和计算,并把结果存放在对应的放在对应的标识的变量中。标识的变量中。v缺省则对所有数值型字段进行纵向求和缺省则对所有数值型字段进行纵向求和;若若使用可选项使用可选项,则只对,则只对中的各表达式累加求和,数值型字段之间或表达式之间用逗中的各表达式累加求和,数值型字段之