760 likes | 880 Views
第 4 章 表的基本操作. 4-1 表记录的定位操作 68 4-2 删除和恢复表中的记录 71 4-3 统计操作 77 4-4 索引的创建和使用 79 4-5 排序 86 4-6 多重工作区的使用 87. 4-1 表记录的定位操作. 4-1-1 记录指针 68 4-1-2 记录指针的移动范围 68 4-1-3 移动记录指针 68. 4-1 表记录的定位操作. 4-1-1 记录指针 68
E N D
第4章表的基本操作 4-1 表记录的定位操作 68 4-2 删除和恢复表中的记录 71 4-3 统计操作 77 4-4 索引的创建和使用 79 4-5 排序 86 4-6 多重工作区的使用87
4-1 表记录的定位操作 4-1-1 记录指针 68 4-1-2 记录指针的移动范围 68 4-1-3 移动记录指针 68
4-1 表记录的定位操作 4-1-1 记录指针 68 当向表中输入记录时,系统会按照记录的输入次序自动为每条记录加上记录号。每打开一个表文件,都有一个用来指示记录号的指针,称为记录指针。记录指针指向的记录就叫当前记录。系统只允许对当前记录进行各种操作。当前记录并不固定在某条记录上,它随着命令的执行而改变。
表文件刚被打开时,记录指针总是指向第一条记录,即当前记录为第一条记录。而在LIST命令执行后,记录指针指向最后一条记录的下一条记录,即尾标记。表文件刚被打开时,记录指针总是指向第一条记录,即当前记录为第一条记录。而在LIST命令执行后,记录指针指向最后一条记录的下一条记录,即尾标记。
4-1-3 移动记录指针 68 • 方法一:用菜单方式移动记录指针 • 方法二:用命令方式移动记录指针
方法一 【例4.1】打开“学生情况表”,分别移动指针到最后一条记录、第6条记录、表中性别为“女”的第一条记录上。
方法二 1.绝对定位移动 命令格式: GO/GOTO <数值表达式>/TOP/BOTTOM 功能:把指针定位在指定的记录。
【例4.2】打开“学生情况表”文件,用命令方式定位并显示表的最后一条记录、第6条记录的“学号”、“姓名”、“出生日期”和“籍贯”字段。【例4.2】打开“学生情况表”文件,用命令方式定位并显示表的最后一条记录、第6条记录的“学号”、“姓名”、“出生日期”和“籍贯”字段。
方法二 2.相对定位移动 命令格式: SKIP [±<数值表达式>] 功能:将当前记录指针从当前记录位置向后(取“+”,或不取符号)或向前(取“-”)移动若干条记录位置。若干条记录等于<数值表达式>的值。
【例4.3】打开“学生情况表”文件,先把指针定位到第5条记录,然后再向下移动2条记录,最后再把指针从当前记录位置向上移动4条记录。【例4.3】打开“学生情况表”文件,先把指针定位到第5条记录,然后再向下移动2条记录,最后再把指针从当前记录位置向上移动4条记录。
方法二 3.按条件定位移动 命令格式: LOCATE [<范围>] FOR /WHILE <条件> 功能:在打开的数据表中,把记录指针定位到指定范围内且满足条件的第一条记录上。
【例4.4】打开“学生情况表”文件,把指针定位到表中是女同学的记录上,并显示其姓名和性别字段。【例4.4】打开“学生情况表”文件,把指针定位到表中是女同学的记录上,并显示其姓名和性别字段。
4-2 删除和恢复表中的记录 4-2-1 逻辑删除表中的记录 72 4-2-2 恢复记录 74 4-2-3 物理删除表中的记录 75
4-2-1 逻辑删除表中的记录 • 方法一:用鼠标在浏览窗口中做逻辑删除 • 方法二:用菜单方式进行逻辑删除 • 方法三:用命令方式进行逻辑删除
方法一 【例4.5】逻辑删除“学生情况表”中的第3条和第8条记录。
方法二 • 【例4.6】打开“学生情况表”,对其中的女同学做逻辑删除。
方法三 命令格式: DELETE [<范围>] [FOR/WHILE <条件>] 功能:为当前数据表中指定范围内满足条件的记录加删除标记。
【例4.7】用命令打开“学生情况表”,对表中的男性且是团员的同学做逻辑删除。【例4.7】用命令打开“学生情况表”,对表中的男性且是团员的同学做逻辑删除。
4-2-2 恢复记录 • 方法一:用鼠标在浏览窗口中取消删除标记 • 方法二:用菜单方式取消删除标记 • 方法三:用命令方式取消逻辑删除标记
方法二 • 【例4.8】【例4.7】对“学生情况表”中的男团员做了逻辑删除,现恢复其中王军同学的记录,然后再恢复所有被逻辑删除的记录。
方法三 命令格式: RECALL [<范围>] [FOR/WHILE <条件>] 功能:取消当前表中指定范围内满足条件记录的删除标记,恢复被逻辑删除的记录。
【例4.9】打开“学生情况表”,先逻辑删除1979年及其以后出生的同学的记录,再恢复1980年出生的同学的记录。【例4.9】打开“学生情况表”,先逻辑删除1979年及其以后出生的同学的记录,再恢复1980年出生的同学的记录。
4-2-3 物理删除表中的记录 物理删除就是将带有删除标记的记录真正从表中清除或一次性地删除表中的全部记录,记录不可再恢复。因此,进行物理删除时要特别谨慎。
方法一:用菜单方式物理删除记录 • 方法二:用命令方式删除带有逻辑删除标记的记录 • 方法三:用命令方式一次性删除表中的全部记录
方法二 • 命令格式:PACK • 功能:将当前数据表中带有逻辑删除标记的记录从表中的物理位置上真正删除,然后将所剩记录按顺序重新排列编号。
【例4.11】在【例4.10】基础上用命令方式对第9条和第10条记录进行物理删除操作,不再追加被删除的记录。【例4.11】在【例4.10】基础上用命令方式对第9条和第10条记录进行物理删除操作,不再追加被删除的记录。
方法三 • 命令格式:ZAP • 功能:一次性删除数据表文件中的全部记录,只保留表文件的结构。
【例4.12】用ZAP删除“学生情况表”文件中的全部记录。【例4.12】用ZAP删除“学生情况表”文件中的全部记录。
4-3 统计操作 4-3-1 计数命令 77 4-3-2 求和命令 77 4-3-3 求平均值命令 78 4-3-4 分类汇总命令78
4-3-1 计数命令 • 命令格式:COUNT [<范围>] [FOR/WHILE <条件>] [TO <内存变量>] • 功能:统计当前数据表中指定范围内、满足给定条件的记录数。
【例4.13】统计“学生情况表”中女生的人数,并存入内存变量x中,显示x的值。【例4.13】统计“学生情况表”中女生的人数,并存入内存变量x中,显示x的值。
4-3-2 求和命令 命令格式:SUM [<范围>] [<字段表达式表>] [FOR/WHILE <条件>] [TO <内存变量表>/ARRAY<数组名>] 功能:对当前数据表中指定范围内、满足给定条件的记录根据指定的数值型字段表达式按列累加求和。
【例4.14】统计“课程表”表中所有课程的总学时数,并存入内存变量y中。【例4.14】统计“课程表”表中所有课程的总学时数,并存入内存变量y中。
4-3-3 求平均值命令 命令格式:AVERAGE [<范围>] [<字段表达式表>] [FOR/WHILE <条件>][TO <内存变量表>/ARRAY<数组名>] 功能:对当前数据表中指定范围内、满足给定条件的记录,根据指定的数值型字段表达式按列累加求和,再求平均值。
【例4.15】统计“课程表”表中所有课程的平均学时数,并存入内存变量y中。【例4.15】统计“课程表”表中所有课程的平均学时数,并存入内存变量y中。
4-3-4 分类汇总命令 • 分类汇总就是对表中同一类的数据进行统计汇总,也称分组求和。 • 命令格式:TOTAL ON <关键字> TO <新表文件名> [FIELDS <字段名表>] [<范围>] [FOR/WHILE <条件>] • 功能:在当前数据表指定范围内和满足条件的记录中,分别对<关键字>值相同的记录的数值型字段值累加求和,并将结果作为新的数据表文件中的相应字段之值。
【例4.16】对“学生选课表”表中的学分和成绩按“学号”进行分类汇总,即求每个学生各门课程的总学分和总成绩,将结果存入一个名为“学分汇总”的数据表文件。【例4.16】对“学生选课表”表中的学分和成绩按“学号”进行分类汇总,即求每个学生各门课程的总学分和总成绩,将结果存入一个名为“学分汇总”的数据表文件。
4-4 索引的创建和使用 4-4-1 什么是索引 79 4-4-2 索引的类型 80 4-4-3 创建索引 80 4-4-4 索引的使用 83 4-4-5 删除索引 85
4-4-1 什么是索引 • 索引是进行快速显示、快速查询数据的重要手段。 • 索引是对数据表而言的,一个表可建立以不同字段为关键字的索引,不同的索引按其作为关键字的字段对记录进行排序(升序或降序)。从而加快对记录的查询、显示、过滤等操作。因此用户可根据对表中记录的处理要求来建立索引。
索引实际上是一种逻辑排序,也就是说它不改变数据表中数据的物理顺序,而是另外建立一个记录号列表。它类似于书的目录,通过书的目录,读者很容易找到某章节的内容(类似于作为关键字的字段)所在的页码。索引实际上是一种逻辑排序,也就是说它不改变数据表中数据的物理顺序,而是另外建立一个记录号列表。它类似于书的目录,通过书的目录,读者很容易找到某章节的内容(类似于作为关键字的字段)所在的页码。
表一旦按索引表达式建立索引后,就产生一个相应的索引文件,其文件名与表同名,但扩展名不同。当表和相关的索引文件被打开,则对表操作时,记录的顺序将按索引表达式的值的逻辑顺序显示和操作。表一旦按索引表达式建立索引后,就产生一个相应的索引文件,其文件名与表同名,但扩展名不同。当表和相关的索引文件被打开,则对表操作时,记录的顺序将按索引表达式的值的逻辑顺序显示和操作。 • 在VFP中,可以为一个表建立多个索引,每一个索引确定了一种表记录的逻辑顺序。
4-4-2 索引的类型 • 在VFP中,索引有4种类型:主索引、候选索引、普通索引、惟一索引。
主索引(Primary Index):是在指定的索引字段或表达式中不允许出现重复值的索引。主索引主要用于在永久关系中的父表或被引用表里建立参照完整性,它能确保输入字段值的惟一性,并且由该字段决定处理记录的顺序,一个数据库表只能有一个主索引。如果在已经包含了重复数据字段中指定主索引,VFP将返回出错提示信息。如果表中已经含有一个主索引,那么再建立索引则只能选用候选索引或普通索引了。
候选索引 (Candidate Index):候选索引不允许指定的索引表达式在表中有重复值,也就是说它的索引表达式的值是惟一能够标示每个记录处理顺序的值。候选索引功能上与主索引一样,只是一个数据库表或自由表可以有多个候选索引。同主索引一样,如果在包含有重复数据的字段或表达式的表中指定候选索引,VFP将返回一个出错提示信息。
普通索引(Regular Index):普通索引能决定记录处理顺序,但它允许字段中输入重复值而并不要求数据的惟一性。在每个表中可以建立多个普通索引。
惟一索引(Unique Index):惟一索引是为了保持与以前FoxPro版本兼容而设立的。它的“惟一性”是索引项的惟一,而不是字段值的惟一。它以指定字段的首次出现值为基础,选定一组记录,并对记录进行排序。在一个表中可以建立多个惟一索引。
4-4-3 创建索引 1.利用表设计器对表建立索引 在建立新表的同时或建立新表之后,都可以为其建立索引。
【例4.17】在“学生情况表”中,以“学号”字段为索引表达式建立主索引。【例4.17】在“学生情况表”中,以“学号”字段为索引表达式建立主索引。
【例4.18】在【例4.1】基础上已建立了以“姓名”字段为索引表达式的普通索引,现要求以“年级”和“性别”两个字段为索引表达式建立普通索引,并选降序。【例4.18】在【例4.1】基础上已建立了以“姓名”字段为索引表达式的普通索引,现要求以“年级”和“性别”两个字段为索引表达式建立普通索引,并选降序。