版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 第第11章章 数据表和索引数据表和索引 表是处理数据和建立关系型数据库及应用程序的基本单元。表的操作包括创建新表、处理当前存储在表中的信息、定制已有的表。可以使用索引对记录排序及快速处理。 11.1 创建新表创建新表11.2 表的基本操作表的基本操作11.3 在表单中操作表在表单中操作表11.4 定制表定制表11.5 修改表结构修改表结构11.6 数据表的索引数据表的索引习题习题11 11.1 创建新表创建新表 创建一个VFP表,包括建立表的结构,和向表中添加记录,就像手工制表时,先画一张含有栏目标题的空表格,然后向表格中填写数据。11.1.1 表的概念 数据表是一组相关联的数据按行和列排列
2、的二维表格,简称为表(Table)。每个数据表均有一个表名,表11-1就是一个描述学生基本情况的“二维”表格,是一个典型的“关系”。学号姓名性别出生日期班级编号专业总学分说明照片2001220203李富强男08/03/1982012202计算机应用2001220212冯见岳男06/18/1981012202计算机应用2001160208罗海燕女12/06/1982011602国际贸易2001180105张丽萍女01/08/1982011801会计2001180102刘刚男07/13/1982011801会计2001160211赵江山男05/16/1982011602国际贸易2001160221
3、许海霞女02/12/1981011602国际贸易2001220115王春雷男10/20/1981012201计算机应用2001220207李家富男03/13/1982012202计算机应用2001220215张仙见女09/21/1981012202计算机应用 在在VFP中,表中的每一列都是一个字段,第一行中的每一项是相应字段的字中,表中的每一列都是一个字段,第一行中的每一项是相应字段的字段名;第一行以下的每一行都是一条记录;表格的表头可以看作段名;第一行以下的每一行都是一条记录;表格的表头可以看作VFP的表名。的表名。11.1.2 表的结构设计表的结构设计 表在计算机内以文件形式出现,其类型为
4、表在计算机内以文件形式出现,其类型为“.DBF”,表名就是文件名,其命名,表名就是文件名,其命名按文件名要求。按文件名要求。 表的结构设计包括定义:字段名、字段类型、字段长度(数值型还需要定义小表的结构设计包括定义:字段名、字段类型、字段长度(数值型还需要定义小数位数)。数位数)。1. 字段名字段名 字段名即表的栏目名或关系的属性名,可以用来引用该列数据。命名要求:字段名即表的栏目名或关系的属性名,可以用来引用该列数据。命名要求: 汉字或字母开头,由汉字、字母、数字和下划线组成,如汉字或字母开头,由汉字、字母、数字和下划线组成,如“学号学号”、“Name”、“工资工资1”、“X_1”等是符合要
5、求的,而等是符合要求的,而“说说 明明”、“1-1”等不能作等不能作为字段名使用。为字段名使用。 自由表字段名长度不能超过自由表字段名长度不能超过10个字符,数据库表字段名最长可使用个字符,数据库表字段名最长可使用128个字个字符。符。 不能使用保留字。不能使用保留字。 同一表中字段名不允许重复。同一表中字段名不允许重复。 字段名最好能简要说明该字段的意义,如字段名最好能简要说明该字段的意义,如“姓名姓名”栏可以用栏可以用“姓名姓名”、“name”或或“xm”作为字段名。作为字段名。2. 字段类型和宽度字段类型和宽度 表中的每一个字段都有特定的数据类型。可以将字段的数据类型设置为表表中的每一个
6、字段都有特定的数据类型。可以将字段的数据类型设置为表11-2中的任意一种。中的任意一种。 类型代号说明字段宽度字符型C汉字或字符最多254个字符,汉字占2个字符数值型N整数或小数最多20位,小数点和正负号各占一位货币型Y保留4位小数8个字节日期型D格式为MM/DD/YY8个字节日期时间型T日期和时间8个字节逻辑型L逻辑值“真”或“假”1个字节浮点型F整数或小数,同数值型整型整型I存放整数4个字节双精度型B存放精度较高的数值8个字节备注型备注型M接收字符型数据,存放在文件名与表明相同的“. FPT”文件中4个字节通用型通用型G存放图形、声音等OLE对象(对象链接与嵌入),与备注型存放位置相同4个
7、字节字符型(二进制)同前述“字符型”,但是当代码页更改时字符值不变同“字符型”备注型(二进制)同前述“备注型”,但是当代码页更改时备注不变同“备注型” 说明: 备注型和通用型数据与其他数据并不存放在一起,而是存放在与表同名的.FPT文件中。由此可以设计表11-1的结构,见表11-3。字段名字段类型宽度说明xh字符型10学号xm字符型6姓名xb逻辑型1性别csrq日期型8出生日期zy字符型20专业bjbh字符型4班级编号zxf数值型5.1总学分sm备注型4说明zp通用型4照片表名为:xs.dbf 上述结构可以表示为:xs(xh(C,10), xm(C,6), xb(L), csrq(D), zy
8、(C,20), bjbh(C, 4), zxf(N, 5.1), sm(M), zp(G)。 11.1.3 使用表设计器使用表设计器 在在VFP中,创建表的工具有表向导和表设计器。一般使用中,创建表的工具有表向导和表设计器。一般使用“表设计表设计器器”。1. 创建新表创建新表 表设计器可以完成创建新表的全过程,其操作步骤为:表设计器可以完成创建新表的全过程,其操作步骤为: 从从“文件文件” 菜单菜单“新建新建” 选择选择“表表”,然后单击,然后单击“新建文件新建文件” 2. 向表中添加记录向表中添加记录 若要向表中添加记录:若要向表中添加记录: 从从“文件文件”菜单菜单“打开打开”命令,或者单
9、击常用工具栏上的命令,或者单击常用工具栏上的“打开打开”按钮。按钮。 在在“打开打开”对话框中对话框中选择选择“文件类型文件类型”为为“表(表(*.dbf)”,选择,选择表所在的文件夹,找到表文件后,双击要打开的表。表所在的文件夹,找到表文件后,双击要打开的表。 在在“显示显示”菜单中菜单中选择选择“浏览浏览”命令命令 再次打开再次打开“显示显示”菜单菜单选择选择“追加方式追加方式” 在在“浏览浏览”(图(图11-6左)或左)或“编辑编辑”(图(图11-6右)窗口中输入新的记录。右)窗口中输入新的记录。 11.1.4 使用命令使用命令 在命令窗口中或是在代码中使用命令,更能发挥在命令窗口中或是
10、在代码中使用命令,更能发挥VFP的强大的强大功能。功能。1. Visual FoxPro的语法规则的语法规则 VFP的命令由命令名和一些命令短语组成。只要符合的命令由命令名和一些命令短语组成。只要符合VFP的的语法规则,就可以用命令名和短语组合成多种命令,所以掌握语法规则,就可以用命令名和短语组合成多种命令,所以掌握语法规则十分重要。语法规则十分重要。 对记录操作命令的一般格式为:对记录操作命令的一般格式为:命令名命令名 范围范围 FIELDS 字段名表字段名表 FOR | WHILE 条件条件 选项说明ALL对全部记录进行操作对全部记录进行操作NEXTn只对包括当前记录在内的以下连续的只对包
11、括当前记录在内的以下连续的n个记录进行操作个记录进行操作RECORDn只对第只对第n号记录进行操作号记录进行操作REST只对当前记录起到文件尾的所有记录进行操作只对当前记录起到文件尾的所有记录进行操作 2. 创建新表CREATE新表文件名新表文件名打开打开“表设计器表设计器”,创建一个新的表文件结构。,创建一个新的表文件结构。使用下述使用下述SQL命令可以不使用命令可以不使用“表设计器表设计器”,直接创建表结构:,直接创建表结构:CREATE TABLE 新表文件名新表文件名(字段名字段名1类型类型(长长度度),字段名字段名2类型类型(长度长度)【例【例11-1】在命令窗口输入以下命令:】在命
12、令窗口输入以下命令:CREATE TABLE Student(xh c(10), xm c(6), xb l, csrq d(8), zy c(20), sm m, zp g) 可以建立包含可以建立包含xh、xm、xb、csrq、zy、sm、zp等字段的等字段的一个新的数据表一个新的数据表Student.dbf。 3. 打开与关闭表打开与关闭表 打开与关闭表都是使用打开与关闭表都是使用USE命令,其格式为:命令,其格式为:USE 表文件名表文件名使用不带参数的使用不带参数的USE命令可以关闭已打开的数据命令可以关闭已打开的数据表。表。 4. 添加记录添加记录 使用使用APPEND命令可以向打开
13、的数据表中添加记录。命令可以向打开的数据表中添加记录。使用使用APPEND BLANK命令可以在打开的数据表中添加一命令可以在打开的数据表中添加一个空白记录。个空白记录。 5. 复制表复制表 使用使用COPY TO命令可以将当前数据表中指定范围内所有命令可以将当前数据表中指定范围内所有符合条件的记录复制到新的表文件中,新文件结构仅包含指符合条件的记录复制到新的表文件中,新文件结构仅包含指定的字段。其命令格式为:定的字段。其命令格式为:COPY TO 新文件名新文件名 范围范围 FOR | WHILE 条条件件 FIELDS 字段名表字段名表 说明:说明: 新文件名可省略扩展名新文件名可省略扩展
14、名.DBF,条件为逻辑表达,条件为逻辑表达式。式。 若缺省若缺省FOR|WHILE条件,则范围默认为条件,则范围默认为ALL,即将所有记录复制到新表中。即将所有记录复制到新表中。 若缺省若缺省FIELDS字段名表,则新文件保留全部字段。字段名表,则新文件保留全部字段。 若所有可选项都缺省,则原样复制表文件。若所有可选项都缺省,则原样复制表文件。 若原文件带有备注型字段,则其相伴的备注文件(扩展若原文件带有备注型字段,则其相伴的备注文件(扩展名为名为.FPT)也同时被复制。)也同时被复制。 11.2 表的基本操作表的基本操作 表的基本操作包括查看记录、编辑记录、增加记录、删表的基本操作包括查看记
15、录、编辑记录、增加记录、删除记录以及记录指针的定位。除记录以及记录指针的定位。11.2.1 使用使用“浏览浏览”窗口窗口 使用使用“浏览浏览”窗口可以完成所有对表中记录的基本操作。窗口可以完成所有对表中记录的基本操作。1. “浏览浏览”窗口窗口2. “表表”菜单菜单 一旦打开一旦打开“浏览浏览”窗口,系统菜单中将增加一个窗口,系统菜单中将增加一个“表表”菜单,如图菜单,如图11-10所示。所示。“表表”菜单中包括所有对表的基本菜单中包括所有对表的基本操作,选择相应的子菜单项,按照屏幕提示,即可完成各操作,选择相应的子菜单项,按照屏幕提示,即可完成各项操作。项操作。3. 转到记录转到记录4. 编
16、辑字段编辑字段5. 添加新记录添加新记录6. 删除记录删除记录 11.2.3 使用命令使用命令 可以直接在命令窗口或者在程序中使用VFP命令来完成对表中数据的各项基本操作。1. 打开浏览窗口 使用BROWSE命令可以打开浏览窗口,其格式为:BROWSE FIELDS 字段名表字段名表 LOCK 表达表达式式FREEZE 字段名字段名 .例例:BROWS FIELDS 姓名姓名,期中期中BROW LOCK 2 BROWSE FREEZE 期中期中 2. 查看记录查看记录 还可以在还可以在VFP主窗口或用户自定义窗口(如表单)中显主窗口或用户自定义窗口(如表单)中显示当前表中的记录。显示命令有两个
17、,其格式分别是:示当前表中的记录。显示命令有两个,其格式分别是:LIST 范围范围 FIELDS 字段名表字段名表 FOR | WHILE 条件条件 OFFTO PRINTDISPLAY 范围范围 FIELDS 字段名表字段名表 FOR | WHILE 条件条件 OFFTO PRINT3. 编辑编辑 使用命令使用命令EDIT,可以打开,可以打开“编辑编辑”窗口,编辑已打开的窗口,编辑已打开的数据表。其格式为:数据表。其格式为:EDIT 范围范围 FIELDS 字段名表字段名表 FOR | WHILE 条件条件 说明:范围项缺省时,系统默认为说明:范围项缺省时,系统默认为ALL,在满足条,在满足
18、条件的记录范围内可前后翻页。件的记录范围内可前后翻页。EDIT FIELDS 姓名姓名,期中期中 4. 记录定位记录定位 记录定位是指根据需要将记录指针移到指定记录,使之成为当前记录,记录定位是指根据需要将记录指针移到指定记录,使之成为当前记录,以便对之操作。以便对之操作。 文件的首记录又称为文件的首记录又称为TOP,尾记录称为,尾记录称为BOTTOM。用。用USE命令打开数据命令打开数据库时,指针总是指向第一条记录(库时,指针总是指向第一条记录(TOP)。)。 可以在命令窗口或程序中使用命令来移动记录指针。移动记录指针的命可以在命令窗口或程序中使用命令来移动记录指针。移动记录指针的命令分为绝
19、对移动(令分为绝对移动(GO)和相对移动()和相对移动(SKIP)两种,其格式如下:)两种,其格式如下: (1) 绝对移动绝对移动 绝对移动记录指针的命令格式为:绝对移动记录指针的命令格式为:GO BOTTOM | TOP | 记录号记录号 其中其中BOTTOM表示末记录,表示末记录,TOP表示首记录,记录号可以是数值表表示首记录,记录号可以是数值表达式,按四舍五入取整数,但是必须保证其值为正数且位于有效的记录数范达式,按四舍五入取整数,但是必须保证其值为正数且位于有效的记录数范围之内。围之内。 (2) 相对移动相对移动 相对移动记录指针的格式为:相对移动记录指针的格式为:SKIP n | -
20、n 其中其中n为数值表达式,四舍五入取整数。若是正数,向记录号增加的方向为数值表达式,四舍五入取整数。若是正数,向记录号增加的方向移动,若是负数,向记录号减少的方向移动。移动,若是负数,向记录号减少的方向移动。 5. 使用批替换命令使用批替换命令 批替换命令批替换命令REPLACE可对字段内容成批自动地进行修改可对字段内容成批自动地进行修改(替换),而不必在编辑状态下逐条修改。批替换命令的语(替换),而不必在编辑状态下逐条修改。批替换命令的语法格式为:法格式为:REPLACE 范围范围字段名字段名1 WITH 表达式表达式1,字段名字段名2 WITH 表达式表达式2. FOR | WHILE
21、条件条件 说明:说明: 若无范围项,则只对当前记录操作。若无范围项,则只对当前记录操作。 对指定范围内满足条件的各记录,以表达式对指定范围内满足条件的各记录,以表达式1的值的值替换字段名替换字段名1的内容,表达式的内容,表达式2的值替换字段名的值替换字段名2的内容的内容 (备注型字段除外)。(备注型字段除外)。例例:修改总成绩修改总成绩REPL ALL 总成绩总成绩 WITH 期中期中*0.3+平时平时+期末期末*0.6 6. 在表中添加新记录在表中添加新记录 (1) 使用使用APPEND命令命令 APPEND命令可以在表的尾部添加新的记录,其格式为:命令可以在表的尾部添加新的记录,其格式为:
22、APPEND BLANK 说明:如果缺省说明:如果缺省BLANK选项,系统按选项,系统按“追加方式追加方式”打开打开“浏览浏览”或或“编辑编辑”窗口,为数据表添加新记录。如果有窗口,为数据表添加新记录。如果有BLANK选项,则在表的尾部添加一个空记录而不打开选项,则在表的尾部添加一个空记录而不打开“浏览浏览”或或“编辑编辑”窗口。窗口。 若要从其他表中追加记录,可以使用如下格式的命令:若要从其他表中追加记录,可以使用如下格式的命令:APPEND FROM 表文件名表文件名 FOR 逻辑表达式逻辑表达式 (2) 使用使用INSERT命令命令 INSERT命令可以在表的任何位置插入一条新的记录命令
23、可以在表的任何位置插入一条新的记录:INSERT BLANK BEFORE 说明:若无说明:若无BLANK选项,系统打开选项,系统打开“浏览浏览”或或“编辑编辑”窗窗口,在当前记录后(无口,在当前记录后(无BEFORE)或在当前记录前(有)或在当前记录前(有BEFORE)为数据表插入新记录;若有)为数据表插入新记录;若有BLANK选项,则插入选项,则插入一条空记录而不打开一条空记录而不打开“浏览浏览”或或“编辑编辑”窗口。窗口。 7. 删除记录删除记录 (1) 逻辑删除记录逻辑删除记录 逻辑删除记录命令可以对数据表中指定范围内满足条件的记录加注删除逻辑删除记录命令可以对数据表中指定范围内满足条
24、件的记录加注删除标记,其格式为:标记,其格式为:DELETE 范围范围 FOR 条件条件 (2) 恢复逻辑删除的记录恢复逻辑删除的记录 使用撤销标记命令,可以恢复逻辑删除的记录,其格式为:使用撤销标记命令,可以恢复逻辑删除的记录,其格式为:RECALL 范围范围 FOR 条件条件 (3) 物理删除加注删除标记的记录物理删除加注删除标记的记录 可以将数据表中所有具有删除标记的记录正式从表文件中删掉。可以将数据表中所有具有删除标记的记录正式从表文件中删掉。其格式为:其格式为:PACK (4) 直接删除所有记录直接删除所有记录 直接删除所有记录命令可以一次删除数据表中的全部记录,但保留表结直接删除所
25、有记录命令可以一次删除数据表中的全部记录,但保留表结构。其格式为:构。其格式为:ZAP 说明:本命令等价于说明:本命令等价于DELETE ALL与与PACK连用,但速度更快。属于物连用,但速度更快。属于物理删除命令,一旦执行,无法恢复。理删除命令,一旦执行,无法恢复。 11.4 定制表定制表 可以在表中设置一个过滤器来定制自己的表,有选择地显可以在表中设置一个过滤器来定制自己的表,有选择地显示某些记录。还可以通过设置字段过滤器,对表中的某些字示某些记录。还可以通过设置字段过滤器,对表中的某些字段的访问进行限制,这样可以选择显示哪些字段。段的访问进行限制,这样可以选择显示哪些字段。11.4.1
26、筛选表筛选表1. 使用使用“浏览浏览”窗口窗口从从“表表”菜单菜单 “属性属性”命令。在命令。在“工作区属性工作区属性” “数数据过滤器据过滤器”框内输入筛选表达式框内输入筛选表达式2. 使用命令使用命令语法格式为:语法格式为:SET FILTER TO 逻辑表达式逻辑表达式如果要关闭当前表的筛选条件,可以执行不带表达式的如果要关闭当前表的筛选条件,可以执行不带表达式的SET FILTER TO命令。命令。例例:set filter to 团员否团员否 11.4.2 限制对字段的访问限制对字段的访问 在表单中浏览或使用表时,若想只显示某些字段,可以在表单中浏览或使用表时,若想只显示某些字段,可
27、以设置字段筛选来限制对某些字段的访问。选出要显示的字段设置字段筛选来限制对某些字段的访问。选出要显示的字段后,剩下的字段就不可访问了。后,剩下的字段就不可访问了。1. 使用使用“字段选择器字段选择器”从从“表表” “属性属性”命令命令“字段筛选指定的字段字段筛选指定的字段” 单击单击“字段筛选字段筛选”按钮,打开按钮,打开“字段选择器字段选择器”对话框。对话框。 2. 使用命令使用命令 可以使用如下格式的命令限制对字段的访问:可以使用如下格式的命令限制对字段的访问:SET FIELDS TO ALL |字段名表字段名表 其中字段名表是希望访问的字段名称列表,各字段其中字段名表是希望访问的字段名
28、称列表,各字段之间用之间用“,”分开。分开。ALL选项将取消所有的限制,而显示所选项将取消所有的限制,而显示所有的字段。有的字段。 11.5 修改表结构修改表结构建立表之后,还可以修改表的结构和属性。例如可能要添加或建立表之后,还可以修改表的结构和属性。例如可能要添加或删除字段,更改字段的名称、宽度、数据类型,改变默认值或删除字段,更改字段的名称、宽度、数据类型,改变默认值或规则或添加注释、标题等。规则或添加注释、标题等。 可以打开可以打开“表设计器表设计器”修改表的结构,也可以使用修改表的结构,也可以使用ALTER TABLE命令以编程方式来更改表的结构。当然,在修改表结命令以编程方式来更改
29、表的结构。当然,在修改表结构前,必须独占地访问该表。构前,必须独占地访问该表。11.5.1 使用表设计器使用表设计器打开表设计器打开表设计器:MODIFY STRUCTURE复制表结构复制表结构:COPY STRUCTURE TO 表文件名表文件名 11.5.2 以编程方式修改表结构以编程方式修改表结构 可以在程序中使用可以在程序中使用ALTER TABLE命令直接修改数据表的结构。命令直接修改数据表的结构。ALTER TABLE命令提供了扩展子句,能够添加或去掉字段,创建或去掉主关键字、命令提供了扩展子句,能够添加或去掉字段,创建或去掉主关键字、惟一关键字或外部关键字标识,并重新命名已有的字
30、段。有些子句仅适用于惟一关键字或外部关键字标识,并重新命名已有的字段。有些子句仅适用于与数据库相关联的表。与数据库相关联的表。 ALTER TABLE命令的语法格式较长,第命令的语法格式较长,第14章中将给出完整的格式。下面章中将给出完整的格式。下面仅给出几个简单的例子。仅给出几个简单的例子。1. 给表添加字段给表添加字段 使用使用ALTER TABLE命令的命令的ADD COLUMN 子句。子句。例如,可以使用以下命令把备注型字段例如,可以使用以下命令把备注型字段“dz”(地址)添加到(地址)添加到xs表中表中ALTER TABLE STD_DA ADD COLUMN dz m 2. 重新命
31、名表字段重新命名表字段 使用使用ALTER TABLE命令的命令的RENAME COLUMN子句。子句。例如,可以使用以下命令对例如,可以使用以下命令对xs表的表的“dz”字段重新命名:字段重新命名:ALTER TABLE STD_DA RENAME COLUMN dz TO 地址地址3. 从表中删除字段从表中删除字段 使用使用ALTER TABLE命令的命令的DROP COLUMN子句。子句。例如,可以使用以下命令从例如,可以使用以下命令从xs表中删掉表中删掉“jtzz”(家庭住址)字段:(家庭住址)字段:ALTER TABLE STD_DA DROP COLUMN 地址地址 11.6 数据
32、表的索引数据表的索引建立索引的最直接的理由是为了排序。在建立数据表时,记录一般是随机输入,其建立索引的最直接的理由是为了排序。在建立数据表时,记录一般是随机输入,其排列顺序无规律。如果要按照某些字段值的顺序排列,就要对数据表进行排序操作排列顺序无规律。如果要按照某些字段值的顺序排列,就要对数据表进行排序操作或者建立索引。或者建立索引。11.6.1 基本概念基本概念1. 索引与索引表达式索引与索引表达式 数据表的索引是按指定的索引表达式对数据表建立的一个文件数据表的索引是按指定的索引表达式对数据表建立的一个文件索引索引文件。索引文件是一个记录号的列表(指针列表),它指向待处理的记录,文件。索引文
33、件是一个记录号的列表(指针列表),它指向待处理的记录,并确定了记录的处理顺序,即按新顺序存储着数据表所对应的记录号。索并确定了记录的处理顺序,即按新顺序存储着数据表所对应的记录号。索引表达式可以是表中的字段或字段的组合,前者又称为索引字段。引表达式可以是表中的字段或字段的组合,前者又称为索引字段。 索引并不改变表中所存储数据的顺序,它只改变索引并不改变表中所存储数据的顺序,它只改变VFP读取每条记录的顺读取每条记录的顺序。序。 可以利用索引对数据表中的数据进行排序,以便加速检索数据的速度。可以利用索引对数据表中的数据进行排序,以便加速检索数据的速度。可以用索引快速显示、查询或者打印记录。还可以
34、选择记录、控制重复字可以用索引快速显示、查询或者打印记录。还可以选择记录、控制重复字段值的输入并支持表间的关系操作。索引对于数据库内表之间创建关联也段值的输入并支持表间的关系操作。索引对于数据库内表之间创建关联也很重要。很重要。 建立索引文件 2. VFP中的索引中的索引 VFP中的索引分为主索引、候选索引、惟一索引和普通索引中的索引分为主索引、候选索引、惟一索引和普通索引4种。这种。这些索引控制着在表字段和记录中禁止(前两种)或允许(后两种)重复些索引控制着在表字段和记录中禁止(前两种)或允许(后两种)重复值。值。 (1) 主索引主索引 主索引绝对不允许在指定的字段或表达式(索引关键字)中出
35、现重复主索引绝对不允许在指定的字段或表达式(索引关键字)中出现重复的值。主索引可以确保字段中输入值的惟一性并决定了处理记录的顺序。的值。主索引可以确保字段中输入值的惟一性并决定了处理记录的顺序。 主索引只能在数据库表中创建,主要用于在永久关系中的主表或被引主索引只能在数据库表中创建,主要用于在永久关系中的主表或被引用表中建立完整参照系。可以为数据库中的每一个表建立一个主索引。用表中建立完整参照系。可以为数据库中的每一个表建立一个主索引。建立主索引的索引关键字可以看作主关键字,由于一个表只能有一个主建立主索引的索引关键字可以看作主关键字,由于一个表只能有一个主关键字,所以一个表只能创建一个主索引
36、。关键字,所以一个表只能创建一个主索引。 如果某个表已经有了一个主索引,可以为它添加候选索引。如果某个表已经有了一个主索引,可以为它添加候选索引。 (2) 候选索引候选索引 像主索引一样要求索引关键字值的惟一性并决定了处理记录的顺序。像主索引一样要求索引关键字值的惟一性并决定了处理记录的顺序。因为候选索引禁止重复值,所以它们在表中有资格被选作主索引,即主因为候选索引禁止重复值,所以它们在表中有资格被选作主索引,即主索引的索引的“候选项候选项”。 建立候选索引的索引关键字可以看作是候选关键字,在数据库表和自建立候选索引的索引关键字可以看作是候选关键字,在数据库表和自由表中可为每个表建立多个候选索
37、引。由表中可为每个表建立多个候选索引。 在定义在定义“一对多一对多”或或“一对一一对一”永久关系中的永久关系中的“一一”方时,既可以使方时,既可以使用候选索引,也可以使用主索引。用候选索引,也可以使用主索引。 (3) 惟一索引惟一索引 惟一索引允许在索引关键字中出现重复的值,但只存储索引惟一索引允许在索引关键字中出现重复的值,但只存储索引文件中重复值的第一次出现。文件中重复值的第一次出现。 (4) 普通索引普通索引 普通索引可以决定记录的处理顺序,但是允许字段中出现重普通索引可以决定记录的处理顺序,但是允许字段中出现重复值。在一个表中可以加入多个普通索引。在复值。在一个表中可以加入多个普通索引
38、。在“一对多一对多”永久永久关系的关系的“多多”方,可以使用普通索引。方,可以使用普通索引。11.6.2 建立索引建立索引1. 使用表设计器使用表设计器使用表设计器建立索引使用表设计器建立索引 2. 索引文件索引文件在在VFP中,表索引文件有两种结构:中,表索引文件有两种结构:传统的传统的.IDX索引文件与索引文件与.CDX复合索引文件。复合索引文件。.IDX索引文件只有一个索引关键字表达式,又被称为单入口索引文件只有一个索引关键字表达式,又被称为单入口索引文件索引文件.。.CDX索引文件则包含了多个索引关键字表达式,就好像是把索引文件则包含了多个索引关键字表达式,就好像是把多个多个.IDX索
39、引文件合并成为了一个文件。索引文件合并成为了一个文件。复合索引文件又可以分为两种:复合索引文件又可以分为两种:一种是结构化复合索引文件一种是结构化复合索引文件,另一种是独立的复合索引文件。另一种是独立的复合索引文件。 3. 索引命令 在在VFP中,一般情况下可以在表设计器中建立索引,特别是主索引和候选索引中,一般情况下可以在表设计器中建立索引,特别是主索引和候选索引是在设计数据库时确定好的。但有时需要在程序中临时建立一些普通索引或惟一索是在设计数据库时确定好的。但有时需要在程序中临时建立一些普通索引或惟一索引,所以仍然需要使用命令方式建立索引。索引命令的语法格式为:引,所以仍然需要使用命令方式
40、建立索引。索引命令的语法格式为:INDEX ON 索引表达式索引表达式 TO IDX文件名文件名| TAG 索引名索引名 OF CDX文文件名件名; FOR 表达式表达式; ASCENDING | DESCENDING; UNIQUE | CANDIDATE; ADDITIVE 说明:说明: TO IDX文件名:建立一个单关键字的文件名:建立一个单关键字的.IDX文件,该项是为了与以前版本文件,该项是为了与以前版本兼容,一般只是在建立一些临时索引时才使用。兼容,一般只是在建立一些临时索引时才使用。 OF CDX文件名:可以建立一个包含多个索引的复合索引文件名,扩展文件名:可以建立一个包含多个索
41、引的复合索引文件名,扩展名也是名也是.CDX。 FOR 表达式:给出索引过滤条件,只索引满足条件的记录,该选项一般表达式:给出索引过滤条件,只索引满足条件的记录,该选项一般不使用。不使用。 ASCENDING | DESCENDING:选择建立升序或降序索引,默认升序。:选择建立升序或降序索引,默认升序。 UNIQUE | CANDIDATE:建立惟一索引或候选索引。:建立惟一索引或候选索引。 ADDITIVE:与建立索引本身无关,说明现在建立索引时是否关闭以前的索引,:与建立索引本身无关,说明现在建立索引时是否关闭以前的索引,默认是关闭已经使用的索引,使新建立的索引成为当前索引。默认是关闭已
42、经使用的索引,使新建立的索引成为当前索引。 【例【例11-13】可以使用以下命令为数据表】可以使用以下命令为数据表STD_CJ创建普通创建普通索引:索引:USE STD_CJINDEX ON 期中期中 TAG QZ4. 删除索引删除索引 如果某个索引不再使用了则可以删除它,删除索引的办法如果某个索引不再使用了则可以删除它,删除索引的办法是在表设计器中使用是在表设计器中使用“索引索引”选项卡,选中需要删除的索引,选项卡,选中需要删除的索引,单击单击“删除删除”命令按钮即可删除。也可以使用命令方式删除。命令按钮即可删除。也可以使用命令方式删除。删除索引的命令格式为:删除索引的命令格式为:DELET
43、E TAG 索引名索引名1 OF CDX文件名文件名1,索引索引名名2 OF CDX文件名文件名2 .或或DELETE TAG ALL OF CDX文件名文件名 说明:前者可以删除索引文件中指定的索引,后者则删除说明:前者可以删除索引文件中指定的索引,后者则删除全部索引。全部索引。例例: DELETE TAG QZ 11.6.3 使用索引排序使用索引排序1. 使用对话框使用对话框 建好表的索引后,便可以用它来为记录排序。若要用索引对记录排序,建好表的索引后,便可以用它来为记录排序。若要用索引对记录排序,操作步骤如下:操作步骤如下: 从从“文件文件”菜单菜单中选择中选择“打开打开”命令命令选择已
44、建好索引的表选择已建好索引的表 单击单击“浏览浏览”按钮。按钮。 从从“表表”菜单菜单“属性属性”命令命令 在在“工作区属性工作区属性”对话框中,选择对话框中,选择要用的索引要用的索引 单击单击“确定确定”按钮。这时,显示在按钮。这时,显示在“浏览浏览”窗口中的表将按窗口中的表将按照索引指定的顺序排列记录。照索引指定的顺序排列记录。2. 使用命令使用命令设置当前索引的格式为:设置当前索引的格式为:SET ORDER TO TAG 索引索引名名 ASCENDING | DESCENDING 说明:说明: ASCENDING | DESCENDING:不管索引是按:不管索引是按升序或降序建立的,在
45、使用时都可以用升序或降序建立的,在使用时都可以用ASCENDING指定升序或指定升序或DESCENDING指定降序。指定降序。 11.6.4 查找记录查找记录 除了使用除了使用GO和和SKIP命令移动记录指针外,还可命令移动记录指针外,还可以使用以使用VFP的查找记录命令来定位记录指针。查找的查找记录命令来定位记录指针。查找命令有三个,即命令有三个,即FIND、SEEK和和LOCATE,前,前2个需个需要使用索引,而后一个可以在无索引的表中进行查要使用索引,而后一个可以在无索引的表中进行查找。找。 1. 字符查找命令(字符查找命令(FIND) 查找关键字与所给字符串相匹配的第一个记录,若找到,
46、指针指向该记录;否查找关键字与所给字符串相匹配的第一个记录,若找到,指针指向该记录;否则指向文件尾,给出信息则指向文件尾,给出信息“没找到没找到”。语法格式为:。语法格式为:FIND 字符串字符串|数值数值 说明:说明: FIND只能查找字符串或常数,而且表必须按相应字段索引。只能查找字符串或常数,而且表必须按相应字段索引。 查找的字符串无需加引号,若按字符型内存变量查找,必须使用宏代换函数查找的字符串无需加引号,若按字符型内存变量查找,必须使用宏代换函数&。 本命令只能找出符合条件的第一个记录,若要继续查找其他符合条件的记录,本命令只能找出符合条件的第一个记录,若要继续查找其他符合条
47、件的记录,可使用可使用SKIP命令。命令。 使用本命令时,若是找到了符合条件的首记录,则置函数使用本命令时,若是找到了符合条件的首记录,则置函数FOUND()的值为的值为.T.;否则置函数否则置函数FOUND()的值为的值为.F.。【例【例11-15】下述命令在学生表】下述命令在学生表std_da中查找第一个姓李的同学,并显示该同学中查找第一个姓李的同学,并显示该同学的信息:的信息:USE std_daINDEX ON xm TAG xmSET ORDER TO TAG xmFIND 李李DISP 2. 表达式查找命令(表达式查找命令(SEEK) 查找关键字与所给字符串相匹配的第一个记录,若找到,指针指向该记查找关键字与所给字符串相匹配的第一个记录,若找到,指针指向该记录;否则指向文件尾,给出信息录;否则指向文件尾,给出信息“没找到没找到”。语法格式为:。语法格式为:SEEK 表达式表达式 说明:说明: 只能找出符合条件的第一条记录。只能找出符合条件的第一条记录。 本命令可查找字符、数值、日期和逻辑型索引关键字。本命令可查找字符、数值、日期和逻辑型索引关键字。 若表达式为字符串,则须用界限符括起来(若表达式为字符串,则须用界限符括起来( ,“ ”, );)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026湖北鄂州人才集团有限公司招聘员工派往鄂州市国企工作8人考试参考题库及答案解析
- 2026贵州贵阳市第二十八中学教师招聘3人考试参考试题及答案解析
- Eras护理效果评估与改进
- 2026春季贵州贵阳市观山湖区百花湖幼儿园学期招聘临聘教师1人考试参考题库及答案解析
- 心理护理在心身疾病患者心理康复中的应用
- 2026重庆外语外事学院招聘考试备考题库及答案解析
- 2026重庆飞驶特人力资源管理有限公司派往重庆市教育评估院劳务派遣人员招聘1人考试备考题库及答案解析
- 2026辽宁大连市旅顺口区征兵考试参考试题及答案解析
- 2026淄博莲池骨科医院招聘(44人)笔试参考题库及答案解析
- 2026云南昆明市官渡区北京八十学校招聘4人笔试模拟试题及答案解析
- 2026年山东圣翰财贸职业学院单招综合素质考试备考试题带答案解析
- 2025年退休党支部书记抓党建工作述职报告
- 水下焊接技术培训课件
- 2026年小红书运营账号人设差异化打造调研
- 大班幼儿劳动教育的现状与对策研究
- 2025年四川省绵阳市中考数学试卷附解析答案
- 2026年包头铁道职业技术学院单招职业适应性测试题库及答案解析(名师系列)
- 热性惊厥临床指南
- 中医药科研课题申报技巧
- 2025中国华电集团有限公司重庆分公司校园招聘(第一批)考前自测高频考点模拟试题附答案
- 检验检测机构内审检查表模板下载
评论
0/150
提交评论