- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
非结构复合索引文件和独立索引文件是用命令打开的。
命令法打开索引文件 打开表文件的同时打开索引文件
Use
Biblioteka Baidu
表文件名 Index 索引文件名表
表文件已打开后打开索引文件
Set
Index To <索引文件名表> [Additive]
选择主控索引 主控索引的概念
对当前表记录顺序起控制作用的索引称为主控索引。
结构
非结构
对库表建主索引 单索引
索引打开
Use Set
单或非结构
表文件名 Index 索引文件名表
表、索同时
Index To <索引文件名表> [Additive]
表已开、再开索
设置主控索引
Set
Order To 索引编号|IDX文件名|[TAG] 标识名[OF CDX文件名] Order To
操作示范
创建索引
• 命令法:
结构化索引
可以与字 段同名 Index On <索引表达式> Tag <索引标识名>[For 条件]
[Ascending|Descending] [Unique|Candidate]
升 序 | 降 序 唯一索引 候选索引
非结构化索引 Index On <索引表达式> Tag <索引标识名> OF <索引 文件名.CDX> [For 条件][Ascending|Descending] [Unique|Candidate]
结构复合索引是取消当前索引
–Set
Index To
–Close
Index
有关索引的命令
建立索引
Index On <索引表达式> Tag <索引标识名>[For 条件] [Ascending|Descending] [Unique|Candidate]
Index On <索引表达式> Tag <索引标识名> OF <索引 文件名.CDX> [For 条件][Ascending|Descending] [Unique|Candidate] Alter table <数据库表名> add primary key <索引 表达式> Tag <索引标识名> Index On <索引表达式> To <索引文件名> [Compact[Unique]] [Additive]
创建索引实例3
用命令法对学生.dbf表建立单索引 1.按数学成绩降序建立索引 Use 学生 Inde on –数学 to su 2.按姓名升序建立索引 Inde on 姓名 to name
3.按性别建立唯一索引 Inde on 性别 to xb2 uniq
索引的编辑和应用
索引文件的打开和关闭
结构复合索引文件随着表文件的打开和关闭而同时进行;
例:val(工作部门)+基本工资
则原题意写为 val(工作部门)*10^6-基本工资*100
创建索引实例1
关键字表达式为C型和D型时,要将日期型数据转为 字符型数据,再用字符型连接符号“+”连接。
函数:DTOC(日期型数据) DTOS(日期型数据)
“工作部门 工作时间” 工作部门+dtos(工作时间)
由多个关键字段值和其对应的多个记录的物理位置 构成。(一个索引文件中有多张“对照表”)
–结构化复合索引文件
索引文件名与表文件同名(由系统自动生成)
其打开和关闭与表文件同步,是表的一部分。
表文件修改时,系统自动更新该索引文件。
不常用的索引或 临时性的索引
–非结构化复合索引
索引文件名由用户给出,要用专门的命令打开。 可随表文件关闭也可用命令关闭。 独立索引文件(扩展名为.IDX)(又称之单一索引文件)
C N C D
创建索引实例1
关键字表达式为C型和N型时,一般将数值型数据转为 字符型数据,再用字符型连接符号“+”连接;或也
可转为数值型数据:
转为字符型函数:STR(数值型数据,长度[,小数位])
例:工作部门+str(10^6-基本工资*100)
菜单操作中默 认是升序排列
转为数值型函数:VAL(数字字符型数据,长度)
创建索引
• 命令法:
结构化索引
Index On <索引表达式> Tag <索引标识名>[For 条件]
[Ascending|Descending] [Unique|Candidate]
升 序 | 降 序 唯一索引 候选索引
主索引的建立
可以不打开但建立 索引后自动被打开
Alter table <数据库表名> add primary key <索引 表达式> Tag <索引标识名>
只存储一个索引的文件,文件名由用户给出,要 用专门命令打开。
创建索引
• 菜单法:
在“表设计器”中创建 (只能创建结构复合索引文件)
注意:
不能对备注型或通用型字段建立索引; 不要建立多余的无用的索引,会降低系统性能; 索引表达式是由多个字段组成时要注意书写格式和数据类 型的一致。即多个索引关键字段名间应用“+“号连接,且 要用函数转换为一样的数据类型。
逻辑顺序
5674586 5674596
4
5
5674423
5674524
104
105
索引文件的内容
• 只有索引关键字段值或索引表达式值(逻辑顺序 号)与记录号(物理顺序)。 • 一个索引表达式或索引关键字段值与记录号对 应的内容又称之为一张“对照表”,用一个索 引标识来标记。 说明:一个表可同时建立多个索引,但只能有一 个索引为主控索引。 控制表当前
创建索引实例1
用菜单法对zgb.dbf表建立复合索引
1. 以工作部门的升序排列,普通索引,索引标识为 gzbm,并浏览显示。 2. 按jbgz1标识,建立以基本工资升序排列的普通索 引。 3. 对男职工以其基本工资降序显示记录。(jbgz2) 4. 以工作部门升序排列,若部门相同,则按工作时 间的升序排列。(bmsj) 5. 以工作部门升序排列,若部门相同时,则按基本 工资降序排列。(bmgz)
复合索引
(扩展名CDX)
结构复合索引 索引
建立时,用户未 单独为其命名,与 表文件同名 与表同时打开、 关闭 需使用单独命令 打开、关闭
独立(单一)索引
(扩展名IDX)
为与FOXBASE兼容 建立时,用户单独 为其命名
索引文件的种类 复合索引文件(扩展名为.CDX) –定义:
一个索引文件 有多个索引
也可用EOF( )函数,找到时该函数值为"F",没找到为"T" 。
Seek中的表达式说明:
–表达式的数据类型有C、N、L、D,但需按各类 型的格式书写。 –字符型变量前无需加“&”
Find中的表达式说明:
–表达式的数据类型只有C、N,字符型数据无需 加定界符。 –字符型变量前需加“&”。
“&”
宏代换函数 将紧随其后的字符型内存变量的值的定界符去掉。
5. 以姓名降序排列,若姓名相同时,则按出生日期 降序排列。(xmrq)
创建索引实例2
用命令法对学生.dbf表建立复合索引
Use 学生 Inde on 籍贯 tag jg Brow Inde on 外语 tag cj1 desc List Inde on 出生日期 tag narq for 性别=“男” Disp all Inde on 性别+str(100-数学) tag xbcj Disp all Inde on 姓名+dtos(出生日期) tag xmrq desc
顺序号与记录号(物理顺序) 的对照表。表的逻辑顺序号是 由某一字段的值的大小决定。
索引的概念
索引:不改变物理 顺序,所有关键字 按升(降)排列, 每个值对应原文件 的一个记录号,确 定记录的逻辑顺序
物理顺序 索引
宿舍 电话 5674423 5674524 5674579 记录 编号 4 5 1 2 3 记录 编号 1 2 3 宿舍 电话 5674579 5674586 5674596 宿舍 号码 101 102 103
删除
索引的应用
说明:对表达式的内容进行查 找,找到时记录指针指在该记 录上,未找到时记录指针则在 Find 表达式 文件尾。用“Skip” 辅助命 令查找下一条件满足条件的记 录 SEEK(索引关键字表达式 )
Seek 表达式
索引查询
解释见教材 P41
当没找到记录时, 记录指针指到文 件尾。
用FOUND( )函数测试查找是否成功,找到为"T",否则为"F" 。
显示的顺序
索引的概念 bh
宿舍 电话 5674423 记录 编号 4
索引标识 索引 对照表
5674524
5674579
5
1 2 3
逻辑顺序
5674586 5674596
关键字段 值或索引 表达式值
记录号
索引的构成与类型
索引的构成
• 索引名
又叫索引标识(TAG)。是标记一个索引的名称。
• 索引表达式或索引关键字段
取消主控索引
Set
关闭索引文件
Set
对单或非结构而言
Index To Close Index
对结构索引是取消主控
索引的修改和删除
修改
表设计器中直接修改和删除
更新
表中数据修改时已打开的索引自动更新,而未打 开的索引文件则要打开后用命令:Reindex 更新
Delete Tag All/<标识名1>[,<标识名2> ]…… 删除复合索引文 件中的索引标记 Delete File 索引文件名 是对关闭的独立或非结 构复合索引文件删除
–自由表中也可建立。
索引的类型 • 普通索引(Regular Indexes)
–一张表可有多个。
–数据库表和自由表均可有。
• 唯一索引(Unique Indexes)
索引表达式中重复的值在索引表中只出现第一个, 忽略重复值。
索引文件的种类
含多个索 引
非结构复合索引
建立时,用 户单独为其 命名
需使用单独命令 打开、关闭
菜单法选择主控索引 操作 表文件打开且相应的索引文件已打开 要点
① 进入“工作区属性”窗口 “工作数据期“工具按钮,选择“属性”按钮,进 入。 或若为浏览表状态下选择菜单“表\属性”,进入。
②在“工作区属性”窗口的“索引顺序”框中选择索引 标识,按“确定”按钮。
命令法关闭索引文件 关闭索引文件
单索引、非结构复合索引被关,
在数据库中讲解
创建索引
• 命令法:
单索引
快速存 取索引
建立新的索引文件时不 关闭已打开的索引文件
Index On <索引表达式> To <索引文件名> 单索引文件 [Compact[Unique]] [Additive] 只能按升序
创建索引实例2
用命令法对学生.dbf表建立复合索引
1. 以籍贯的升序排列,普通索引,索引标识为jg,并 浏览显示。 2. 按cj1标识,建立以外语成绩降序排列的普通索引。 3. 对男学生以其出生日期降序显示记录。(narq) 4. 以性别升序排列,若性别相同,则按数学成绩降 序排列。(xbcj)
索引与排序
什么是索引和排序 索引的构成和类型
创建索引
索引的编辑和应用 排序的创建和应用
了解索引与排序
记录的顺序
重新组织 数据表数据
– 物理顺序:
表中记录的存储顺序。 按记录输入的前后顺序存放。 – 逻辑顺序: 记录的处理顺序。
排序
索引 对记录按某个(些)字段的值进行排序。
了解索引与排序
排序从物理上对表进行重 新整理,按照指定的关键 字段来重新排列表中数据 记录的顺序,并将重新排 索引实际上是一种排序,但是 它不改变数据表中数据的物理 序的结果形成一个新的数 顺序,而是另外建立一个逻辑 据表。
–索引表达式或索引关键字段的值是确定索引顺序 的依据。
索引的类型 • 主索引(Primary Indexes)
–每张表只能有一个。一般为表的关键字或索引表 达式的值没有重复值的才能作为主索引。
–只存在数据库表中的结构复合索引中。
• 候选索引(Candidate Indexes)
–可有多个。一般为表的关键字或索引表达式的值 没有重复值的才能作为候选索引。
例: a1=“ABCD” a2=“a1” ?&a2 ?”&a1” 与 ?a1等功能 与 ?“ABCD“等功能 结果 ABCD ABCD 结果
?&a1
b1=67 b2=“b1”
结果
没找到变量ABCD
?&b1
查找实例
在学生.DBF中查找 ①查找所有“王”姓同学的记录; Use 学生 inde name Use 学生 Inde on 姓名 tag xm &&若已建立则打开并指定为主控索引 Seek “王” &&find 王 ?Found() &&判断是否找到,若为“T”,则找到了 Disp Skip disp 直到无显示为止 ……
任何时侯只有一个主控索引
说明: 菜单法建立的结构复合索引文件虽是打开的,但不 用命令法建立的任一种索引,均为打开,并且直接为 是主控索引,需指定才成为主控索引. 主控索引.
仅有此部分时为出取消主控索引
推荐
设置主控索引
Set
Order To
索引编号 IDX文件名
[TAG] 标识名[OF CDX文件名]