48
3 3 第 第第第第第第第第第 第 第第第第第第第第第 3.1 3.1 第第第第第第 第第第第第第 3.2 3.2 第第第第第第 第第第第第第 3.4 3.4 第第第第 第第第第 第第第第 第第第第 3.3 3.3 第第第第第第 第第第第第 第第第第第第 第第第第第 3.5 3.5 第第第第第第第第 第第第第第第第第 第第 第第

第 3 章 数据表的创建及操作

  • Upload
    dakota

  • View
    115

  • Download
    3

Embed Size (px)

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 Presentation

Citation preview

Page 1: 第 3 章 数据表的创建及操作

第第 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 章 数据表的创建及操作

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 章 数据表的创建及操作

3.1.1 创建数据表1. 数据表结构的定义

( 1 )文件名:表文件的主要标识

( 2 )结构:字段名、类型、宽度

( 3 )记录:标文件的基本数据

2. 数据表的创建

( 1 )命令方式: CREATE [< 文件名 >/?]

( 2 )表向导

( 3 )表设计器

Page 4: 第 3 章 数据表的创建及操作

学号 姓名 性别 班级 家庭住址 联系电话

99010301 刘中雨 女 注会 北京东城 63956655

99010302 林天力 男 注会 北京崇文 67117378

99010303 王 平 男 注会 北京丰台 63728912

99010304 章闻天 男 注会 北京朝阳 67391356

99020201 闻书敏 女 金融 北京怀柔 89356321

99020202 于小丽 女 金融 北京宣武 62367835

Page 5: 第 3 章 数据表的创建及操作

3. 字段类型及命名

3.1.1 创建数据表

( 1 )字段名:必须以字母或汉字开头,可以包括字母、汉字、数字和下划线,不要超过 10 个字符。

示例:姓名、 XB 、班级 BJ 、班级 2 、班级 _2

_XM 、 2 班、“成绩”、班级:姓名

( 2 )字段类型:共 13 种。

( 3 )字段宽度:不同类型的字段具有不同的宽度。

( 4 )小数位:数值型数据需要规定小数位数。

( 5 )使用 NULL 值:可以指定字段是否接受 NULL 值,它是一个不存在的值。

Page 6: 第 3 章 数据表的创建及操作

3.1.2 表数据的输入1. 创建数据表时输入数据

2. 使用浏览窗口追加数据

备注型字段与通用型字段内容的输入:双击鼠标左键,进入相应的编辑窗口进行输入。

命令格式: BROWSE

3. 添加记录

命令格式: APPEND [BLANK]

4. 插入记录命令格式: INSERT [BEFORE] [BLANK]

Page 7: 第 3 章 数据表的创建及操作

3.1.3 数据表文件的打开、关闭、显示和定位1. 数据表文件的打开与关闭

命令格式: USE [< 数据表文件名 >]

示例: USE 学生表 .DBF

USE

2. 数据表文件的显示

格式: LIST STRUCTURE

或 DISPLAY STRUCTURE

示例: USE 学生表

LIST STRU

( 1 )结构的显示

Page 8: 第 3 章 数据表的创建及操作

格式: 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 章 数据表的创建及操作

记录指针:用来指示表文件中记录位置的指针。

当前记录:指针当前所指向的记录。

3. 记录指针的定位

( 1 )指针的绝对移动命令格式: GO/GOTO [RECORD] < 记录号 >

GO/GOTO TOP/BOTTOM

示例: USE 学生表 GO 3

DISP

GOTO RECN 5

DISP

GO TOP

DISP

Page 10: 第 3 章 数据表的创建及操作

( 2 )指针的相对移动命令格式: SKIP [+/-] [< 算术表达式 >]

示例: USE 学生表

DISP

SKIP

DISP

SKIP 3

DISP

SKIP -2

DISP

SKIP 6

DISP

Page 11: 第 3 章 数据表的创建及操作

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 章 数据表的创建及操作

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 章 数据表的创建及操作

示例: 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 章 数据表的创建及操作

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 章 数据表的创建及操作

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 章 数据表的创建及操作

2. 恢复数据表中逻辑删除的数据

格式: RECALL [< 范围 >] [FOR < 条件 >] [WHILE < 条件>]

示例: USE 学生表 .DBF

GO 6

DELETE

DISP

GO 6

RECALL

DISP3. 物理删除数据表中的数据

格式: PACK

Page 17: 第 3 章 数据表的创建及操作

4. 删除数据表中的所有记录格式: ZAP

说明: SET SAFETY ON/OFF

3.2.4 文件的显示、复制、删除与更名1. 文件目录的显示命令

格式: DIR/DIRECTORY [< 盘符 >] [< 路径 >] [< 文件名描述>]

或 DISPLAY FILES [< 盘符 >] [< 路径 >] [< 文件名描述>]

或 LIST FILES [< 盘符 >] [< 路径 >] [< 文件名描述 >]

示例: DIR

DIR *.PRG

DIR C:\*.*

Page 18: 第 3 章 数据表的创建及操作

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 章 数据表的创建及操作

( 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 章 数据表的创建及操作

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 章 数据表的创建及操作

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 章 数据表的创建及操作

3.3.1 数据表的排序

( 1 )数据表的排序:把数据表文件中的记录按照某个字段值的大小顺序重新排列。

( 2 )关键字:作为排序依据的字段。

( 3 )升序:按照关键字值从小到大的顺序进行排序。

( 4 )降序:按照关键字值由大到小的顺序进行排序。( 5 )数据大小的比较规则: 如果是数值型、日期型的数据进行比较,则由其本身的大小决定;字符型数据由其 ASCII码值确定,汉字由机内码确定大小。

1. 概念

Page 23: 第 3 章 数据表的创建及操作

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 章 数据表的创建及操作

3.3.2 数据表的索引

为什么使用索引?

1 )排序造成了数据冗余,浪费存储空间

2 )如果对数据表文件进行增、删、改操作时,需要重新进行排序

什么是索引文件?

1 )索引文件是由指针构成的,这些指针逻辑上按照索引关键字进行排序。

2 )索引文件和表文件分别进行存储,并不改变表中记录的物理位置。

Page 25: 第 3 章 数据表的创建及操作

3.3.2 数据表的索引1.索引文件的类型

( 1 )独立索引文件:扩展名为 .IDX,其各个索引文件只能包含一个单一的关键字或者组合关键字。独立索引文件可分为:压缩索引文件和非压缩索引文件。( 2 )复合索引文件:扩展名为 .CDX,在一个复合索引文件中可以包含多个索引选项,每个索引选项叫做索引标识( Index Tag)。复合索引文件有两种类型:结构复合索引文件( Structural Compound Index)和独立复合索引文件( Independent Compound Index)。

Page 26: 第 3 章 数据表的创建及操作

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 章 数据表的创建及操作

格式 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 章 数据表的创建及操作

3.索引文件的打开与关闭

主控索引文件:在打开的索引文件中,排在最前面的索引文件

说明: 1 )索引文件不能脱离所依赖的数据表文件而单独使用

2 )结构化复合索引文件将随着数据表文件的打开而自动打开,其它索引文件则需要使用索引文件的打开命令进行打开

3 )数据表文件只按主控索引文件的顺序显示各记录

4 )若主控索引文件为复合索引文件,则记录显示与存取的次序仍按各记录实际存放的顺序,只有用 ORDER 指定主标记后,才按主标记的次序显示与存取记录

5 )对数据表文件进行增、删、改操作时,系统会自动修改所有打开的索引文件。

( 1 )有关概念

Page 29: 第 3 章 数据表的创建及操作

( 2 )打开数据表文件的同时打开索引文件格式: USE < 表文件名 >/? [INDEX <索引文件名表 >/? [ORDER [< 算术表达式 >/<IDX 索引文件名 >/[TAG] < 标记名> [OF < 复合索引文件名 >] [ASCENDING/DESENDING]]]]

说明: < 算术表达式 > 的值表示该索引文件在 <索引文件名表 > 中的顺序号,其规则为:

1 )先对 .IDX进行编号,然后是结构化 .CDX中的索引标记,最后是独立 .CDX文件中的索引标记

2 )如果 < 算术表达式 > 的值为零,则记录将按记录号的顺序访问和显示。

示例: USE 学生表 INDEX 学生表 _班级USE 学生表 INDEX 学生表 _班级 , 学生表 _班级 _姓名 ,学生表 _班级性别 ORDER TAG 班级 _性别 OF 学生表 _班级性别

Page 30: 第 3 章 数据表的创建及操作

( 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 章 数据表的创建及操作

( 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 章 数据表的创建及操作

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 章 数据表的创建及操作

( 2 )表文件结束测试函数格式: EOF([<工作区号或别名 >])

示例: USE 学生表

GO BOTTOM

?EOF()

SKIP

?EOF( 3 )记录号测试函数

格式: RECNO([<工作区号或别名 >])

示例: USE 学生表

?RECNO()

GO 4 ?RECNO()

Page 34: 第 3 章 数据表的创建及操作

( 4 )测试查询结果函数格式: FOUND([<工作区号或别名 >])

1. FIND 命令格式: FIND < 字符串或数值 >

示例: USE 学生表 INDEX ON 姓名 TO 学生表 _姓名 FIND 于小丽 ?RECNO() DISP XM=“王 平” FIND &XM ?FOUND() DISP

Page 35: 第 3 章 数据表的创建及操作

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 章 数据表的创建及操作

3. LOCATE 和 CONTINUE 命令

格式: LOCATE [< 范围 >] FOR < 条件 > [WHILE< 条件 >]

示例: USE 学生表 LOCATE FOR 班级 =“ 注会” DISP CONTINUE DISP

Page 37: 第 3 章 数据表的创建及操作

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 章 数据表的创建及操作

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 章 数据表的创建及操作

示例: 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 章 数据表的创建及操作

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 章 数据表的创建及操作

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 章 数据表的创建及操作

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 章 数据表的创建及操作

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 章 数据表的创建及操作

格式: 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 章 数据表的创建及操作

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 章 数据表的创建及操作

示例 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 章 数据表的创建及操作

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 章 数据表的创建及操作

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. 成绩