VFP程序设计第五章.ppt_第1页
VFP程序设计第五章.ppt_第2页
VFP程序设计第五章.ppt_第3页
VFP程序设计第五章.ppt_第4页
VFP程序设计第五章.ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

泸州医学院计算机教研室 罗敏 VFP程序设计 第五章查询 统计和多表操作 排序索引查询统计多工作区的操作 返回 下页 5 1排序 命令 SORTTO新文件名ON字段名1 A B C 字段名2 A B C ASCENDING DESCENDING 范围 FOR WHILE条件 FIELDS字段名表 FIELDSLIKE通配符 FIELDSEXCEPT通配符 3 命令说明1 排序字段 只能为C N D三种类型 排序依据 C型 英文按字母顺序 汉字按拼音顺序 N型 按大小 D型 按日期的新老 新 老 2 A 升序 D 降序 缺省 升序 3 先按字段名1 关键字1 排序 对关键字1相同的 再按字段名2 关键字2 排序 以此类推 示例 学生表 按性别 性别相同按入校总分排序 SORTTO新表ON性别 入校总分 返回 下页 5 2索引 一 索引的概念建立一个小得多的索引文件 在索引文件里 给出由低到高 或由高到低 排列的关键字值及其相应的记录号 下例为按出生日期建立的索引文件 出生日期记录号05 13 40311 11 50412 25 62105 30 63510 05 632 2 索引分类单索引 文件的扩展名为 idx为与原FOXBASE兼容而保留 只能对一个索引表达式建立索引 目前已很少使用 复合索引 文件的扩展名为 cdx当前主要使用的索引方式 在一个文件中 可以建立针对多个索引表达式的多个索引 每个索引通过索引标识来区别 结构复合索引与表文件同名 当打开表时自动打开 分为 主索引 侯选索引 普通索引 唯一索引 3 索引关键字和索引类型索引关键字 建立索引时使用的字段或字段组合 索引类型1 主索引 数据库表中设定有主关键字的索引 要求字段具有唯一值 自由表没有主索引 2 侯选索引 同样要求唯一值 数据库表 自由表都可有多个候选索引 3 普通索引 允许多值 任意表可有多个普通索引 4 唯一索引 允许多值 但索引表中只记录相同关键字记录的第一个 二 索引的建立1命令方式1 INDEXONTO A B C ADDI 1 创建独立单索引 学生表 出生年月 入校总分INDEON出生年月TOCSNYINDEON入校总分TORXZF 返回 下页 2 创建复合索引INDEXONTAG ASCE DESC UNIQUE FOR ADDI 当是由多个字段组成时 多个字段之间用 十 或 一 连接 主关键字在最前面 且数据类型要相同 索引一旦建立 即自动打开 开始起作用 1 复合索引学生表首先打开表 USE学生 TAG1 姓名降序 普通索引 INDEON姓名TAGXMDESC TAG2 性别升序 性别相同时入校总分降序 普通索引 INDEON性别 STR 10000 入校总分 3 TAGXBZFD 5 索引的使用 1 打开索引复合索引文件随表文件自动打开单索引文件必须使用命令 1 打开表同时打开索引USEINDE 打开表带索引 2 表已经打开 再追加打开索引USESETINDETO 设置索引为 返回 下页 2设置主控索引SETORDERTO 索引文件序号 单索引文件名 TAG 索引标识 OF复合索引文件名 5 3查询 1 顺序查询 locate for while CONTINUE 继续查找下一个记录 1 在规定范围内 按照使用顺序查找满足条件的第一个记录 2 continue必须放在locate之后执行 可重复使用 它在剩下的区域内按照使用顺序 继续查找下一条满足条件的记录 3 应使用DISPLAY显示查找结果 例 USE学生情况表LOCAFOR性别 男 注释 第一个男同学DISP 仅显示当前记录LOCAFOR性别 男 仍是第一个DISPCONTI 第二个男同学DISPCONTI 第三个男同学DISPUSE 表用完后应关闭 二 索引查询FIND SEEKSKIP查找下一条满足条件的记录只能对建立并打开索引的索引关键字进行查找 5 4统计 一 计数 COUNT COUNT FOR TO 计数范围内满足记录数到在当前打开的表文件中 统计符合条件的记录个数 例 COUNTFOR性别 男 TOACOUNTFOR三好生TOB 男生人数为 A 显示男生人数 三好生 STR B 3 个 二 求和 SUM 求平均值 AVERAGE SUM AVERAGE FOR TO 在当前表文件中 对符合条件的记录在一个或多个字段上的值进行求和 求平均值 例 SUM入校总分FOR性别 女 TOASUM入校总分 10FOR三好生TOC与REPLAALL入校总分WITH入校总分 10FOR三好生 四 分类汇总 TOTAL TOTALONTO FOR 统计同种类型的N型字段的同关键字字段总和功能 数据表中N型字段按关键字段分组求和 1当前打开的表文件 必须按照关键字段建立索引 2FIELD指定要汇总的N型字段 若省略 则汇总全部N型字段 意义 对学生 按学号分别汇总其选课成绩 统计汇总营业员的销售额 等等 这些操作无法用SUM简单完成 而可以用TOTAL 5 3多工作区的操作 一 工作区1多工作区的特点 1 每个工作区中只能打开一个表文件 一个表文件也只能在一个工作区中打开 2 用户直接操作的工作区称为当前工作区 当前工作区的表为当前表 启动VFP后 默认1号工作区为当前工作区 3 系统为每个工作区中打开的表设置一个记录指针 一般情况下他们各自独立 互不干扰 2 工作区的标识 区号 区名 别名 1 1 32767 分别表示1 32767号工作区 2 A J 分别表示1 10号工作区 3 别名 打开表时建立USEALIAS若无ALIAS子句 则表文件名为默认别名 USE学生INCALIASXS 别名XS或 USE学生IN3ALIASXS 别名XSUSE学生 别名学生 3工作区的选择 1 SELECT 2 USEIN不改变当前工作区 而在指定的工作区打开表文件4工作区的互访别名 字段名或 别名 字段名说明 在当前工作区中 可以通过别名方式引用 读方式 其他工作区中打开的表的字段值 说明 每个工作区中打开的表都有自己独立的记录指针 用户只能操作当前工作区打开的表文件 并且操作不影响其他工作区的数据和记录指针 特别地 对表记录的REPLACE写操作 最好只对当前工作区打开的表文件进行 读操作 引用 可以通过工作区互访对所有工作区进行 例 CLOSEALL 关闭所有表USE学生 打开学生 别名学生SELE0 选择新工作区USE教师ALIASJS 打开教师 别名JSUSE课程IN0ALIAKC 打开课程 别名KC SELECT 此时当前工作区为2DISP学生 姓名 姓名 KC 课程名 显示学生姓名 教师姓名 课程表课程名 练习1 在两个工作区中分别打开学生 DBF 不指定别名 和选课 DBF 别名为Z 2 用SELE命令在工作区间转换 3 用SELECT ALIAS DBF 函数检测各工作区 4 在工作区中移动记录指针 并检测RECNO EOF 的值 二 表间关系与关联1 问题的由来 由于各工作区的记录指针各自独立 不能相互带动 给操作带来麻烦 表关联的目的 是使其他工作区的记录指针根据关键字相等的原则 随同本区的记录指针一起移动 关联可以在两个或多个表之间建立 父表 建立关联的表 其记录指针将带动另一个表的记录指针跟随移动 子表 被关联的表 其记录指针随父表而动 2 用命令建立关联SETRELATIONTO INTO ADDITVIE 关联步骤 1 首先为子表按关联关键字 例如学生表的学号和选课表的学号 选课表为父表 学生表为子表 建立索引 若按记录号建立关联 可以不索引 2 以父表为当前表 用菜单方式或命令方式建立关联 建立关联后 当父表指针移动时 子表记录指针将同时移动到满足关联条件的记录上 子表关键字 父表关键字 注意 当子表为当前表时 子表记录指针移动 不能带动附表指针跟随移动 3 表的关联类型 一对一关联 父表与子表间记录按关联关键字一一对应 一对多关联 父表的每一个记录按关联关键字与子表的多个记录对应 子表的每个记录仍与父表的一个记录对应 如学生 DBF与选课 DBF多对一关系 父表的多个记录按关联关键字与子表的一个记录对应 子表的每个记录仍与父表的一个记录对应 如选课 DBF与课程 DBF 多对多关系 父表的多个记录按关联关键字与子表的多个记录对应 如教师 DBF与课程 DBF 在VisualFoxPro中 不直接处理多对多关系 而是拆分为一对多与多对一关系进行处理 如教师 课程 拆分为 教师 授课 课程一对多多对一 关键字表达式应是两个表共有的公共字段 当前区打开的 是关联表 父表 可以不索引 在另一区打开的是被关联表 子表 子表必须按关键字索引 选择ADDITIVE短语时 以前建立的关联将保留 由此可建立多区关联 否则以前设置的关联自动取消 不带任何选项的SETRELATIONTO命令将关闭当前工作区表文件与其他工作区表建立的关联 一旦建立关联 则当父表的记录指针移动时 子表的记录指针按关键字相等的原则而随动 当子表记录指针移动时 父表的记录指针不随之移动 关联小结1 注意事项 1 父表记录指针的移动通过子表的索引带动子表的记录指针移动 所以 子表必须索引 子表无法带动父表 2 不能建立表的环状关联 2 建立关联时 父表 子表的选择 1 要进行修改的表一般应该是父表 2 在多对一关系中 关键字多方的表 应设为父表 关键字一方的表 应作为子表 3 多表关联时 综合考虑上述两点及操作的方便性 三 表之间的连接格式 JOINWITHTOFOR FIELDS 执行过程 从当前工作区中第一条记录始 在指定的别名工作区表中找满足条件的记录 每找到一条记录 就将当前工作区中的当前记录与指定的别名工作区中找到的记录 连接成一条新记录存于新表文件中 当前表记录指针前移一位 继续以上操作 直到当前表记录指针到达EOF 1 FOR是必选项 两个表必须按条件的要求进行连接 连接中最常用的是等值连接 即连接条件为两个表中公共字段值应相等 2 如选择了FIELD 则连接生成的新表文件中字段按字段表来确定 字段表中的字段必须是当前工作区或指定的别名工作区的字段3 一次只能联结两个表 若要联结多个 应分步进行 4 与SORT和TOTAL一样 新表不会自动打开 而应使用USE命令打开 5 两个表都不需要排序或索引 表的连接示例 从学生表 选课表 课程表生成完整的学生课程表 表的连接示例 第一步 学生表 选课表 按学号相等生成新的学生选课表 表的连接示例 第一步 连接学生表与选课表 生成学生选课表USE学生 dbfIN0EXCLUSIVEUSE选课 dbfIN0EXCLUSIVESELE选课JOINWITH学生TO学生选课FOR学号 学生 学号FIEL学号 学生 姓名 课程号 成绩USE学生选课 dbfIN0EXCLUSIVE 表的连接示例 第二步 学生选课表 课程表再次连接 按课程号相等 生成最终的学生课程表 表的连接示例 第二步 学生选课表 课程表再次连接

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论