查询与统计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

功能:对当前表中满足条件的记录,建立索引文 件和增加索引标识
索引的使用
打开和关闭索引文件
在打开表后打开索引文件 SET INDEX TO [<索引文件名表>/?] 功能:打开指定的索引文件或关闭索引文件 在打开表时打开索引文件
USE <表文件名> INDEX <索引文件名表> 功能:打开指定的表,并且打开由<索引文件 名表>指定的所有索引文件。
3、顺序查询和快速查询比较
LOCATE FIND SEEK 可以是字符型、数值型、日 可以是字符型、数值型、日期字 符 串 常 查询内容 期型、逻辑型表达式,还可 型表达式或逻辑型字段 量或常数 以查找备注型字段 对 表 的 要 无论是否建立了索引文件均必须建立并打开索引文件,只 同左 求 可方便地查询 能在主控索引文件中查询 可使用<范围>子句限定查询 范围, 可与 CONTINUE 命令在整个表中查询,只能找出满 命令特点 同左 配合使用,找出表中全部符足条件的第一条记录 合条件的记录 查询速度 慢 快 快
命令格式如下: SORT ON <关键字>[/D] TO <排序文件名>说
说明: (1)逻辑型、备注型和通用型字段不能作排序关键字。
(2)加参数[/D]时为降序排序,缺省为升序(由小到大)。 (3)<排序文件名>不得与原表名相同,可不加扩搌名, 系统自动加上扩展名.DBF。 (4)可以取多个关键字,以“,”隔开。
(2)候选索引:字段不允许有重复值,作为主索引的候选字段。 在数据库表和自由表中均可为每个表建立多个候选索引. (3)普遍索引:字段允许重复值,一个表有多个普通索引。
(4)唯一索引:允许有重复值,只存储第一次出现的重复值。
命令格式:
INDEX ON <索引关键表达式> TO <索引文件名 > / TAG <标记名> [OF <复合索引文件名>] FOR <条件>[ADDITIVE]
2、CONTINUE命令 格式:CONTINUE 功能:它使LOCATE命令从当前记录开始继续查找下一条满足 条件的记录。


索引查询
用LOCATE命令查询的优点是不论表中的记录是否有序都能进 行查找,而其主要的缺点是查找速度慢。当表中的记录较多, 并且要查询的记录又在表的底部时,问题尤为突出。为了解决 这一问题,VFP提供了二条快速查询命令:FIND和SEEK。 1、FIND命令: 格式:FIND <字符型常量>/<数值型常量> 功能:它在已经建立索引并且表文件和索引文件均已打开的表 中查找索引关键值与指定的字符串或数值型常量相匹配的第一 条记录。如果找到,则把记录指针指向该记录,并且将 FOUND()函数的值置为“真”;如果没有找到与其相符的记录, 则将记录指针指向表的末尾,且将FOUND()函数的值置为 “假”,将EOF()函数的值置为“真”。


3.3 多表操作
概述
迄今所讲述的对表的操作都是在一个工 作区进行的,每个工作区最多只能打开一个 表文件,用USE命令打开一个新表,同时也 就关闭了前面已打开的表。在实际应用中, 常常需要同时打开多个表文件,以便对多个 表文件的数据进行操作。为了解决这一问题, Visual FoxPro引入了工作区和关联的概念。
确定主控 索引
格式:set order to [ <数值表达式>| <单索引文件 名>| [TAG]<索引标识> ] <数值表达式>表示已打开索引的序号。 <单索引文件名> 指定该单索引文件为主控索 引 <索引标识>指定索引表示为主控索引 set order to 或set order to 命令取消主控索引 文件及主控索引,表达式按物理顺序输出。
参数描述: [<范围>]:指定要定位的记录范围。只有在范围内的记录才被 定位。LOCATE命令的默认范围是ALL。 [FOR <条件>]:LOCATE命令按顺序搜索当前表以找到满足逻 辑表达式的第一个记录。 [WHILE <条件>]:指定一个条件,只要逻辑表达式计算值为 真,就继续查找记录。 说明: (1)被搜索的表不必有索引。 (2)若LOCATE发现一个满足条件的记录,就将记录指针定位 在该记录上。可以使用RECNO()返回该记录的记录号,同时 FOUND()函数返回“真”,EOF()函数返回“假”。如果没 有找到,则将记录指针指向范围的最后一个记录,同时将 FOUND()函数值置为“假”,屏幕上显示“已到定位范围末 尾”。
第3章 查询与统计
Байду номын сангаас
重点与难点
1 排序与索引 3 查询命令 5统计命令 7数据库与视图 2 索引的使用 4 多表操作 6 查询设计器 8 数据字典
3.1 排序与索引
一、排序(物理排序)
通常记录是按输入的顺序(物理顺序)存放在数据表 中的,排序是指表的所有记录按指定字段的值的大小顺序 进行重新排列到新的数据表文件中。作为排序标准的字段, 称为关键字段,又称关键字。
说明:(1)用SELECT命令选定的工作区称为当前工作区,
VFP默认1号工作区为当前工作区。 (2)函数SELECT()能够返回当前工作区的区号。
(3)命令“SELECT 0”表示选定当前尚未使用的最
小号工作区。 (4)引用非当前工作区表的字段必须冠以别名, 格式为:别名.字段。
例:在1号和2号工作区内分别打开SB.DBF和SP.DBF表文件。
一对一关联
学号
姓名
班级 03物管 02电商 04统计
年龄 20 21 18
学号 035821 025960 045524
CET4成绩 66 80 58
035821 李三 025960 张四 045524 王五
学生基本情况表
父表
学生成绩表 子表
多对一和一对多关联
多对一关联 父表
编号 名称 … 部门 … 21 21 22 016-1 车床 016-2 车床
一、工作区
1、工作区是一个编号区域,它标示一个 已打开的表。 表打开后才能进行操作,实际上打开表 就是把它从磁盘调入内存的某一个工作 区。 VFP6提供了多达32767个工作区, 每个工作区都有一个工作区号,分别用 1~32767表示,其工作区1~10还分别 对应有别名A~J。
说明:
(1) 在任意时刻,只有一个工作区是当前工作区,用 户只能在当前工作区对打开的当前表进行操作。

例如: Select 2 Use bmdm Index on 代码 tag 代码 additive Select 1 Use sb Set relation to sb.部门into bmdm additive browse fields sb.名称,bmdm.名称
2 建立一对多关系
2、SEEK命令: 格式:SEEK <表达式> 功能:在打开的索引文件中快速查找与<表达式>相匹配的第1 条记录。 参数描述: <表达式>:指定SEEK搜索的关键字。<表达式>可以是空字符 串。 说明: SEEK命令不仅可以查找字符串和常数,它还可以查找字符型、 数值型、日期型或逻辑型表达式的值。用SEEK命令查找字符串 常量时,字符串常量必须放在定界符中。 SEEK命令中的表达式必须和索引表达式的类型相同。
387 ...
4 ...
建立索引
索引文件有二种分类方法,按索引文件扩展
名分为单索引文件和复合索引文件。按索引 的功能VFP提供了四种类型索引文件:主索 引、候选索引、唯一索引和普通索引 。
(1)主索引:字段不允许有重复的索引,一个表只能有一个主 索引,主索引只能用于在数据库内部建的表,不能用于自由表。
(5)排序的结果存放在指定的排序文件中,若原文件有备 注文件,同样会产生备注文件,与排序文件同名。
例如:在表中按总分进行升序排序 use d:\student.dbf list sort on 总分 to d:\s1.dbf use use d:\s1.dbf browse &&打开表student.dbf &&浏览结果 &&对总分进行升序排列 &&关闭student.dbf &&打开s1.dbf &&浏览结果
3、RELATION命令建立关联
1 建立多对一关系 set relation to [<表达式1>into<别名1>,…, [<表达式n>into<别名n>] [additive]

功能:以当前表为父表,与另外一个或多个子表建立关联. Additive保证在建立关联时不取消以前建立的关联.
(2) 每一个工作区都可以并且只能打开一个表文件。
(3) 同一个表文件不允许同时在多个工作区打开,但在 其它工作区中被关闭之后,可以在任意一个工作区中被打 开。(工作区就象教室一样,表就象班级)
(4)各工作区中打开的表彼此相互独立(指针不受响)。
2、选择工作区命令
命令格式:SELECT 〈工作区号〉/〈别名〉 功能:选定某个工作区,用于打开一个表。
(3)如果执行SET EXCAT OFF命令后,再用LOCATE命令查找 字符型数据时,不要求字符型数据精确匹配。 (4)该命令只能查找第一条满足条件的记录。 若表中有多条满足条件的记录,当已经找到一条满足条件的 记录后,还想继续查找后面满足条件的记录时,可以使用 CONTINUE 命令继续向后查找满足条件的记录。
SELECT A
USE SB SELECT B USE BMDM GO 3 SELECT A DISPLAY 编号,名称,BMDM.名称
3、use<表名> in<工作区号>/<别名>
4、使用数据工作期窗口操作 5、将数据工作期状态保存为视图文件.vue
二、关联
1、关联的概述 所谓表文件的关联是把当前工作区中打开的表与另一 个工作区中打开的表进行逻辑连接,而不生成新的表。当 前工作区的表和另一工作区中的打开表建立关联后,当前 工作区中的表的记录指针移动时,被关联工作区的表记录 指针也将自动相应移动,以实现对多个表的同时操作。 在多个表中,必须有一个表为关联表,此表常称为父 表,而其他的表则称为被关联表,常称为子表。在两个表 之间建立关联,必须以某一个字段为标准,该字段称为关 键字段。表文件的关联可分为一对一关联、一对多关联和 多对一关联。
索引的更新
1、自动更新
2、重新索引
格式:REINDEX
功能:重建当前打开的所有索引文件。
3.2 查询
顺序查询
直接查询也叫顺序查询,是按照记录的物理顺序逐个比较,逐 个查询。 1、LOCATE命令 格式:LOCATE [<范围>] [FOR <条件>] [WHILE <条件>] 功能:按顺序搜索表,从而找到满足指定逻辑表达式的第一个 记录。
SELECT 1 USE SB LIST SELECT B
USE SP
LIST
例: CLOSE ALL
?SELECT()
USE SB list use SP list
? SELECT()
SELECT 0 ? SELECT()
通过用工作区(或者表)别名指定欲访问的工作区,所 得到的字段值为指定工作区打开的表当前记录的字段值。 【例】在1号和2号工作区打开SB.DBF和BMDM.DBF,在1号 工作区内查看当前记录的编号、名称、部门名称等字段内 容。

set skip to[ <表别名1>,…, <表别名n> ] 功能:建立一对多关联. Additive保证在建立关联时不取消以前建立的关联.
use
&&关闭s1.dbf
二、索引(逻辑排序)
与排序相比,索引是一种逻辑排序方法,它不改变记 录在物理上的排列顺序,而是建立一个与原文件相对应 的索引文件,索引文件中存储了一组记录指针,它指向 原文件的记录。如按总分字段建立的索引文件中包含两 列信息:第一列按序存放总分,第二列则是对应的记录 号,如下表。 总分的索引值 302 357 358 记录号 8 2 1
子表
代码
21
名称
一车间 二车间 三车间
037-2 磨床
038-1 钻床
22
23
23
子表 一对多关联
父表
【说明】建立关联时,关键字必须是两个表文件共有字段, 要有相同的字段值。且子表已按关键字段建立了索引文件, 并已指定关键字段为主控索引。
2、建立关联
步骤 : (1)打开数据工作期窗口 (2)打开需要建立关联的表 (3)为子表按关联的关键字建立索引或确定主控索引 (4)选定父表为当前工作区,为一个或多个子表建立关联 (5)说明建立的为一多关系,缺省时默认为多一关系 下面以教材84页的例题为例,来建立关联:
相关文档
最新文档