VF数据库第8章索引及记录操作
- 格式:ppt
- 大小:294.96 KB
- 文档页数:32
查询、统计和多表操作表文件中记录的顺序通常是人们在输入数据时按输入的先后次序存储的,并以记录号表示,这个顺序只反映了存放数据的先后顺序。
但在数据处理实际应用中,由于数据库十分庞大,为了高效方便地处理数据,常常需要对记录位置进行重新整理,并按某种指定的顺序对表记录进行处理。
例如,对学生成绩表按学号为序显示输出记录,以便查找;或按总分高低为序输出记录,以便进行比较等等。
对记录位置进行重新整理通常有排序和索引两种方法。
排序是对表文件进行物理位置的整理;索引是对表文件进行逻辑位置的整理。
一、排序表文件的排序操作就是根据表的某个关键字或关键字表达式重新排列表记录的位置。
执行排序操作后将生成一个新的表文件(称为:排序文件)。
新文件的结构和数据可以与源文件完全相同,也可以只取源文件的部分字段。
新文件不改变源文件内容和记录顺序。
【命令】 SORT TO<新文件名>ON <字段名1>[/A] [/D] [/C] [,<字段名2> [/A] [/D] [/C]…] [ASCENDING|DESCENDING][<范围>][FOR<条件>|WHILE<条件>][FIELDS<字段名表>| FIELDS LIKE<通配符>|FIELDS EXCEPT<通配符>]【功能】对当前表中指定范围内、满足条件的记录按指定字段升序或降序重新排序,并将排序结果存入新文件名中。
【说明】①排序结果存入由TO <新文件名>指定的表文件中,系统默认文件扩展名为.DBF。
②在ON子句中的字段名表示排序的关键字段。
当使用一个关键字时,叫“单重排序”;使用多个关键字时,叫“多重排序”。
在多重排序中,关键字有主次之分。
主关键字是指能够唯一标识某个记录的关键字;次关键字是指标识具有某种相同属性的某些记录的关键字。
在关键字表达式中,主关键字排在前面,次关键字排在后面。
⼀.建⽴索引⽂件:对打开的索引⽂件,可⽤下列命令建⽴索引:格式:index on 索引关键字|tag 索引名|to 索引⽂件名说明:(1).tag 索引名:指定索引名,此索引存放在与表名相同的.cdx⽂件中。
(2).to 索引⽂件名:选择此项⽣成独⽴索引,即⼀个索引存放在⼀个索引⽂件中;否则⽣成的是结构化复合索引。
例1:建⽴“⼯资情况”表的结构化复合索引⽂件,其索引关键字分别为姓名和⼯资,⽽索引名分别为xm和gz.use ⼯资情况browseindex on 姓名 tag xmindex on ⼯资 tag gzbrowse&&分别执⾏以上命令后,⽣成了“⼯资情况.cdx”⽂件,其中存放了xm和gz两个索引。
例2:⽤“姓名”作索引关键字,建⽴“职⼯档案.dbf”的独⽴索引⽂件,⽂件名为a.idx。
use 职⼯档案index on 姓名 to hello &&执⾏此命令,检查默认⽬录e:\myvfp,会发现多了⼀个⽂件:hello.idxuse⼆.打开索引:打开表时,系统会⾃动打开结构化复合索引,但此时显⽰的仍是物理顺序。
要使索引起作⽤,必须指定主控索引。
主控索引就是控制当前显⽰顺序的索引。
也可以在打开表的同时指定主控索引。
1.打开表的同时打开索引并指定主控索引:格式:use 表名 [index 索引⽂件名] [order tag 顺序号|索引名]说明:(1).index 索引⽂件名:⽤于打开独⽴索引⽂件。
(2).order tag 顺序号|索引名:⽤于打开结构化复合索引。
其中,顺序号为该索引在复合索引⽂件中的先后顺序,即在“表设计器”的“索引”选项卡中看到的该索引的位置。
例:在命令窗⼝输⼊以下命令依次执⾏:use 职⼯档案 index hello &&打开表的同时打开独⽴索引hellobrowse &&显⽰的是按姓名索引的顺序,useuse ⼯资情况 order tag 2 &&显⽰的是gz索引的顺序,因为gz在“表设计器”中位置为2,use2.打开表后再打开索引:格式1:set index to 索引⽂件名功能:打开独⽴索引⽂件格式2:set orer to 顺序号|tag 索引名功能:打开结构化复合索引例:在命令窗⼝依次执⾏以下命令:use 职⼯档案brow &&显⽰物理顺序,set index to hello &&打开独⽴索引⽂件hello.idxbrowse &&显⽰的是按姓名索引的顺序,useuse ⼯资情况browse &&显⽰物理顺序set order to 1 &&即将xm指定为主控索引,因为xm在“表设计器”中位置为1,browse &&显⽰按姓名索引的顺序,set orer to gz &&将gz指定为主控索引browse &&显⽰的是gz索引的顺序,use三.关闭索引:格式1:set index to格式2:set order to说明:上两条命令后不加选项,可关闭当前索引。
课时计划第周Array
一、任务下达:
根据需求,数据表记录索引的操作。
二、任务规划:
任务一、索引的类型
1、主索引,唯一性,自由表不能创建。
2、候选索引,唯一性,适应自由表。
3、普通索引,不唯一,字段可以重复值。
4、唯一索引,兼容旧版本,选定一组记录,根据字段值第一次出现的
位置,选择和排序记录。
任务二、建立索引
任务三、使用索引
1、打开索引文件
SET INDEX TO
2、设置主控索引
Set order TO TAG 入学成绩
3、查看索引结果,选择属性。
任务四、重新索引
REINDEX(保持索引的有效性)
任务五、查找索引记录
Use 学生管理
Set order to 入学成绩
Seek 362
Display
任务六、关闭和删除索引
Use 学生管理表
Delete tag 学号
三、任务实施:
1、对字段设定索引。
2、打开索引文件
3、查看索引效果
4、重新索引
5、索引查找记录
6、关闭和删除索引
四、任务评估:
五、任务拓展:
分小组,讨论课堂内容,形成经验,提交博客园,分享心得。
课。
索引一、索引的概念。
索引文件和表文件分别存储。
索引不改变表中记录的物理顺序。
二、四种索引类型:●主索引主索引不允许表中有重复的关键字,一个表只能有一个主索引。
●候选索引候选索引不允许表中有重复的关键字,一个表可有多个候选索引。
●唯一索引唯一索引允许表中有重复的关键字,但索引项不重复。
一个表可有多个唯一索引。
●普通索引普通索引允许表中有重复的关键字,索引项也对应重复。
一个表可有多个普通索引。
三、三种索引文件:●结构复合索引文件索引文件的扩展名是cdx,主名与表文件的主名相同。
一个结构复合索引文件可包含多个索引。
一个表只有一个结构复合索引文件。
●*非结构复合索引文件索引文件的扩展名是cdx,主名不能与表文件的主名相同。
一个非结构复合索引文件可包含多个索引。
一个表可有多个非结构复合索引文件。
●*独立索引文件索引文件的扩展名是idx。
一个索引文件只包含一个索引。
一个表可有多个独立索引文件。
四、建立索引1.在表设计器中建立索引只能建立结构复合索引文件。
2.用命令建立索引①结构复合索引●创建索引INDEX ON <关键字表达式> TAG <索引标识>[FOR <条件>][ASCENDING|DESCENDING][UNIQUE|CANDIDATE][ADDITIVE][COMPACT]说明:同一个表的所有索引都可保存在同一个索引文件中;索引文件的主名与表文件的主名相同;打开表时,索引文件自动打开。
主索引和候选索引必须属于该索引。
*②非结构复合索引●创建索引INDEX ON <关键字表达式> TAG <索引标识> OF <索引文件名>[FOR <条件>][ASCENDING|DESCENDING][UNIQUE][ADDITIVE][COMPACT] 说明:同一个表的所有索引都可保存在同一个索引文件中;索引文件的主名与表文件的主名不能相同;当在索引文件中创建第二个索引时,原索引文件可以不预先打开;索引文件不能自动打开;*③独立索引(.IDX)●创建索引INDEX ON <关键字表达式> TO <索引文件名>[ FOR <条件>][UNIQUE][COMPACT][ASCENDING][ADDITIVE]●打开表和索引USE <表名> INDEX <索引文件名序列>●打开索引SET INDEX TO <索引文件名> [ADDITIVE]●关闭索引SET INDEX TO说明:每一个索引都有一个独立的索引文件;索引文件的主名与表文件的主名可相同也可不同;只能升序;打开表时,索引文件不能自动打开。
1.建立如下个人情况表grqk.dbf
2.表中的数据排列混乱,没有规律,查找起来非常费事,能将他们按一定的顺序排列起来吗?只要建立索引就可以了。
索引规定了表中记录的逻辑顺序,它可使同一表中的记录变化多端,给编程提供了方便,在进行统计运算中可成倍地提高运算速度,同时也为查询提供方便。
(1)以编号建立普通索引,并按记录的编号以从小到大的顺序显示。
在表设计器中建立好索引后,在浏览窗口中我们看不到有什么不同。
点表菜单的属性,打开工作区属性,选择索引顺序。
(2)以编号和姓名两个字段建立普通索引,并显示排序后的结果。
3.索引可用于数据查询,但更直接的方法是使用定位命令,使用它可以使表中的指针指在要找的记录上。
查找一个“联系电话”为“0250897”的记录。
选择表菜单中转到记录子菜单的定位命令或者使用locate命令
4.如果想看工程师的个人情况,由于在一个表中是工程师的人不只一个,用定位命令只能找到表中符合此条件的第一个记录。
而要同时查到所有工程师的人,就要用到数据过滤命令。
职称=“工程师”LEFT(姓名,2)="杨"。
VFP索引2.5 表的索引1. 基本概念记录的顺序:物理顺序:即表中记录的存储顺序。
用记录号表示。
逻辑顺序:表打开后被使用时记录的处理顺序。
索引:指按表文件中某个关键字段或表达式建立记录的逻辑顺序。
它是由一系列记录号组成的一个列表,提供对数据的快速访问。
索引不改变表中记录的物理顺序。
表文件中的记录被修改或删除时,索引文件可自动更新。
索引关键字(索引表达式):用来建立索引的一个字段或字段表达式。
注意:1)用多个字段建立索引表达式时,表达式的计算结果将影响索引的结果;2)不同类型字段构成一个表达式时,必须转换数据类型。
索引标识(索引名):即索引关键字的名称。
必须以下划线、字母或汉字开头,且不可超过10个字。
索引类型:主索引、候选索引、普通索引、唯一索引。
主索引:组成主索引关键字的字段或表达式,在表的所有记录中不能有重复的值。
主索引只适用于数据库表的结构复合索引中。
自由表中不可以建立主索引;数据库中的每个表可以且只能建立一个主索引。
候选索引:在指定的关键字段或表达式中不允许有重复值的索引。
在数据库表和自由表中均可为每个表建立多个候选索引。
普通索引:也可以决定记录的处理顺序,但是允许字段中出现重复值。
在一个表中可以加入多个普通索引。
唯一索引:参加索引的关键字段或表达式在表中可以有重复值,但在索引对照表中,具有重复值的记录仅存储其中的第一个。
2. 索引的作用用途采用的索引类型排序记录,以便显示、查询或打印使用普通索引、候选索引或主索引在字段中控制重复值的输入并对记录排序对数据库表使用主索引或候选索引,对自由表使用候选索引准备设置表关系依据表在关系中所起的作用,使用普通索引、主索引或候选索引3.索引文件的种类索引文件种类特征关键字数目限制结构复合索引文件.CDX 使用和表文件名相同的基本名,随表的打开自动打开。
可以看成表结构的一部分。
多关键字表达式,称为标识。
有效表达式限制在 240 个字符之内。
非结构复合索引文件.CDX 必须明确地打开,使用和表名不同的基本名。
数据库及其操作1、数据库的建立数据库是一个容器1) 数据库文件的扩展名.dbc, 备注文件.dct, 索引文件.dcx。
数据表文件.dbf,备注文件.FPT2)建立数据库文件(命令交互方式):CREA DATA 数据库名其他方式:在项目管理器中建立菜单方式建立3)打开数据库文件:OPEN DATA 数据库名(参数的意义)修改>数据库设计器删除DELE DATA 数据库名注意:DELE DAT A 数据库名DELETETABLES RECYCLE (连数据库中的表一起删除放回收站)===========================================================2、数据库表的建立1)数据表有数据库表和自由表,他们的区别和联系(操作表设计器示例)字段名长度(自由表10,数据库表128)、表名长度不一样2)数据表的操作命令:CREA 表名(注意“空值”)注意“空值”,就是缺值或不确定值,不能把它理解为任何意义的数据如价格字段的数据设置为“空值”,表示价格还没有确定,如设置为“0”,表示免费。
设置为关键字的字段值不允许为“空“USE 表名MODI STRU(修改结构,先要打开数据表)LIST STRU 显示结构记录操作命令:LIST 显示记录APPE 追加记录DELE 逻辑删除PACK 在逻辑删除的基础上物理删除RECALL 恢复逻辑删除的记录GOTO 指针绝对定位SKIP 指针相对移动直接修改命令(成批替换)REPLACEuse xueshengrepl 性别WITH “女”(没有范围ALL,当前。
有ALL,所有)repl 性别WITH “女”FOR 班级=”3”(带条件不要范围ALL)LOCA ……CONT顺序查询(可以用FOUND()或用EOF()函数函数来验证查询是否成功)要点注意:1、删除数据库时,该数据库必须是关闭状态2、打开数据表的时候,要修改其结构和记录,则必须以“独占”的方式打开3、数据表的结构中各字段宽度总计=各字段的宽度之和+1数据表文件不管有多少个备注型字段或通用型字段,内容都存放在一个备注文件中(同表名,后缀名.FPT)(要点)4、DELE、DISP、RECALL、REPLACE命令后面不带范围时只对当前指针指向的记录进行操作而LIST命令后面不带范围时对所有记录进行操作5、DELE、DISP、LIST、RECALL命令后面可以跟短语FOR,FOR后面跟条件(例:显示姓“张”的同学,条件?)6、GO和GOTO 是指针绝对定位,SKIP N 是指针的相对移动(正往下,负往上)7、INSERT命令在表的任意位置插入记录,默认是after(在某条记录后面),在当前记录之前插入带BEFOR短语8、内存变量和字段变量同名时的验证操作(第二章) (要点)9、数据库名!数据库表名====>成绩管理!学生=========================================================3)索引的建立索引的概念:由指针文件构成,指针逻辑上按照索引关键字的值进行排序,不改变记录的物理顺序。
命令1:CREATE [路径][表名] 一、创建数据表的结构例子:在A盘创建GZ2数据表。
CREATE A:GZ2命令2:CREATE [新表名] FROM [旧表名]例子:在A盘由GZ1创建GZ3数据表。
CREATE A:GZ3 FROM A:GZ1二、表结构的显示命令:LIST STRUCTUREDISPLAY STRUCTURE例子:显示当前数据表在结构。
LIST STRUCTURE三、数据表的打开命令:USE 表名 [INDEX 索引文件名] [EXCLUSIVE]例子:打开A盘GZ1数据表。
USE A:GZ1四、数据表的关闭命令:USECLOSE DATA例子:关闭当前打开的数据表。
USE五、表结构的修改命令:MODIFY STRUCTURE例子:修改当前数据表的结构。
MODIFY STRUCTURE六、表数据的输入命令:APPEND [BLANK]例子:向当前数据表追加数据。
APPEND七、表记录的显示命令:BROWSE [FIELDS 字段表][FOR 条件]LIST [范围][[FIELDS]字段表][FOR 条件]DISPLAY [范围][[FIELDS]字段表][FOR 条件]例子:显示当前表中“应发合计”大于1000元的记录的职工编号、姓名、应发合计三个字段。
BROWSE FIELDS 职工编号,姓名,应发合计 FOR 应发合计>1000LIST 职工编号,姓名,应发合计 FOR 应发合计>1000八、用复制方法建新表命令:COPY TO 新表名 [范围][FIELDS 字段表][FOR 条件]例子:把当前表中“应发合计”大于1000元的记录复制到新数据表GZ2中。
COPY TO A:GZ2 FOR 应发合计>1000九、从其他表取数据命令:APPEND FROM 表名 [FOR 条件]例子:把GZ1表中“应发合计”大于1000的记录复制到当前的表后面。
APPEND FROM GZ1 FOR 应发合计>1000十、记录指针定位命令:GO n|TOP|BOTTOM (绝对移动)SKIP [±n] (相对移动)例子:把记录指针移到第1条记录。
第一章数据库基础理论一、信息、数据和数据处理信息是有用的数据;数据是信息的表现形式,数据是信息的载体二、数据模型有三种:层次模型、网状模型、关系模型Visual FoxPro 6.0是关系型数据模型三、关系模型关系其实就是一张二维表,由字段、记录,和数据项组成,表中的每一行称为记录或元组,表中每一列称为字段或属性,表中每一项称为数据项或分量。
四、数据库:是数据库系统的核心和管理对象五、数据库系统由四部组成:硬件系统、系统软件(操作系统、数据库管理系统)、数据库应用系统和各类人员三级模式:外模式、概念模式和内模式六、数据库管理系统(DBMS):由三部分组成:数据描述语言DDL、数据操纵语言DML、数据库管理例行程序。
二、关系数据库1、一个关系数据库由若干个数据表组成,数据表由若干个记录组成,而每一个记录是由若干个以字段属性加以分类的数据项组成。
(即数据项→记录→数据表)2、表间关联关系的类型:一对一关系、一对多关系、多对一关系3、关系完整性:是指关系中的数据及具有关联关系的数据间必须遵循的制约和依存关系,保证数据的正确性、有效性和相容性关系的完整性包括:域完整性、实体完整性、参照完整性。
其中域完整性是指:包括字段的值、类型、有效规则实体完整性是指:对关系中的记录值是唯一的。
参照完整性是指:在数据库设计时要进行参照完整性。
建立关联表间数据的参照性。
4、关系运算:选择运算:是指从关系中选择某些满足条件的记录组成的一个关系投影运算:是指从关系中选择某些字段值组成的一个关系连接运算:是将两个或多个关系通过连接条件组成一个新的关系第三章基础知识一、数据类型:(其中所提到的字符个数,一个汉字用两个字符来表示,所有的标点符号应在英文状态下输入) 有六种基本数据类型:1、字符型:由“”、‘’和[]三种作为字符型数据的定界符。
且数据长度不能超过254个字符2、数值型:包括数值型、浮点型、货币型、双精度型、整型其中数值型是最常用的数据类型,是由数字(0~9)、小数点和正负号组成,最大长度不能超过20个字符 (包括十、—号和小数点)。