VF数据库第8章索引及记录操作.ppt

上传人:max****ui 文档编号:10977555 上传时间:2020-04-16 格式:PPT 页数:32 大小:265.66KB
返回 下载 相关 举报
VF数据库第8章索引及记录操作.ppt_第1页
第1页 / 共32页
VF数据库第8章索引及记录操作.ppt_第2页
第2页 / 共32页
VF数据库第8章索引及记录操作.ppt_第3页
第3页 / 共32页
点击查看更多>>
资源描述
8 1索引概述 1 索引的概念所谓索引就是按照索引表达式 数据表的某个字段或字段的组合 的值使表中的记录有序排列的一种技术 一般情况下 标中记录的顺序是由数据输入的前后次序决定的 并用记录号予以标识 除非有记录插入或记录删除 否则表中的记录顺序总是不变的 索引实际就是一种排序 但是他不改变表中数据的物理顺序 而是另外建立一个数据号列表 索引文件不能单独使用 必须同源数据表文件一起使用 索引一旦建立后 就产生了一个相应的索引文件 索引文件中只包含两项信息 一是每条记录索引关键字表达式的值 另一项是与其对应的记录号 既在索引文件中只保留索引关键字和记录号信息 并不存在记录的字段数据 因此它不能单独使用 必须同时打开原数据文件 才能使索引文件有效 在VF中 同一个数据库中的多个表以相同属性字段建立索引后 可根据索引表达式的值建立数据库中多个表间的关联关系 第8章索引及记录操作 2 索引的种类根据关键字段值是否重复可将索引分为四种类型 主索引 候选索引 惟一索引 普通索引 主索引 索引表达式的值唯一能够标识每个记录的索引 即索引表达式的值不允许重复 主索引只能在数据库表中建立 一个表只能创建一个主索引 候选索引 索引表达式的值不允许重复 有资格被选做主索引的索引 数据库表和自由表都可以建立侯选索引 一个表可以有多个候选索引 普通索引 是除了上面几种索引之外的一种索引 它允许索引关键字有重复的值 对有相同索引表达式值的记录按原有的先后顺序集中排列在一起 惟一索引 允许索引关键字有重复的值的索引 当有重复值出现时 索引文件只保存重复的第一次值 3 创建索引1 利用表设计器创建索引2 利用命令创建索引A 创建非结构索引INDEXONTo FOR ASCENDING Descending 命令功能 为当前表按的值建立一个非结构索引文件 索引文件扩展名 IDX 例1 将学生档案表 DBF数据表信工系 学号第3位为2 的学生按学号升序建立非结构索引文件xh idx USE学生档案表INDEXON学号TOxhFORSUBS 学号 3 1 2 ascending当索引建立后 新建立的索引文件将自动打开且处于主索引的位置 记录随即按该索引顺序来排列 B 创建结构索引INDEXONTAG FOR ASCENDING DESCENDING Unique Candidate 说明 TAG 结构化索引文件每个索引都必须有一个索引标识 记录的顺序默认为升序 也可用 Ascending 表示 降序用 Descending Unique 建立唯一索引 Candidate 建立候选索引 否则建普通索引 例 将学生档案表 dbf按籍贯和高考成绩降序索引 索引标识为jgcj 按学号升序索引 索引标识为xh 建立结构化复合索引文件 USE学生档案表indexon籍贯 str 高考成绩 5 desctagjgcjindexon学号tagxh 8 2建立表间的关联关系 1 建立表间 一对一 关系 p150 2 建立表间 一对多 关系 3 设置参照完整性 8 3记录排序 1 物理排序排序就是根据数据表的某些字段 称为关键字段 的 值 称为关键字值 的大小重排记录 可为升序 可为降序 排序后将产生一个新的可单独使用的数据表文件 DBF 原数据表文件不变 命令方式 1 命令格式 SORTTOON A D C A D C For Fields 2 命令功能 根据 关键字段 的值 称为关键字值 的大小重排记录 产生一个新的可单独使用的数据库文件 DBF 选项 A和 D分别表示升序或降序 不选择则默认为按升序排列 选项 C表示不区分字母的大小写 2 按索引字段排序a 先在 表设计器 窗口中 为表建立多个索引 b 选择 显示 下拉菜单 浏览 进入 浏览 窗口 c 在 浏览 窗口下 打开 表 选择 属性 进入 工作区属性 窗口 查看所有操作 3 按索引表达式排序 8 4记录定位 7 1绝对定位1 菜单方式2 命令方式无条件记录定位 goto go gototop gotobottom 有条件记录定位 直接 顺序 定位和索引 快速 定位 定位命令仅仅是对记录指针进行定位的一种操作 它并不能显示定位的记录内容 如要显示 则需要使用并且只能使用Display命令 3 相对定位skip 7 3条件 顺序 定位所谓顺序定位是指在表中从第一条记录开始 按照顺序搜索表 把记录指针定位在满足条件的第一条记录上 顺序定位适合于复杂条件或小型表的定位 命令格式 1 找首条 LocateFor 范围 2 找后续 继续查询 Continue 按照Locate指定的条件继续定位下一条记录 例 在学生挡案表 Dbf表中 查找姓 王 的学生 Use学生挡案表LocateForSubs 姓名 1 2 王 如果用LocateFor 王 姓名可能会产生什么问题 Display 显示查询结果Continue 继续定位查询下一个记录 Found Found 函数为 T Display 显示第二条 王 姓记录Continue EndOfLocateScope 显示定位结束 Eof Eof 函数为 T 7 3索引定位索引定位是一种快速定位记录的方法 利用索引定位将明显提高查询效率 适用于大型表的查询 它要求数据表文件的记录是有序的 所以 事先必须对数据表文件进行索引 而且要求查询内容所在的字段或表达式必须是索引文件的索引关键字段或表达式 查什么按什么索引 索引定位有两种命令格式 格式一 Find格式二 Seek1 FIND命令 1 命令方式命令格式 FIND 功能 在打开的以查询内容所在字段为索引关键字的索引文件中 快速查找关键字段等于或的第一个记录 说明 执行命令前 必须首先建立以查询内容所在字段或表达式为索引关键字的索引文件 若已存在则打开该索引文件 且将其设置为主索引 FIND命令通常适用于字符数据类型及数值型 字符串中的字符可以不用定界符 如果查找成功 则把记录指针指向逻辑顺序中第一条符合条件的记录 且FOUND 函数的值为 T 否则 记录指针指向文件未尾 FOUND 函数的值为 F 例题 例题1 在学生档案表中 用FIND命令查找学号为 9832101 的学生 USE学生档案表indexon学号toxhFIND9832101DISPLAY例题2 在学生成绩表中 用FIND命令查找成绩为78的学生 use学生成绩表indexon成绩tocjfind78disp例题3 在学生档案表 DBF数据表文件中 以变量的形式 用FIND命令查找姓名为 刘丽红 的学生 以姓名为索引关键字的索引文件XM IDX已建立 2 SEEK命令FIND命令只能对字符型和数值型的数据进行查找 在某些情况下使用起来不方便 为此 系统中又提供了功能更强的SEEK命令 格式 SEEK功能 在打开的以查询内容所在字段为索引关键字的索引文件中 快速查找关键字段等于值的第一个记录 其中 1 SEEK命令适用于一切数据类型 C N D L 表达式可以是常量 变量和函数所组成 但必须与索引表达式一致 表达式为C D L T F 常量时 必须使用相应的定界符 如 2 表达式为变量时 要直接使用 不需要用宏代换函数 3 如果查找成功 则把记录指针指向逻辑顺序中第一条符合条件的记录 且FOUND 函数的值为 T 否则 记录指针指向文件未尾 FOUND 函数的值为 F 例题3 例题 在学生档案表 DBF数据表文件中 用SEEK命令查找学号为 9921205 的学生 以学号为索引关键字的索引文件XH IDX已建立 USE学生档案表INDEXxh 打开以学号为索引关键字的索引文件XH IDXSEEK 9921205 必须使用定界符DISPLAY 小结 LOCATE和SEEK FIND都是用于在数据表文件中查询定位记录指针 即把记录指针定位在满足条件的记录上 特别强调 仅仅是定位记录指针 如要显示定位的记录内容 则需要用DISPLAY命令 2 LOCATE和SEEK FIND的不同之处 LOCATE是顺序查询定位 可以直接利用原数据表进行定位操作 而SEEK FIND命令是索引查询定位 必须首先对原数据表按定位数据所在字段或表达式进行索引 建立相应的索引文件或打开相应的索引文件 索引标识的前提下才能进行定位操作 LOCATE和CONTINUE相配合可以连续查询定位多条记录 而SEEK FIND只能查询定位单条记录 LOCATE是用条件表达式的形式来定位 而SEEK FIND是用常量 变量或变量组成的表达式的形式来定位 3 FIND和SEEK的不同之处 FIND命令适用于字符型和数值型数据 不可用于日期型和逻辑型数据类型 表达式为字符常量时 不须使用相应的定界符 表达式为变量时 不可直接使用 必须使用宏代换函数 SEEK命令适用于数据类型 C N D L 但若为C D L常量时 必须使用相应的定界符 如 表达式为变量时 要直接使用 不需要用宏代换函数 8 5记录删除与恢复 随着表文件的不断更新 必然会出现一些无用的记录 需要删除 表文件记录的删除有二种 逻辑删除和物理删除 1 逻辑删除逻辑删除仅对记录作逻辑删除标记 作了逻辑删除的记录可以用Recall恢复为正常记录 1 命令方式Delete For Recall For 例 逻辑删除学生档案表中第6条记录 Use学生档案表DeleteRecord6recall 能实现被逻辑删除记录的恢复吗 2 菜单方式打开表选择需要作逻辑删除的记录 单击 表 在弹出的快捷菜单中选择 删除记录 打开表 单击 表 在弹出的快捷菜单中选择 恢复记录 2 物理删除作了物理删除的记录 则从磁盘中永久删除 要物理删除表文件记录 应分两步进行 用Delete作逻辑删除 用Pack命令才能真正删除已加删除标记的记录 1 命令方式Delete For Pack参数说明 物理删除是对表中作了逻辑删除的记录从磁盘中彻底删除 这种删除是不可恢复的 Pack命令执行后 将调整磁盘空间及记录号 但这部分磁盘空间只有在关闭表文件后 才能释放 例 物理删除学生档案表中99级的学生记录 Use学生档案表DeleteForSubs 学号 1 2 99 Pack2 菜单方式打开表 单击 表 在弹出的快捷菜单中选择 彻底删除 3 一次性物理删除表中的所有记录Zap参数说明 该命令不需要先进行逻辑删除 直接使用ZAP可一次性物理删除表的全部记录 但要慎重使用 例 在命令窗口中依次输出下列命令观察 分析各条命令执行的结果 Use学生档案表CopyToXsda 建立一备份文件UseXsdaDeleteFor专业代码 021 Or 专业代码 031 ListPack 物理删除已作删除标记的记录BrowseDeleteFor出生日期 1977 10 31 BrowseRecallForYear 出生日期 1977Browse 观察运行结果 1977年出生的记录其删除标记被除掉Go3Delete 对第三号记录作删除标记Browse 观察运行结果Zap 物理删除全部记录Browse 表文件中无任何记录 全部物理删除CloseAll 8 6记录修改 记录的修改表记录的修改有手工修改方法和替换修改方法两类 手工输入修改法适用于少量数据的修改 需要用户从键盘上输入修改数据 替换法适用于成批的有规律的数据修改 1 手工输入修改法 命令方式Edit For Fields Change For Fields Browse For Fields 三条命令均具有修改记录的功能 修改结束后 按Ctrl W存盘退出修改窗口 Edit和Change如果没有作For选择 通过Go定位或在Edit Change后指明记录号 则可对包括当前记录后的所有记录进行修改 修改有 浏览 和 编辑 两种窗口界面 可通过 显示 菜单下的 浏览 和 编辑 来转换 修改备注型字段和通用型字段的方法与添加记录相同 即双击 Mem 和 Gen 在弹出的编辑窗口中进行修改 菜单方式 打开表文件 单击 显示 及其下拉菜单中的 浏览 选项 表被显示 用滚动条将光标定位在需要修改的记录的有关字段处 并修改数据 修改结束后 按CTRL W存盘并退出修改状态 例 在学生档案表 Dbf中 将学号为 9921203 的记录的 班级 修改为 99211 将 个人简历 添加 获2003年学院三好学生的光荣称号 内容 Use学生档案表EditFields学号 班级 个人简历For学号 9921203 例 理解修改记录命令示例 Use学生档案表Go3Change 可对3号以后的记录进行修改 3 记录的替换表文件的记录有时会遇到大批量的有规则的数据要修改的问题 用手工修改法很麻烦 费时 这时 可以在程序设计中使用替换法 用Replace命令中指定的表达式的值来替换字段原有的值 ReplaceWith Additive With Additive For While 参数说明 用With后指定的的值来替换当前表中指定范围内满足条件的字段的原有值 表达式的数据类型必须与替换的字段数据类型一致 若命令中和等可选项都缺省时 则只对当前记录进行替换 只有在对备注字段的数据进行替换时 可能需要使用 Additive 可选项 选择 Additive 则表达式的值会添加到备注字段中已有数据的尾部 否则 替换字段原有的数据 通用型字段不能使用替换法 对多个字段的值进行替换 字段之间用 分隔 例 现以某单位的工资管理为例 说明Replace的多种用法 对选定记录字段进行替换修改 Use基本工资表Replace基本工资With基本工资 1 2 岗位津贴With岗位津贴 40For职称 教授 Go5Replace岗位津贴With岗位津贴 60ReplaceAll奖金With奖金 20
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!