《第3章VFP第二次课.ppt》由会员分享,可在线阅读,更多相关《第3章VFP第二次课.ppt(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 第第3章章数据库与表的创建与使用数据库与表的创建与使用12/23/20221n 表记录数据输入表记录数据输入 利用交互方式建立表结构后,若在出现输入记录询问对话框利用交互方式建立表结构后,若在出现输入记录询问对话框时按时按“是是”按钮,则出现记录编辑窗口,供用户输入数据记录。按钮,则出现记录编辑窗口,供用户输入数据记录。以以rsb.dbfrsb.dbf为例,则记录编辑窗口如图所示。为例,则记录编辑窗口如图所示。在数据在数据输输入窗口中,光入窗口中,光标标首先停首先停留在第一个留在第一个记录记录的第一个字段上,的第一个字段上,输输入相入相应应的数据后,移的数据后,移动动光光标标到其到其它字段并
2、它字段并输输入数据,依此方法完成入数据,依此方法完成一条一条记录记录的数据的数据输输入。重复上述操入。重复上述操作,依次作,依次输输入其它数据入其它数据记录记录。3.3.5记录处理记录处理12/23/202223.3.5记录处理记录处理n在浏览窗口中追加数据在浏览窗口中追加数据单击菜单栏单击菜单栏“显示显示”“浏览浏览”选项,打开表记录窗口;再单选项,打开表记录窗口;再单击菜单栏击菜单栏“显示显示”“追加方式追加方式”选项,可输入记录数据。选项,可输入记录数据。或:菜单栏或:菜单栏“表表”“追加方式追加方式”选项,也可输入记录数据。选项,也可输入记录数据。12/23/20223nINSERT-
3、SQL命令命令INSERTINTO语句用于向表格中插入新的行语句用于向表格中插入新的行(记录记录)。命令格式命令格式INSERTINTO表名称表名称VALUES(常量常量1,常量常量2,.)也可以指定所要插入记录的字段:也可以指定所要插入记录的字段:INSERTINTOtable_name(字段字段1,字段字段2,.)VALUES(常量常量1,常量常量2,.)其功能其功能是将新记录插入指定表中,其中记录的字段是将新记录插入指定表中,其中记录的字段1的值为的值为常量常量1,字段,字段2的值为常量的值为常量2,。INTO子句中没有出现的字子句中没有出现的字段,新记录在这些字段上将取空值。段,新记录
4、在这些字段上将取空值。3.3.5记录处理记录处理12/23/20224例例将学生张成民的信息插入到将学生张成民的信息插入到S表中。表中。INSERTINTOSVALUES(200915126,张成民张成民,M,18,CS);例例将一个新学生记录(学号:将一个新学生记录(学号:200915128;姓名:陈冬;性;姓名:陈冬;性别:别:M;所在系:;所在系:IS;年龄:;年龄:l8)插入到)插入到S表中。表中。INSERTINTOS(SNO,SNAME,SEX,SDEPT,AGE)VALUES(200915128,陈冬陈冬,M,IS,l8);在在INTO子句中指出了表名子句中指出了表名S,指出了新
5、增加的记录在哪些字段,指出了新增加的记录在哪些字段上要赋值,字段的顺序可以与上要赋值,字段的顺序可以与CREATETABLE中的顺序不一样,中的顺序不一样,VALUES子句对新元组的各字段赋值,字符串常数要用单引号(英子句对新元组的各字段赋值,字符串常数要用单引号(英文符号)括起来。文符号)括起来。3.3.5记录处理记录处理12/23/20225nEPPEND命令追加记录命令追加记录在表的末尾添加一个或多个新记录。在表的末尾添加一个或多个新记录。命令格式命令格式APPENDBLANKINnWorkArea|cTableAlias参数参数BLANK在当前表的末尾添加一个空记录。在当前表的末尾添加
6、一个空记录。VisualFoxPro在发出在发出APPENDBLANK命令时并不打开编辑窗口。命令时并不打开编辑窗口。可以使用可以使用BROWSE、CHANGE或或EDIT命令编辑新记录。命令编辑新记录。INnWorkArea指定要添加新记录的表所在的工作区。指定要添加新记录的表所在的工作区。INcTableAlias指定要添加新记录的表的别名。指定要添加新记录的表的别名。如果省略如果省略nWorkArea和和cTableAlias,新记录将添加到当前选定工作区的表中。,新记录将添加到当前选定工作区的表中。如果发出如果发出APPEND命令,空记录将添加到由命令,空记录将添加到由nWorkAre
7、a或或cTableAlias指定的工作区的表中,并且自动选定该表;指定的工作区的表中,并且自动选定该表;3.3.5记录处理记录处理12/23/20226nAPPENDFROM使用该命令可以将其它文件使用该命令可以将其它文件(表文件、文本文件、表文件、文本文件、Excel文件等文件等)中的数中的数据导入到当前工作区的表中。据导入到当前工作区的表中。命令格式命令格式APPENDFROMFileNameFIELDSFieldsFieldListFORlExpressionDELIMTED|XLS其中其中DELIMTED说明用于追加文件为文本文件;说明用于追加文件为文本文件;XLS用于说明追加文件为用
8、于说明追加文件为Excel文件;文件;缺省时说明追加文件为表文件。缺省时说明追加文件为表文件。利用菜单命令利用菜单命令“表表”“追加记录追加记录”3.3.5记录处理记录处理12/23/20227n备注型与通用型字段输入备注型与通用型字段输入备注型字段的输入备注型字段的输入:打开表后打开表后,在命令窗口执行在命令窗口执行browse命令命令,弹出弹出browse窗口。窗口。在该窗口中,用鼠标双击字段区域中的在该窗口中,用鼠标双击字段区域中的“memo”,即打开编辑,即打开编辑窗口,可在该窗口中输入任意长的文字。输完后,关闭该编辑窗口,可在该窗口中输入任意长的文字。输完后,关闭该编辑窗口,或按窗口
9、,或按ctrl+w结束保存。此时,可看到结束保存。此时,可看到browse窗口中的窗口中的备注字段的备注字段的“memo”变为变为“Memo”。第一个字母大写,表明备。第一个字母大写,表明备注字段中已包含内容。注字段中已包含内容。通用型字段的输入通用型字段的输入:通用型字段通用型字段(如如“职工档案职工档案”表中的表中的“照片照片”)中的数据用鼠标中的数据用鼠标双击双击browse窗口中字段区域中的窗口中字段区域中的“gen”,打开通用字段的编,打开通用字段的编辑窗口,插入图像,波形声音,辑窗口,插入图像,波形声音,MIDI音乐,视频剪辑等多媒体音乐,视频剪辑等多媒体内容。通用型字段中添加完图
10、片后,内容。通用型字段中添加完图片后,“gen”会变成会变成“Gen”,表明该通用字段中已经包含内容。表明该通用字段中已经包含内容。3.3.5记录处理记录处理12/23/20228n浏览窗口浏览窗口(P882.)BROWSEFIELDSFieldListFORlExpressionFREEZEFieldNameNOAPPENDNODELETENOEDIT|NOMODIFYNOLGRIDNOMODIFYTITLEcTitleText参数参数FIELDSFieldList:指定显示在浏览窗口中的字段。这些字段指定显示在浏览窗口中的字段。这些字段以以Fieldlist指定的顺序显示。在该字段列表中可
11、包含其他相关表中指定的顺序显示。在该字段列表中可包含其他相关表中的字段。在包含一个相关表的字段时,应在字段名前面放一个句号及的字段。在包含一个相关表的字段时,应在字段名前面放一个句号及相关表的别名。相关表的别名。如果忽略如果忽略FIELDS子句,表中的所有字段按其在表结构中出现子句,表中的所有字段按其在表结构中出现的顺序显示。的顺序显示。FORlExpression:指定一个条件,只有指定一个条件,只有lExpression为为“真真”的记录才显示于浏览窗口。包含的记录才显示于浏览窗口。包含FOR子句使记录指针移向符合该子句使记录指针移向符合该条件的第一条记录。条件的第一条记录。3.3.5记录
12、处理记录处理12/23/20229FREEZEFieldName:允许在浏览窗口中只修改一个字段。使允许在浏览窗口中只修改一个字段。使用用FieldName指定该字段,其他字段可显示但不能编辑。指定该字段,其他字段可显示但不能编辑。NOAPPEND:禁止用户通过如下方式添加表记录:按禁止用户通过如下方式添加表记录:按CTRL+Y键,或选择键,或选择“表表”菜单的菜单的“追加记录追加记录”命令。命令。NODELETE:禁止在浏览窗口中为记录作删除标记。禁止在浏览窗口中为记录作删除标记。NOEDIT|NOMODIFY:禁止用户修改表。禁止用户修改表。NOEDIT等同于等同于NOMODIFY。包含其
13、中任何一个子句,用户可以浏览或搜索表,可。包含其中任何一个子句,用户可以浏览或搜索表,可以添加或删除记录,但不能编辑。以添加或删除记录,但不能编辑。TITLEcTitleText:以以cTitleText指定的标题改写显示于浏指定的标题改写显示于浏览窗口标题栏中的默认表名或别名。否则,要浏览的表的名称或别名览窗口标题栏中的默认表名或别名。否则,要浏览的表的名称或别名显示于标题栏中。显示于标题栏中。3.3.5记录处理记录处理12/23/202210n记录的筛选记录的筛选(P883.)如果只想查看某一类型的记录,可以通过设置过滤器对如果只想查看某一类型的记录,可以通过设置过滤器对“浏浏览览”窗口中
14、显示的记录进行限制。窗口中显示的记录进行限制。若要设置一个过滤器,可从若要设置一个过滤器,可从“表表”菜单中选择菜单中选择“属性属性”,进入,进入“工作区属性工作区属性”对话框。对话框。单击单击“数据过滤器数据过滤器”文本框右边的带有文本框右边的带有“.“的的“表达式生表达式生成器成器”按钮,进入筛选表达式生成器。按钮,进入筛选表达式生成器。例如想查看农林专业的学生,筛选就显得非常有用。例如想查看农林专业的学生,筛选就显得非常有用。3.3.5记录处理记录处理12/23/202211n利用命令利用命令SETFILTER筛选筛选命令格式:命令格式:SETFILTERTO条件条件功能功能:设置条件过
15、滤后,只有满足条件的记录才会显示。该命设置条件过滤后,只有满足条件的记录才会显示。该命令不带任何选项,则清除过滤条件,不再对记录过滤。令不带任何选项,则清除过滤条件,不再对记录过滤。例例use职工档案职工档案setfilterto性别性别=“女女”browsesetfiltertobrowseusen限制对字段的访问(限制对字段的访问(P894.)命令格式命令格式SETFIELDTO字段名表字段名表3.3.5记录处理记录处理12/23/202212Visual FoxProVisual FoxPro为每一个表都设置了一个指针,称为为每一个表都设置了一个指针,称为记录指针记录指针。Visual
16、FoxProVisual FoxPro通过记录指针来标识操作的记录对象,记录指针所指向通过记录指针来标识操作的记录对象,记录指针所指向的记录称为的记录称为当前记录当前记录,记录定位就是将记录指针指向某个记录,使其,记录定位就是将记录指针指向某个记录,使其成为当前记录。记录定位命令有绝对定位命令和相对定位命令成为当前记录。记录定位命令有绝对定位命令和相对定位命令2 2种。表种。表刚打开时,记录指针指向第一个记录。刚打开时,记录指针指向第一个记录。(1)(1)绝对定位命令绝对定位命令命令格式命令格式1 1:GOTO TOP|BOTTOMGOTO TOP|BOTTOM功能:将记录指针定位在表的第一个
17、记录或最后一个记录。功能:将记录指针定位在表的第一个记录或最后一个记录。命令格式命令格式2 2:GOTO GOTO 功能:功能:将记录指针定位在将记录指针定位在 指出的记录。指出的记录。n 记录指针定位记录指针定位 (P89P89)3.3.5记录处理记录处理定位命令仅仅是对记录指针进行定位的一种操作,它并不能显示定位的记定位命令仅仅是对记录指针进行定位的一种操作,它并不能显示定位的记录内容。如要显示,则需要使用并且只能使用录内容。如要显示,则需要使用并且只能使用Display命令。命令。12/23/202213文件头文件头第第1号记录号记录第第2号记录号记录记录结束标志记录结束标志记录开始标志
18、记录开始标志记录指针记录指针3.3.5记录处理记录处理12/23/202214例如:例如:USE USE rsbrsb&打开打开rsbrsb,当前记录为第一个记录当前记录为第一个记录?RECNO()&?RECNO()&显示记录号显示记录号1 1GO BOTTOM&GO BOTTOM&指针移动到最后一个记录指针移动到最后一个记录?RECNO()&?RECNO()&显示最后一个记录的记录号显示最后一个记录的记录号GOTO 4&GOTO 4&指针移动到指针移动到4 4号记录号记录?RECNO()&?RECNO()&显示当前记录号显示当前记录号4 42&2&指针移动到指针移动到2 2号记录号记录?RE
19、CNO()&?RECNO()&显示当前记录号显示当前记录号2 2注:注:例中函数例中函数RECNO()RECNO()返回当前记录的记录号。返回当前记录的记录号。记录指针定位例子记录指针定位例子3.3.5记录处理记录处理12/23/202215命令格式:命令格式:SKIP SKIP 功能:功能:从当前记录开始相对移动记录指针。从当前记录开始相对移动记录指针。说明:说明:当当 为负值时,指针向文件头移动,当为负值时,指针向文件头移动,当 为正值时,指针向文件尾移动。为正值时,指针向文件尾移动。缺省时默认为缺省时默认为1 1。例如:例如:USE USE rsbrsb&打开打开rsbrsb,当前记录为
20、第一个记录当前记录为第一个记录SKIP SKIP 1&1&指针向文件头移动指针向文件头移动1 1?RECNO(),BOF()&?RECNO(),BOF()&显示显示1,.T.1,.T.SKIP 2&SKIP 2&指针向文件尾移动指针向文件尾移动2 2?RECNO(),BOF()&?RECNO(),BOF()&显示显示3,.F.3,.F.GO BOTTOM&GO BOTTOM&当前记录为最后一个记录当前记录为最后一个记录?RECNO(),EOF()&?RECNO(),EOF()&显示最后一个记录的记录号,显示最后一个记录的记录号,.F.F.SKIP&SKIP&指针向文件尾移动指针向文件尾移动1
21、1?RECNO(),EOF()&?RECNO(),EOF()&显示最后一个记录的记录号显示最后一个记录的记录号+1+1,.T.T.BOF()BOF()和和EOF()EOF()函数见表函数见表2-5 2-5 逻辑型测试函数逻辑型测试函数。相对定位命令相对定位命令3.3.5记录处理记录处理12/23/202216 顺序顺序(直接直接)定位定位 所谓顺序定位是指在表中从第一条记录开始,按照顺序搜索所谓顺序定位是指在表中从第一条记录开始,按照顺序搜索表,把记录指针定位在满足条件的表,把记录指针定位在满足条件的第一条第一条记录上。记录上。顺序定位适合于顺序定位适合于复杂条件复杂条件或或小型表小型表的定位
22、。的定位。命令格式命令格式:1)1)找首条:找首条:Locate For Locate For 范围范围 2)2)找后续(继续查询):找后续(继续查询):Continue Continue&按照按照LocateLocate指定的条件继续定位下一条记录指定的条件继续定位下一条记录3.3.5记录处理记录处理12/23/202217参数说明:参数说明:Locate是直接在表文件(不需要对表进行排序或索引)中,是直接在表文件(不需要对表进行排序或索引)中,按照按照范围范围、For从表文件的头至尾顺序来定位从表文件的头至尾顺序来定位符合条件的符合条件的第一条第一条记录。如果存在多条满足记录。如果存在多条
23、满足For的记录,可以使用的记录,可以使用Continue命令继续定位下一条记录。命令继续定位下一条记录。Continue命令的作用是从当前相匹配记录的命令的作用是从当前相匹配记录的下一条下一条记录位记录位置开始,继续执行由置开始,继续执行由Locate命令指定的范围、满足条件的下命令指定的范围、满足条件的下一条记录的定位操作。一条记录的定位操作。Continue只能和只能和Locate配套使用,配套使用,不不能单独使用能单独使用。3.3.5记录处理记录处理12/23/202218例例:在学生挡案表在学生挡案表.Dbf表中,定位显示班级为表中,定位显示班级为“99212”并并 且籍贯为且籍贯为
24、“浙江浙江”的记录。的记录。Use 学生挡案表学生挡案表 Locate For 班级班级=”99212”.And.籍贯籍贯=”浙江浙江”Display&显示第一条满足条件的记录显示第一条满足条件的记录?Found()&返回逻辑真返回逻辑真.T.?Eof()&返回逻辑假返回逻辑假.F Continue Display&无记录显示无记录显示?Found()&返回逻辑假返回逻辑假.F.?Eof()&返回逻辑真返回逻辑真.T Use3.3.5记录处理记录处理12/23/202219例例:在学生挡案表在学生挡案表.Dbf.Dbf表中,定位计算机系表中,定位计算机系9999级或级或9898级并且年龄小级并
25、且年龄小于于2020的学生。注:学号的第一、二位表示年级,第三位为的学生。注:学号的第一、二位表示年级,第三位为“2 2”的的表示计算机系。表示计算机系。Use Use 学生挡案表学生挡案表 Locate For(Subs(Locate For(Subs(学号学号,1,3)=,1,3)=”992992”.Or.Subs(.Or.Subs(学号学号,1,3)=,1,3)=”982982”).And.).And.年龄年龄2020?Found()&?Found()&如如Found()Found()函数为函数为.T.T.?EofEof()&()&EofEof()()的结果是什么?的结果是什么?Disp
26、lay&Display&是否有记录显示?是否有记录显示?Continue Continue&继续定位下一个记录,如果不用继续定位下一个记录,如果不用 ContinueContinue而而用用Locate For(Subs(Locate For(Subs(学号学号,1,3)=,1,3)=”992992”.Or.Subs(.Or.Subs(学号学号,1,3)=,1,3)=”982982”).And.).And.年龄年龄2323,其结果会如何,其结果会如何?Found()&Found()?Found()&Found()函数为函数为.F.F说明什么?说明什么??EofEof()&()&EofEof()
27、()的结果是什么?的结果是什么?3.3.5记录处理记录处理12/23/202220例例:在学生挡案表在学生挡案表.Dbf.Dbf表中,查找姓表中,查找姓“王王”的学生。的学生。Use Use 学生挡案表学生挡案表 Locate For Subs(Locate For Subs(姓名姓名,1,2)=,1,2)=”王王”&如果用如果用Locate For Locate For 王王$姓名可能会产生什么问题姓名可能会产生什么问题?Display&Display&显示查询结果显示查询结果 Continue&Continue&继续定位查询下一个记录继续定位查询下一个记录?Found()&Found?Fo
28、und()&Found()()函数为函数为.T.T.Display&Display&显示第二条显示第二条”王王”姓记录姓记录 Continue Continue&“End Of Locate ScopeEnd Of Locate Scope”显示定位结束显示定位结束?EofEof()&()&EofEof()()函数为函数为.T.T.3.3.5记录处理记录处理12/23/202221n记录的修改(记录的修改(P92)界面方式的记录修改界面方式的记录修改浏览窗口中可以对记录进行修改;浏览窗口中可以对记录进行修改;对所有几轮或满足魔咒中条件的记录的某个字段内容进行有对所有几轮或满足魔咒中条件的记录的
29、某个字段内容进行有规律的修改。规律的修改。步骤为:步骤为:在浏览状态下:在浏览状态下:“表表”“替换字段替换字段”如图:如图:3.3.5记录处理记录处理12/23/202222使用修改命令使用修改命令UPDATE命令格式:命令格式:UPDATETableNameSET字段字段1=表达式表达式1,字段字段2=表达式表达式2.WHERE条件表达式条件表达式功能功能:将指定表名字段:将指定表名字段1的值用表达式的值用表达式1的值替换,字段的值替换,字段2的值用表达式的值用表达式2的值替换的值替换.例例将学生将学生200915121的年龄改为的年龄改为22岁。岁。UPDATESSETAGE=22WHE
30、RESNO=200915121;例例将所有学生的年龄增加将所有学生的年龄增加l岁。岁。UPDATESSETAGE=AGE+1;3.3.5记录处理记录处理12/23/202223使用替换命令使用替换命令REPLACE命令格式:命令格式:REPLACE字段名字段名1WITH表达式值表达式值1ADDITIVE,字段名字段名2,WITH表达式值表达式值2ADDITIVE.ScopeFOR条件表达式条件表达式 参数参数字段名字段名1WITH表达式值表达式值1ADDITIVE,字段名字段名2,WITH表达式值表达式值2:指定用表达式值指定用表达式值1的值来代替的值来代替字段字段1中的数据;用表达式表达式中
31、的数据;用表达式表达式2的值来代替字段的值来代替字段2中中的数据,依此类推。的数据,依此类推。3.3.5记录处理记录处理12/23/202224ADDITIVE:把对备注字段的替代内容追加到备注字段的后面。把对备注字段的替代内容追加到备注字段的后面。ADDITIVE只对替换备注字段有用。如果省略只对替换备注字段有用。如果省略ADDITIVE,则用表达式的值改写备注字段原有内容。,则用表达式的值改写备注字段原有内容。Scope:指定要替换内容的记录范围。只替换指定范围内记录字指定要替换内容的记录范围。只替换指定范围内记录字段的内容。范围子句有:段的内容。范围子句有:ALL、NEXTnRecord
32、s、RECORDnRecordNumber和和REST。REPLACE的默的默认范围是当前记录认范围是当前记录(NEXT1)。FOR条件表达式:条件表达式:只有当指定记录使表达式只有当指定记录使表达式lExpression1求求值结果为值结果为“真真”(.T.)时,它的字段才会被替换为新的内容。时,它的字段才会被替换为新的内容。例:例:用替换命令实现表中工资低于用替换命令实现表中工资低于3000且是工程师的所有记录工且是工程师的所有记录工资增加资增加500。replaceall工资工资with工资工资+500where工资工资10003.3.5记录处理记录处理12/23/202229n 索引概
33、述索引概述 表中记录的存储顺序称为物理顺序,记录号表示了表中记录的存储顺序称为物理顺序,记录号表示了记录的物理顺序;表打开后被使用时,记录的处理顺记录的物理顺序;表打开后被使用时,记录的处理顺序称为逻辑顺序。逻辑顺序可以与物理顺序相同,也序称为逻辑顺序。逻辑顺序可以与物理顺序相同,也可以不同。可以不同。为了能实现对表记录的快速查找(查询)让表中的为了能实现对表记录的快速查找(查询)让表中的记录按某个字段值或某些字段值有序排列,这种方法记录按某个字段值或某些字段值有序排列,这种方法叫叫排序排序。实现有两种方法:实现有两种方法:3.3.6索引的创建与使用索引的创建与使用12/23/202230so
34、rt命令命令:将原表记录按某个逻辑顺序重新写到一个新的:将原表记录按某个逻辑顺序重新写到一个新的表文件中。表文件中。index命令命令:生成一个索引文件,它保存的是一个逻辑顺:生成一个索引文件,它保存的是一个逻辑顺序号与原始表物理顺序的记录号的对照表。序号与原始表物理顺序的记录号的对照表。n VFP 索引的几个概念索引的几个概念 索引是由一系列记录号组成的一个列表。索引是由一系列记录号组成的一个列表。索引关键字索引关键字 Index Key 索引关键字是用来作为建立索引的依据,它通常索引关键字是用来作为建立索引的依据,它通常是一个字段或字段表达式,有时也叫索引表达式。是一个字段或字段表达式,有
35、时也叫索引表达式。3.3.6索引的创建与使用索引的创建与使用12/23/202231 在索引文件中保存的是索引号和表中的记录号。在索引文件中保存的是索引号和表中的记录号。例:例:学生表(学生表(xs.dbf)中有中有8个记录如下表:个记录如下表:3.3.6索引的创建与使用索引的创建与使用12/23/202232以学号为关键字按升序建立索引,索引文件内容如下:以学号为关键字按升序建立索引,索引文件内容如下:index#table record#1 1 2 5 3 6 4 4 5 3 6 2 7 7 8 8 其中第一列是索引号,第二列对应于表中的记录号。其中第一列是索引号,第二列对应于表中的记录号
36、。3.3.6索引的创建与使用索引的创建与使用12/23/202233建立索引时要注意以下几点:建立索引时要注意以下几点:表达式的顺序将影响索引的结果。表达式的顺序将影响索引的结果。如:如:“xs.ximing+xs.xbxs.ximing+xs.xb”和和“xs.xb+xs.ximingxs.xb+xs.ximing”不同类型字段构成一个表达式时,必须转换数据类型。不同类型字段构成一个表达式时,必须转换数据类型。如:如:xh+dtoc(csrqxh+dtoc(csrq)若若用多个用多个“数值型数值型”字段求和建立索引表达式。字段求和建立索引表达式。索引将按照字段的和对记录进行排序索引将按照字段
37、的和对记录进行排序n 索引标识索引标识 索引标识是索引关键字的名称,也称为索引名。索引标识是索引关键字的名称,也称为索引名。3.3.6索引的创建与使用索引的创建与使用12/23/202234 可以任意指定,但必须以下划线、字母或汉字开头,并且不能超可以任意指定,但必须以下划线、字母或汉字开头,并且不能超过去过去1010个字节。个字节。n 索引索引 的类型的类型主索引(主索引(Primary Indexes)在数据库表中,每张表中只能创建一个主索引。组成主索引的字在数据库表中,每张表中只能创建一个主索引。组成主索引的字段或表达式,在所有记录中不能有重复的值。段或表达式,在所有记录中不能有重复的值
38、。只能用于只能用于数据库表数据库表。候选索引候选索引 在指定的关键字段或表达式中不允许有重复的索引,一张表中可在指定的关键字段或表达式中不允许有重复的索引,一张表中可建立多个候选索引。建立多个候选索引。可用于可用于数据库表和自由表数据库表和自由表。3.3.6索引的创建与使用索引的创建与使用12/23/202235 普通索引普通索引 可以决定记录的处理顺序,但是允许关键字段或表达式可以决定记录的处理顺序,但是允许关键字段或表达式有重复的值。一张表可建立多个普通索引,在普通索引上查有重复的值。一张表可建立多个普通索引,在普通索引上查找的记录不具有唯一性。找的记录不具有唯一性。唯一索引唯一索引 参加
39、索引的关键字段或表达式在表中可以有重复值,但参加索引的关键字段或表达式在表中可以有重复值,但在索引对照表中,具有重复值的记录仅存储其中的第一个。在索引对照表中,具有重复值的记录仅存储其中的第一个。3.3.6索引的创建与使用索引的创建与使用12/23/202236在在“索引名索引名”文本框文本框中输入索引标识名中输入索引标识名 在在“类型类型”列表框列表框中,选定索引类型中,选定索引类型在在“表达式表达式”文本框中,文本框中,输入索引关键字表达式输入索引关键字表达式 向上箭头为升序索引,向上箭头为升序索引,向下箭头为降序索引向下箭头为降序索引如果需要,可输入如果需要,可输入筛选条件表达式筛选条件
40、表达式 n创建复合索引文件创建复合索引文件用表设计器创建结构复合索引文件、用用表设计器创建结构复合索引文件、用INDEX命令。命令。3.3.6索引的创建与使用索引的创建与使用12/23/202237n 使用索引命令建立索引。使用索引命令建立索引。命令格式:命令格式:INDEX ON INDEX ON TO TO|TAG|TAG OF OF FOR FOR COMPACT COMPACT ASCENDING|DESCENDING UNIQUE|CANDIDATE ASCENDING|DESCENDING UNIQUE|CANDIDATE ADDITIVEADDITIVE功能:建立索引文件或建立索
41、引标识。功能:建立索引文件或建立索引标识。TO TO 子句用于建立子句用于建立单索引文件单索引文件 TAGTAG子句用于建立复合索引子句用于建立复合索引标识或复合索引文件标识或复合索引文件 用于指定非结构复用于指定非结构复合索引文件的名字合索引文件的名字分别用于指定分别用于指定升序或降序升序或降序 表示建立表示建立唯一索引唯一索引 表示建立表示建立候选索引候选索引 3.3.6索引的创建与使用索引的创建与使用12/23/202238 例例 为数据表为数据表gzb.dbfgzb.dbf按基本工资从小到大建立单索引文件按基本工资从小到大建立单索引文件jbgz.idxjbgz.idx,按实发工资从高到
42、低建立单索引文件按实发工资从高到低建立单索引文件sfgz.idxsfgz.idx。代码如下:代码如下:USE USE gzbgzb INDEX ON INDEX ON 基本工资基本工资 TO TO jbgzjbgz&单索引文件总是按索引关键单索引文件总是按索引关键 字字升序排列升序排列 LISTLIST&记录已按基本工资升序排列记录已按基本工资升序排列 INDEX ON INDEX ON 实发工资实发工资 TO TO sfgzsfgz&给实发工资取负号后使实发工资按降序排列给实发工资取负号后使实发工资按降序排列 LISTLIST&记录已按实发工资降序排列记录已按实发工资降序排列3.3.6索引的
43、创建与使用索引的创建与使用12/23/202239例例 为为rsb.dbfrsb.dbf按下列要求建立结构复合索引文件。按下列要求建立结构复合索引文件。记录以姓名降序排列,索引标识记录以姓名降序排列,索引标识xmxm,索引类型为普通索引。索引类型为普通索引。记录以出生日期升序排列,索引标识记录以出生日期升序排列,索引标识csrqcsrq,索引类型为唯一索索引类型为唯一索引。引。记录以职称降序排列,职称相同的按出生日期降序排列,索引记录以职称降序排列,职称相同的按出生日期降序排列,索引标识标识zccsrqzccsrq,索引类型为候选索引。索引类型为候选索引。代码如下:代码如下:USE USE r
44、sbrsb INDEX ON INDEX ON 姓名姓名 TAG TAG xmxm DESCENDING DESCENDING LIST LIST INDEX ON INDEX ON 出生日期出生日期 TAG TAG csrqcsrq UNIQUE UNIQUE LIST LIST INDEX ON INDEX ON 职称职称+DTOS(+DTOS(出生日期出生日期)TAG)TAG zccsrqzccsrq DESCENDING DESCENDING CANDIDATECANDIDATE LIST LIST3.3.6索引的创建与使用索引的创建与使用12/23/202240n重点重点数据库中记录的处理数据库中记录的处理记录插入记录插入记录修改记录修改记录删除记录删除索引文件的建立索引文件的建立12/23/202241