第 3 章 数据表的创建及操作
DESCRIPTION
第 3 章 数据表的创建及操作. 3.1 数据表的创建. 3.2 数据表的维护. 3.3 数据表的排序、索引与查询. 3.4 数据表的统计与汇总. 3.5 多个数据表的使用. 退出. 3.1 数据表的创建. 3.1.1 创建数据表. 3.1.2 表数据的输入. 3.1.3 数据表文件的打开、关闭、显示和定位. 退出. 3.1.1 创建数据表. 1. 数据表结构的定义. ( 1 )文件名:表文件的主要标识 ( 2 )结构:字段名、类型、宽度 ( 3 )记录:标文件的基本数据. 2. 数据表的创建. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/1.jpg)
第第 33 章 数据表的创建及操作章 数据表的创建及操作3.1 3.1 数据表的创建数据表的创建3.1 3.1 数据表的创建数据表的创建
3.2 3.2 数据表的维护数据表的维护3.2 3.2 数据表的维护数据表的维护
3.4 3.4 数据表的统计与汇总数据表的统计与汇总3.4 3.4 数据表的统计与汇总数据表的统计与汇总
3.3 3.3 数据表的排序、索引与查询数据表的排序、索引与查询3.3 3.3 数据表的排序、索引与查询数据表的排序、索引与查询
3.5 3.5 多个数据表的使用多个数据表的使用3.5 3.5 多个数据表的使用多个数据表的使用
退出退出退出退出
![Page 2: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/2.jpg)
3.1 数据表的创建3.1 数据表的创建
3.1.3 3.1.3 数据表文件的打开、关闭、显示和定位数据表文件的打开、关闭、显示和定位3.1.3 3.1.3 数据表文件的打开、关闭、显示和定位数据表文件的打开、关闭、显示和定位
退出退出退出退出
3.1.2 3.1.2 表数据的输入表数据的输入3.1.2 3.1.2 表数据的输入表数据的输入
3.1.1 3.1.1 创建数据表创建数据表3.1.1 3.1.1 创建数据表创建数据表
![Page 3: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/3.jpg)
3.1.1 创建数据表1. 数据表结构的定义
( 1 )文件名:表文件的主要标识
( 2 )结构:字段名、类型、宽度
( 3 )记录:标文件的基本数据
2. 数据表的创建
( 1 )命令方式: CREATE [< 文件名 >/?]
( 2 )表向导
( 3 )表设计器
![Page 4: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/4.jpg)
学号 姓名 性别 班级 家庭住址 联系电话
99010301 刘中雨 女 注会 北京东城 63956655
99010302 林天力 男 注会 北京崇文 67117378
99010303 王 平 男 注会 北京丰台 63728912
99010304 章闻天 男 注会 北京朝阳 67391356
99020201 闻书敏 女 金融 北京怀柔 89356321
99020202 于小丽 女 金融 北京宣武 62367835
![Page 5: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/5.jpg)
3. 字段类型及命名
3.1.1 创建数据表
( 1 )字段名:必须以字母或汉字开头,可以包括字母、汉字、数字和下划线,不要超过 10 个字符。
示例:姓名、 XB 、班级 BJ 、班级 2 、班级 _2
_XM 、 2 班、“成绩”、班级:姓名
( 2 )字段类型:共 13 种。
( 3 )字段宽度:不同类型的字段具有不同的宽度。
( 4 )小数位:数值型数据需要规定小数位数。
( 5 )使用 NULL 值:可以指定字段是否接受 NULL 值,它是一个不存在的值。
![Page 6: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/6.jpg)
3.1.2 表数据的输入1. 创建数据表时输入数据
2. 使用浏览窗口追加数据
备注型字段与通用型字段内容的输入:双击鼠标左键,进入相应的编辑窗口进行输入。
命令格式: BROWSE
3. 添加记录
命令格式: APPEND [BLANK]
4. 插入记录命令格式: INSERT [BEFORE] [BLANK]
![Page 7: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/7.jpg)
3.1.3 数据表文件的打开、关闭、显示和定位1. 数据表文件的打开与关闭
命令格式: USE [< 数据表文件名 >]
示例: USE 学生表 .DBF
USE
2. 数据表文件的显示
格式: LIST STRUCTURE
或 DISPLAY STRUCTURE
示例: USE 学生表
LIST STRU
( 1 )结构的显示
![Page 8: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/8.jpg)
格式: LIST/DISPLAY [OFF] [< 范围 >] [[FIELDS] < 表达式表 >] [WHILE < 条件 >] [FOR < 条件 >]
说明: < 范围 > 的可选值包括:
RECORD n :第 n 条记录。
NEXT n :从当前记录开始以下的 N 条记录。
REST :从当前记录开始到文件末尾的所有记录。
ALL :全部记录。
示例: USE 学生表
LIST OFF FOR 班级 =“ 注会”
LIST FIELDS 学号 , 姓名 , 班级
DISP ALL
( 2 )记录的显示
![Page 9: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/9.jpg)
记录指针:用来指示表文件中记录位置的指针。
当前记录:指针当前所指向的记录。
3. 记录指针的定位
( 1 )指针的绝对移动命令格式: GO/GOTO [RECORD] < 记录号 >
GO/GOTO TOP/BOTTOM
示例: USE 学生表 GO 3
DISP
GOTO RECN 5
DISP
GO TOP
DISP
![Page 10: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/10.jpg)
( 2 )指针的相对移动命令格式: SKIP [+/-] [< 算术表达式 >]
示例: USE 学生表
DISP
SKIP
DISP
SKIP 3
DISP
SKIP -2
DISP
SKIP 6
DISP
![Page 11: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/11.jpg)
3.2 数据表的维护3.2 数据表的维护3.2.1 3.2.1 数据表结构的修改数据表结构的修改3.2.1 3.2.1 数据表结构的修改数据表结构的修改
3.2.2 3.2.2 显示和编辑数据表中的数据显示和编辑数据表中的数据3.2.2 3.2.2 显示和编辑数据表中的数据显示和编辑数据表中的数据
3.2.3 3.2.3 删除数据表中的记录删除数据表中的记录3.2.3 3.2.3 删除数据表中的记录删除数据表中的记录
3.2.4 3.2.4 文件的显示、复制、删除与更名文件的显示、复制、删除与更名3.2.4 3.2.4 文件的显示、复制、删除与更名文件的显示、复制、删除与更名
3.2.5 3.2.5 数组与数据表之间的数据交换数组与数据表之间的数据交换3.2.5 3.2.5 数组与数据表之间的数据交换数组与数据表之间的数据交换
退出退出退出退出
![Page 12: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/12.jpg)
3.2.1 数据表结构的修改格式: MODIFY STRUCTURE
示例: USE 学生表
MODI STRU
3.2.2 显示和编辑数据表中的数据
格式: BROWSE [FIELDS < 字段名表 >] [LOCK < 数值表达式 >] [FREEZE < 字段名 >] [NOAPPEND] [NOMODIFY] [WIDTH < 数值表达式 >] [FOR < 逻辑表达式 >] [LEDIT] [REDIT]
1. 浏览修改命令 BROWSE
![Page 13: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/13.jpg)
示例: USE 学生表
BROWSE FIELDS 学号 , 姓名 , 性别 , 班级
BROWSE FREEZE 班级
BROWSE PARTITION 12 LEDIT
BROWSE WIDTH 4
BROWSE NOAPPEND
BROWSE NOMENU
BROWSE LOCK 2
BROWSE FOR 班级 =“ 注会”
BROWSE NOMODIFY
1. 浏览修改命令 BROWSE
![Page 14: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/14.jpg)
2. CHANGE/EDIT 命令格式: CHANGE/EDIT [< 范围 >] [FIELDS < 字段名表 >]
[WHILE < 逻辑表达式 >] [FOR < 逻辑表达式 >]
示例: USE 学生表 .DBF
CHANGE FIELDS 姓名 , 班级 , 家庭住址 , 电话3. REPLACE 命令格式: REPLACE [< 范围 >] < 字段 1> WITH < 表达式 1> [A
DDITIVE] [ , < 字段 2> WITH < 表达式 2> [ADDITIVE] …]
[FOR < 条件 >] [WHILE < 条件 >]
示例: USE 学生表 .DBF
GO 6
DISP
REPLACE 姓名 WITH " 李 青 ", 性别 WITH " 男 "
DISP
![Page 15: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/15.jpg)
4. 修改通用型字段格式: MODIFY GENERAL < 通用型字段名表 > [NOMODI
FY] [NOWAIT] [IN SCREEN]
3.2.3 删除数据表中的记录1. 逻辑删除数据表中的数据格式: DELETE [< 范围 >] [WHILE< 条件> ] [FOR< 条件
> ]
说明: SET DELETED ON/OFF
示例: USE 学生表 .DBF
GO 6
DELETE
LIST
SET DELETE ON
LIST
![Page 16: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/16.jpg)
2. 恢复数据表中逻辑删除的数据
格式: RECALL [< 范围 >] [FOR < 条件 >] [WHILE < 条件>]
示例: USE 学生表 .DBF
GO 6
DELETE
DISP
GO 6
RECALL
DISP3. 物理删除数据表中的数据
格式: PACK
![Page 17: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/17.jpg)
4. 删除数据表中的所有记录格式: ZAP
说明: SET SAFETY ON/OFF
3.2.4 文件的显示、复制、删除与更名1. 文件目录的显示命令
格式: DIR/DIRECTORY [< 盘符 >] [< 路径 >] [< 文件名描述>]
或 DISPLAY FILES [< 盘符 >] [< 路径 >] [< 文件名描述>]
或 LIST FILES [< 盘符 >] [< 路径 >] [< 文件名描述 >]
示例: DIR
DIR *.PRG
DIR C:\*.*
![Page 18: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/18.jpg)
2. 显示文件内容的命令格式: TYPE < 文件名 >
3. 文件的复制
( 1 )任意类型文件的复制格式: COPY FILE < 源文件名 > TO < 目标文件名 >
示例: COPY FILE 学生表 .DBF TO 学生表 1.DBF
COPY FILE 学生表 .FPT TO 学生表 1.FPT
( 2 )数据表文件的复制格式: COPY TO < 新表文件名 > [< 范围 >] [FIELDS < 字段名表 >] [FOR < 逻辑表达式 >] [WHILE < 逻辑表达式 >]
示例: USE 学生表 .DBF
COPY TO 学生表 2 FOR 班级 =“ 金融二”
![Page 19: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/19.jpg)
( 3 )数据表结构的复制格式: COPY STRUCTURE TO < 文件名 > [FIELDS < 字段名表>]
示例: USE 学生表 .DBF
COPY STRUCTURE TO 学生表 3 FIELDS 班级,姓名,家庭住址,电话 USE 学生表 3 LIST STRUCTURE4. 文件的更名格式: RENAME < 源文件名 > TO < 新文件名 >
示例: RENAME E:\VFP\ 例题 \ 学生表 .DBF TO 学生名单 .DBF
RENAME E:\VFP\ 例题 \ 学生表 .DBF TO 学生名单 .FPT
![Page 20: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/20.jpg)
5. 文件的删除
格式: ERASE < 文件名 >/ ? 或 DELETE FILE [< 文件名 >/ ? ]
示例: ERASE 学生表 3.DBF DELETE FILE 学生名单 .DBF
6. 从另外的数据表中向当前表文件添加记录
格式: APPEND FROM < 文件名 > [FIELDS < 字段名表 >] [WHILE < 条件 >] [FOR < 条件 >]
示例: USE 学生表
COPY STRU TO 学生表 3
USE 学生表 3
APPEND FROM 学生表
![Page 21: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/21.jpg)
3.3 数据表的排序、索引与查询
3.3 数据表的排序、索引与查询
3.3.1 3.3.1 数据表的排序数据表的排序3.3.1 3.3.1 数据表的排序数据表的排序
3.3.2 3.3.2 数据表的索引数据表的索引3.3.2 3.3.2 数据表的索引数据表的索引
3.3.3 3.3.3 数据表的查询数据表的查询3.3.3 3.3.3 数据表的查询数据表的查询
退出退出退出退出
![Page 22: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/22.jpg)
3.3.1 数据表的排序
( 1 )数据表的排序:把数据表文件中的记录按照某个字段值的大小顺序重新排列。
( 2 )关键字:作为排序依据的字段。
( 3 )升序:按照关键字值从小到大的顺序进行排序。
( 4 )降序:按照关键字值由大到小的顺序进行排序。( 5 )数据大小的比较规则: 如果是数值型、日期型的数据进行比较,则由其本身的大小决定;字符型数据由其 ASCII码值确定,汉字由机内码确定大小。
1. 概念
![Page 23: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/23.jpg)
2. 命令格式
格式: SORT TO < 文件名 > ON < 字段名 1> [/A][/D][/C][,<字 段 名 2> [/A][/D][/C]…][ASCENDING/DESCENDING][< 范围 >] [FOR < 条件 >] [WHILE < 条件 >] [FIELDS < 字段名表 >]
示例: USE 学生表 SORT TO STUDENT1 ON 班级 ,姓名 /D USE STUDENT1 LIST
USE 学生表 SORT TO 学生表 _ 金融 ON 学号 FOR 班级 =“ 金融二” USE 学生表 _金融 LIST
![Page 24: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/24.jpg)
3.3.2 数据表的索引
为什么使用索引?
1 )排序造成了数据冗余,浪费存储空间
2 )如果对数据表文件进行增、删、改操作时,需要重新进行排序
什么是索引文件?
1 )索引文件是由指针构成的,这些指针逻辑上按照索引关键字进行排序。
2 )索引文件和表文件分别进行存储,并不改变表中记录的物理位置。
![Page 25: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/25.jpg)
3.3.2 数据表的索引1.索引文件的类型
( 1 )独立索引文件:扩展名为 .IDX,其各个索引文件只能包含一个单一的关键字或者组合关键字。独立索引文件可分为:压缩索引文件和非压缩索引文件。( 2 )复合索引文件:扩展名为 .CDX,在一个复合索引文件中可以包含多个索引选项,每个索引选项叫做索引标识( Index Tag)。复合索引文件有两种类型:结构复合索引文件( Structural Compound Index)和独立复合索引文件( Independent Compound Index)。
![Page 26: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/26.jpg)
2.索引文件的建立格式 1 (建立 .IDX 索引文件):INDEX ON < 关键字表达式 > TO <独立索引文件名 > [FOR <条件 >][UNIQUE] [COMPACT] [ADDITIVE]示例: USE 学生表 INDEX ON 班级 TO 学生表 _班级 LIST INDEX ON 班级 +姓名 TO 学生表 _班级 _姓名 LIST INDEX ON 姓名 TO 学生表 _姓名 FOR 班级 =“ 注会” LIST
![Page 27: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/27.jpg)
格式 2 (建立 .CDX 索引文件)INDEX ON < 关键字表达式 > TAG < 标记名 > [OF < 复合索引文件名 >][UNIQUE/CANDIDATE] [ASCENDING/DESCENDING] [ADDITIVE] [FOR < 条件 >]
示例: USE 学生表 INDEX ON 姓名 TAG 姓名 LIST USE 学生表 INDEX ON 班级 +性别 TAG 班级 _性别 OF 学生表 _班级性别 LIST INDEX ON 班级 TAG 班级 OF 学生表 _班级性别 LIST
2.索引文件的建立
![Page 28: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/28.jpg)
3.索引文件的打开与关闭
主控索引文件:在打开的索引文件中,排在最前面的索引文件
说明: 1 )索引文件不能脱离所依赖的数据表文件而单独使用
2 )结构化复合索引文件将随着数据表文件的打开而自动打开,其它索引文件则需要使用索引文件的打开命令进行打开
3 )数据表文件只按主控索引文件的顺序显示各记录
4 )若主控索引文件为复合索引文件,则记录显示与存取的次序仍按各记录实际存放的顺序,只有用 ORDER 指定主标记后,才按主标记的次序显示与存取记录
5 )对数据表文件进行增、删、改操作时,系统会自动修改所有打开的索引文件。
( 1 )有关概念
![Page 29: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/29.jpg)
( 2 )打开数据表文件的同时打开索引文件格式: USE < 表文件名 >/? [INDEX <索引文件名表 >/? [ORDER [< 算术表达式 >/<IDX 索引文件名 >/[TAG] < 标记名> [OF < 复合索引文件名 >] [ASCENDING/DESENDING]]]]
说明: < 算术表达式 > 的值表示该索引文件在 <索引文件名表 > 中的顺序号,其规则为:
1 )先对 .IDX进行编号,然后是结构化 .CDX中的索引标记,最后是独立 .CDX文件中的索引标记
2 )如果 < 算术表达式 > 的值为零,则记录将按记录号的顺序访问和显示。
示例: USE 学生表 INDEX 学生表 _班级USE 学生表 INDEX 学生表 _班级 , 学生表 _班级 _姓名 ,学生表 _班级性别 ORDER TAG 班级 _性别 OF 学生表 _班级性别
![Page 30: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/30.jpg)
( 3)在数据表文件己经打开的情况下打开索引文件格式: SET INDEX TO[<索引文件名表 >/?] [ORDER< 算术表达式 >/<IDX 索引文件名 >/[TAG]< 标记名 > [OF < 复合索引文件 >] [ASCENDING/DESCENDING]] [ADDITIVE]
示例:
USE 学生表SET INDEX TO 学生表 _班级 , 学生表 _班级 _姓名SET INDEX TO 学生表 _班级性别 ORDER TAG 班级 _性别 OF 学生表 _班级性别 ADDITIVE
( 4)在打开的索引文件中设置主控索引格式: SET ORDER TO [< 算术表达式 >/<IDX 索引文件名 >/[TAG] <索引标记名 > [OF < 复合索引文件名 > [ ASCENDING / DESCENDING]]
![Page 31: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/31.jpg)
( 4)在打开的索引文件中设置主控索引示例: USE 学生表SET INDEX TO 学生表 _班级 , 学生表 _班级 _姓名 , 学生表 _班级性别SET ORDER TO 2 OF 学生表 _班级性别LISTSET ORDER TO 0LISTSET ORDER TO TAG 班级 _性别 OF 学生表 _班级性别LIST
( 5 )关闭索引文件格式: CLOSE ALL或 CLOSE INDEXES
![Page 32: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/32.jpg)
4. 重新索引格式: REINDEX
5. 删除复合索引文件中的索引标记格式: 1 ) DELETE TAG < 标记名 1> [OF < 复合索引文件名1>] [,< 标记名 2> [OF < 复合索引文件名 2>]] … 2 ) DELETE ALL [OF < 复合索引文件名 >]
3.3.3 数据表的查询与数据表有关的几个函数
( 1 )表文件开始测试函数格式: BOF([<工作区号或别名 >])
示例: USE 学生表 ?BOF()
SKIP -1 ?BOF()
![Page 33: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/33.jpg)
( 2 )表文件结束测试函数格式: EOF([<工作区号或别名 >])
示例: USE 学生表
GO BOTTOM
?EOF()
SKIP
?EOF( 3 )记录号测试函数
格式: RECNO([<工作区号或别名 >])
示例: USE 学生表
?RECNO()
GO 4 ?RECNO()
![Page 34: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/34.jpg)
( 4 )测试查询结果函数格式: FOUND([<工作区号或别名 >])
1. FIND 命令格式: FIND < 字符串或数值 >
示例: USE 学生表 INDEX ON 姓名 TO 学生表 _姓名 FIND 于小丽 ?RECNO() DISP XM=“王 平” FIND &XM ?FOUND() DISP
![Page 35: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/35.jpg)
2. SEEK 命令格式: SEEK < 表达式 > [ORDER <索引号 >/IDX <索引文
件名 >/[TAG] < 标识名 > [OF <CDX文件名 >] [ASCENDING/DESCENDING]]
示例: USE 学生表 INDEX 学生表 _班级 _学号 seek “ 金融二 ” +“99020202” DISP SET INDEX TO 学生表 _姓名 SEEK “章闻天” DISP XM=“王 平” SEEK XM DISP
![Page 36: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/36.jpg)
3. LOCATE 和 CONTINUE 命令
格式: LOCATE [< 范围 >] FOR < 条件 > [WHILE< 条件 >]
示例: USE 学生表 LOCATE FOR 班级 =“ 注会” DISP CONTINUE DISP
![Page 37: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/37.jpg)
3.4 数据表的统计与汇总3.4 数据表的统计与汇总
3.4.1 3.4.1 数据表的统计数据表的统计3.4.1 3.4.1 数据表的统计数据表的统计
3.4.2 3.4.2 数据表的汇总数据表的汇总3.4.2 3.4.2 数据表的汇总数据表的汇总
退出退出退出退出
![Page 38: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/38.jpg)
3.4.1 数据表的统计1. 计数命令格式: COUNT [< 范围 >] [FOR < 条件 >] [WHILE < 条件>] [TO < 内存变量名 >]
示例: USE 学生表 COUNT FOR 班级 =“ 注会” TO AA
?AA
COUNT TO BB
?BB
2. 求和命令格式: SUM [< 字段表达式表 >] [< 范围 >] [TO < 内存变量名表 >/TO ARRAY < 数组名 >] [FOR < 条件 >] [WHILE < 条件>]
![Page 39: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/39.jpg)
示例: USE 分数 LIST
SUM 成绩 FOR 学号 =“99010301” TO CJ
? CJ
2. 求和命令
3. 求平均值命令
格式: AVERAGE [< 表达式表 >] [< 范围 >] [TO < 内存变量名表 >/TO ARRAY < 数组名 >] [FOR < 条件 >] [WHILE < 条件 >]
示例: USE 分数 LIST
AVERAGE 成绩 FOR 学号 =“99010301” TO CJPJ
?CJPJ
![Page 40: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/40.jpg)
3.4.2 数据表的汇总格式: TOTAL TO < 新表文件名 > ON < 关键字 > [FIELDS < 字段名表 >] [< 范围 >] [FOR < 条件 >] [WHILE < 条件 >]
说明:当前表必须按 < 关键字 > 进行过排序或索引
示例: USE 分数 LIST
INDEX ON 学号 TO 分数表 _ 学号 TOTAL TO 学号成绩 ON 学号 USE 学号成绩 COPY TO 成绩汇总 FIELDS 学号 , 成绩 USE 成绩汇总 LIST
![Page 41: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/41.jpg)
3.5 多个数据表的使用3.5 多个数据表的使用
3.5.1 3.5.1 选择工作区的命令选择工作区的命令3.5.1 3.5.1 选择工作区的命令选择工作区的命令
3.5.2 3.5.2 数据表之间的关联数据表之间的关联3.5.2 3.5.2 数据表之间的关联数据表之间的关联
3.5.3 3.5.3 数据表之间的连接数据表之间的连接3.5.3 3.5.3 数据表之间的连接数据表之间的连接
3.5.4 3.5.4 数据表文件的更新数据表文件的更新3.5.4 3.5.4 数据表文件的更新数据表文件的更新
退出退出退出退出
![Page 42: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/42.jpg)
3.5.1 选择工作区的命令
格式: SELECT <工作区号 /别名 >
说明: 1 )定义别名的命令格式: USE < 数据表文件名 > ALIAS < 数据表文件的别名 >
示例: USE 学生表 ALIAS XSB
2 )工作区的区号可以用正整数表示,其中 1 到 10号工作区也可以用英文字母 A 到 J来表示
示例: SELECT A SELECT 1 SELECT XSB
3 )当前工作区:最后被选择的工作区。使用其它工作区中字段的命令格式: < 别名 >.< 字段名 > 或 < 别名 >—>< 字段名 >示例: DISP 学号,姓名,班级, B.课程号, B. 成绩
4 ) SELECT 0
![Page 43: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/43.jpg)
3.5.2 数据表之间的关联格式: SET RELATION TO [< 关键字表达式 1>/< 数值表达式1> INTO <工作区号 >/< 别名 >[,< 关键字表达式 2>/< 数值表达式 2> INTO <工作区号 >/< 别名 >…][ADDITIVE]]
说明: 1 ) < 关键字表达式 > 的值必须是相关联的两个表文件共同具有的字段, < 别名 > 表文件必须已经按关键字表达式建立了索引文件并处于打开状态。
2 )当两个表文件建立关联后,当前表文件的记录指针移到某一记录时,被关联的表文件的记录指针也自动指向关键字值相同的记录上。如果被关联的表文件具有多个关键字值相同的记录,则指针只指向关键字值相同的第一条记录。如果被关联的表文件中没有找到匹配的记录,指针指向文件尾,即函数 EOF()的值为 .T. 。
3 ) ADDITIVE 与 SET RELATION TO
![Page 44: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/44.jpg)
格式: SET RELATION TO [< 关键字表达式 1>/< 数值表达式1> INTO <工作区号 >/< 别名 >[,< 关键字表达式 2>/< 数值表达式 2> INTO <工作区号 >/< 别名 >…][ADDITIVE]]
说明: 3 )如果命令中使用了 < 数值表达式 > ,则两个表文件按照记录号进行关联,这时 < 别名 > 表文件可以不用建立相关的索引文件。
4 )当 < 别名 > 表文件中有多个关键字值相同的记录时, < 别名 > 表文件的指针只能指向关键字值相同的第一条记录上,如果需要找到关键字值相同的多个记录,可以使用下面的命令:SET SKIP TO [< 别名 1> [,< 别名 2>]…]5 )如果需要切断当前数据表与特定数据表之间的关联,可以使用命令: SET RELATION OFF INTO <工作区号 >/< 别名 >
3.5.2 数据表之间的关联
![Page 45: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/45.jpg)
3.5.2 数据表之间的关联
示例 1 :将数据表“分数”与“学生表”建立关联后,显示学生的学号、姓名、性别、班级、成绩等字段的内容。
SELECT 2 USE 学生表 INDEX ON 学号 TO 学生表 _学号 SELECT 1 USE 分数 SET RELATION TO 学号 INTO B LIST 学号 ,B. 姓名 ,B. 性别 ,B. 班级 , 课程号 ,成绩
![Page 46: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/46.jpg)
示例 2 :将“学生表”与“分数”仍按“学号”建立关联。 SELE B USE 分数 INDEX ON 学号 TO 分数 _学号 SELE A USE 学生表 SET RELATION TO 学号 INTO B LIST 学号 ,姓名 ,班级 ,B.课程号 ,B. 成绩 SET SKIP TO B LIST 学号 ,姓名 ,班级 ,B.课程号 ,B. 成绩
3.5.2 数据表之间的关联
![Page 47: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/47.jpg)
3.5.3 数据表之间的连接格式: JOIN WITH <工作区号 >/< 别名 > TO < 新表文件名 > [FIELDS < 字段名表 >] FOR <连接条件 >
示例:把已存在的数据表“分数”和“学生表”通过“学号”联接起来,生成新的数据表文件“学生分数”,新表文件中包含如下字段:学号、姓名、班级、课程号、成绩。 SELE A USE 学生表 SELE B USE 分数 JOIN WITH A FOR 学号 =A. 学号 TO 学生成绩 FIELDS 学号 ,A. 姓名 ,A. 班级 , 课程号 ,成绩 USE 学生成绩 LIST
![Page 48: 第 3 章 数据表的创建及操作](https://reader033.vdocuments.site/reader033/viewer/2022061411/568143d0550346895db05da9/html5/thumbnails/48.jpg)
3.5.4 数据表文件的更新格式: UPDATE ON < 关键字段名 > FROM <工作区号 >/< 别名> REPLACE < 字段名 1> WITH < 表达式 1> [,< 字段名 2> WITH < 表达式 2> …] [RANDOM]
示例:假如在数据表“学生表”中增加了“总成绩”的字段,然后用数据表“分数”来计算学生的总成绩。SELECT AUSE 学生表INDEX ON 学号 TO 学生表 _学号SELE BUSE 分数INDEX ON 学号 TO 分数 _学号SELE AUPDATE ON 学号 FROM B REPLACE 总成绩 WITH 总成绩 +B. 成绩