数据库和表创建和使用第3节.ppt_第1页
数据库和表创建和使用第3节.ppt_第2页
数据库和表创建和使用第3节.ppt_第3页
数据库和表创建和使用第3节.ppt_第4页
数据库和表创建和使用第3节.ppt_第5页
已阅读5页,还剩136页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

3.3 表 的 创 建 和 使 用,1. 表结构 表 结 构 的 创 建 和 修 改 2. 字段属性与表的属性 3. 表 的 打开与关闭 4. 记 录 的 处 理 5. 表 的 索 引 6. 自由表 7. 有关表操作的常用函数,第3章 数据库与表的创建及使用,学生表中有8个记录,原物理顺序:,以xh(学号)字段作为索引:,以XM(姓名)字段作为索引:(汉字以拼音字母为准),结束放映?,YES(是),NO(否),表 的 概 念 字 段 的 基 本 属 性,表结构的创建和修改,引 言 表 结 构 的 创 建 使用表向导创建表结构 使用表设计器创建表结构 使用CREATE TABLE命令创建表结构 表 结 构 的 修 改 在表设计器中修改表结构 用ALTER TABLE命令修改表结构,记录的处理,记录的输入 记录的浏览 筛选记录与字段 记录的定位,记录的修改 记录的删除与恢复 记录的复制 数据的统计,表的使用,工作区与表的别名 在工作区中打开和关闭表 打开和关闭表的操作方法(系统自动分配工作区) 选择工作区打开和关闭表(用户选择工作区) 表的独占与共享使用 使用表的其他问题,表的索引,索引的相关概念 记录的顺序与索引 索引的分类 根据内容:索引的类型 根据文件:索引文件的类型 创建索引文件 创建结构复合索引 索引的修改与删除,索引的使用与维护 设置主控索引 建立“多字段”索引 利用索引快速定位记录,学校学生情况表,表 的 概 念,学校教师情况表,表 的 概 念,表 的 概 念 VFP中的表(Table)是指存放在磁盘文件中的一张二维表。一张表保存为一个表文件(.DBF), 表有时也叫数据表。 表中的一列称为字段(Field)。字段规定了数据的特征。例如,学生表中学号、姓名、性别和系名就是字段。 表的一行叫做一个记录(Record)。记录是多个字段的集合。同一个表的每一个记录都有相同的字段。 表的记录必须用一个公共的结构来存储,这个公共的结构就是表结构。 建立表的步骤是:先设计表的结构,再在VFP中使用命令或表设计器建立表的结构并保存为表文件,然后再输入记录。,字段的基本属性(1) 字段名(Field Name) 每一个字段必须取一个名字,称为“字段名”。用以标识该字段。字段名一般要与其对应的实体的属性名相同或相近。例如,学生表的“姓名”列的字段名可以取为“姓名”或“xingming”或“XM”或“name”等。字段名的命名规则与内存变量的命名规则一样。在中文版的VFP 中,允许使用汉字作为字段名。 字段的数据类型(Type) 表中的每个字段都有特定的数据类型。不同的数据类型的表示和运算的方法不一样。指定数据类型是为了方便VFP处理这些数据。VFP提供了13种字段的数据类型。,字段的基本属性(2) 字段宽度(Width) 字段宽度是指该字段所能容纳数据的最大字节数,字段宽度必须能足够容纳可能的最长的数据信息。其中备注型和通用型字段宽度为4字节,包含的是引用信息,指向真正的备注内容。备注字段的数据保存在单独文件中,文件名与表文件名相同,并且扩展名为.FPT。另外一些数据类型的宽度是固定的。如货币型、日期型、日期时间型和双精度型为8字节;整型、备注型、备注型(二进制)和通用型为4字节;逻辑型为1字节。 小数位数(Decimal) 对于数值型、浮点型和双精度型的字段还可以指定其小数的位数。这些数据类型字段的宽度,实际上是整数部分的宽度+小数点1位+小数位数宽度。如果小数位数不为0,则小数位数必须比整个字段宽度至少小2。,字段的基本属性(3) 空值支持(Null) 空值是用来指示记录中的一个字段“有或没有”数据的标识。 在VFP出现之前,字段中“有没有”包含数据是难以区分的。例如,如果要添加一个空白的记录但又不想在这些字段中插入数据,那么,对于数值型字段而言,将把它当作包含一个零值对待。然而,由于0是一个值(正如1或3.14一样),如果这个字段正好有一个为0的值而被当作没有值对待是不正确的。对于字符和逻辑数据类型而言,类似的情形也会发生:不包含数据的逻辑型字段被指定为一个逻辑“假”值,即在不知道是“真”是“假”的情况下,被说成是“假”。 VFP通过提供能够指定一个字段是包含NULL(空)还是包含一个值的功能,使这个问题得以解决。这种指定是作为字段定义的一个部分,如象定义名称和类型一样。 NULL不是一种数据类型或一个值,确切地讲,它是用来指示数据存在或不存在的一种属性。通过使用NULL ,就有了一个判定某个字段是否具有一个值的办法。,通用型,G,OLE,图片或声音,VFP 中 字 段 的 数 据 类 型,引 言(1) 在VFP中,如何来收集和存储数据呢?VFP 把数据存储在表文件里。表文件可以属于某个数据库(与数据库相关联的表),叫数据库表(简称“库表”),表文件也可以与数据库无关联,叫自由表。自由表具有的特性数据库表都有,但数据库表还可以具有其他功能。 本节首先介绍自由表的创建过程与功能。 在创建表结构时应当注意以下几点: 1. 字段的数据类型必须与字段的存储内容相匹配。 每一个字段都有特定的数据类型。 2. 为字段设置足够的宽度来容纳信息。字符型字段的长度最大为254,数值型、浮点型字段的长度最大为20,其他类型字段的长度由系统给定。,引 言(2),3. 为数值型、浮点型字段选择适当的小数位数。 4. 若想让字段接受.NULL.值,则在表设计器对话框中选中NULL,或在CREATE TABLE-SQL命令中使用NULL关键字。 5. 自由表的字段名本身最多只能取10个字符,且必须以字母、下划线或汉字开头。 6. 表中允许的字段个数最大为255;若表中有字段使用了NULL值则允许的字段个数最大为254。 7.若表结构中定义了备注型字段,则会产生一个主名与表名相同、扩展名为.FPT的备注文件。此文件不能被删除。否则,表文件将无法打开。 8. 创建自由表和数据库表结构的方法和步骤相似。,使用表设计器创建表结构(1),具体步骤: 1. (1) 在VFP的主 窗口中,选择“文件”菜 单中的“新建”或点击“常 用”工具栏上的“新建”按 钮,均可打开如右图所 示的“新建”对话框。 在“新建”对话框的文 件类型选择框中点击“表” 选项,然后点击“新建文 件”按钮。,使用表设计器创建表结构(2),(2) 若要直接在某个项目文件中创建自由表,可先打开此文件,在“项目管理器”中选择“数据”选项卡,然后再选择“自由表”,点击“项目管理 器”中的“新建”按钮,打开如右图所示的“新建表” 对话框。 在“新建表”对话框 中点击“新表”按钮。,使用表设计器创建表结构(3),2. 经过步骤1,屏幕上会出现“创建”对话框,如下图所示。在其中指定表的保存位置、表的名称并选定保存类型之后,单击“保存”按钮。,使用表设计器创建表结构(4),3. 经过步骤2,VFP将激活表设计器,在屏幕上弹出表设计器的对话框(如图所示),其中共有3个选项卡,即、和选项卡,分别用于不同设置。,使用表设计器创建表结构(5),4. 经过步骤3,再单击标签,激活选项卡,输入相应的字段名、字段类型、字段宽度和小数位数;若允许字段使用.NULL.值,点击NULL。,使用表设计器创建表结构(6),5. 经过步骤4,单击“确定”按钮,此时会出现下面对话框,单击“是(Y)”,则在完成表结构创建的 同时,打开表的“浏览”窗口,进入记录的输入状态;若单击“否(N)”,则仅完成表结构的创建,产生一个只有结构而无记录的空表。,使用CREATE TABLE-SQL命令 创建自由表(1),一、命令格式如下: CREATE TABLE 语法:CERATE TABLE|DBFFREE (字段名1 字段类型(字段长度,小数位数) NULL|NOT NULL ,字段名2 字段类型(字段长度,小数位数 NULL|NOT NULL,) 功能:创建表(自由表)的结构 说明:(1)FREE 子句表示创建的表是自由表,不被添加 到数据库中。创建自由表时,若没打开任何数 据库,则该关键字可省略。 (2)用本命令创建的表,将自动处于打开状态。,使用CREATE TABLE-SQL命令 创建自由表(2),二、例题分析: 用CREATE TABLE-SQL命令创建职工情况表(ZGQK.DBF)。 解: CREATE TABLE ZGQK FREE (GH C(6),XM C(8) NOT NULL,; XB C(2), HF L,CSRQ D NULL,JBGZ N(7,2),JL M) 命令中各字段的含义如下: GH-工号、字符型、长度为6;XM-姓名、字符型、长度为8; XB-性别、字符型、长度为2;HF-婚否、逻辑型; CSRQ-出生日期、日期型;JBGZ-基本工资、数值型、长度为7、小数位数为2;JL-简历、备注型。 其中,XM字段不允许NULL值,CSRQ字段允许NULL值。,在表设计器中修改表结构(1),1.如果表已存在于一个项目中,则可在项目管理器中先选定要修改的表,然后再单击其中的“修改”按钮便会打开表设计器进行表结构的修改。 2.使用MODIFY STRUCTURE命令打开表设计器并修改一个表的结构。在使用该命令前,首先应以独占方式(EXCLUSIVE)打开要修改的表。例如,可以在命令窗口中使用以下命令修改XS表的结构: USE XS EXCLUSIVE & 以独占方式打开XS表 MODIFY STRUCTURE & 打开表设计器,修改表 结构,在表设计器中修改表结构(2),3.打开表后,点击“显示”菜单,在下拉菜单中选择,也可打开表设计器并修改表结构。,在表设计器中修改表结构(3),4.在“表设计器”中,用户可对表结构作下述修改: (1)添加字段 将光标移到已有字段之后,输入新的字段名、字 段类型、字段长度及小数位数。 (2)插入字段 将光标移到要插入字段位置的后一个字段,单击 “插入”按钮即插入一个“新字段”,再修改字段名、 字段类型、字段长度及小数位数等。 (3)删除字段 将光标移到要删除的字段,单击“删除”按钮,即 可删除所选字段。,在表设计器中修改表结构(4),(4)调整字段次序 在“字段名”左边有一个 按钮,点住这个按钮上 下拖动,可以调整各个字段之间的次序。 (5)修改字段 将光标移到要修改的字段上,直接修改相关内容。 对表结构修改后,单击“确定”按钮,在出现的消息框(如图)中单击“是”按钮,即可完成表结构的修改。,用ALTER TABLE-SQL命令修改表结构(1),一、命令格式如下: ALTER TABLE 语法:1.ALTER TABLE ADD|ALTERCOLUMN 字段名 字段类型 (字段长度,小数位数) NULL|NOT NULL 或 2.ALTER TABLE DROP COLUMN 字段名 或 3.ALTER TABLE RENAME COLUMN 旧字段名 TO 新字段名 功能:修改表(自由表)的结构 说明:格式1的作用是为表添加字段(用ADD子句)或修改 表中字段的类型、长度、小数位数与是否允许NULL值等 属性(用ALTER子句)。 格式2的作用是删除表中的字段。 格式3的作用是修改表中的字段名。,用ALTER TABLE-SQL命令修改表结构(2),二、例题分析: (1)向ZGQK表中添加一个名为JJ的长度为7、小数位数为2 的数值型字段,并允许NULL值。 解:ALTER TABLE ZGQK ADD COLUMN JJ N(7,2) NULL (2)删除ZGQK表中的名为JL的字段。 解:ALTER TABLE ZGQK DROP COLUMN JL (3)将ZGQK表中名为CSRQ的字段改名为CSNY。 解:ALTER TABLE ZGQK RENAME COLUMN CSRQ TO CSNY (4)先创建一个名为XXS的表,表中两个字段XM和GZ均为字符型。然后,分别将XM字段的长度由8修改为15;GZ字段的类型由字符型改为数值型,长度不变。 解:CREATE TABLE XXS(XM C(8),GZ C(10) ALTER TABLE XXS ALTER XM C(15) ALTER TABLE XXS ALTER GZ N,记 录 的 输 入(1),VFP提供了向表中输入记录的多种方法: 1. 表结构创建后立即输入记录 2. 通过浏览窗口输入记录 (1) 单击“显示”菜单,选择下拉菜单中的,记 录 的 输 入(2),(2)单击“表”菜单,选择下拉菜单中的。 注: 方法(1)可一次输入多条记录;而方法(2)一次只能输入一条记录,需重复方法(2)的步骤才能再输入新记录。,浏览窗口,记 录 的 输 入(3),3. 通过命令输入记录: (1) APPEND 命令 语法:APPEND BLANK 功能:在表的末尾添加一空记录。 说明:该命令将打开表的浏览窗口并添加一个空记录。 若使用BLANK子句,则不打开浏览窗口自动在表的末尾添加 一个空记录。 (2)INSERT-SQL命令 语法:INSERT INTO 表名(字段1,字段2); VALUES(表达式1,表达式2) 功能:在表的末尾添加一个包含指定字段值的记录。 说明:i) (字段1 ,字段2,)指定新记录 的字段名列表,可以是部分或全部字段。如果省略,则是指 全部字段。,记 录 的 输 入(4),ii) VALUES(表达式1,表达式2,)新插入记录的字段值。如果指定的字段名是记录的部分字段,则括号中的字段值必须与指定的字段名的位置相一致;如果省略了字段名,那么必须按照表结构定义字段的顺序来指定字段值。 4. 例题分析: (1) 打开“学生成绩”表,添加一个空记录并用REPLACE命令将该记录的“姓名”字段的值设置为“李四”。 解: USE 学生成绩 APPEND BLANK REPLACE 姓名 WITH “李四” (2) 向“学生成绩”表中添加一条记录并分别设置该记录的“学号”,“姓名”,“性别”,“出生日期”等字段的值。 解: INSERT INTO 学生成绩(学号,姓名,性别,出生日期); VALUES(“960102”,“张扬”,“男”,12/23/1968),记 录 的 输 入(5),5. 从其他文件中为表添加记录: 打开表的浏览窗口,单击“表”菜单,选择下拉菜单中的。 APPEND FROM FileName Delimited|xls,浏览 窗口,此时,屏幕上会弹出“追加来源”对话框,如图所示。在该对话框中,用户可以指定源文件的类型和存储路径。通过“追加来源”对话框,用户可以方便地从文本文件、电子表格文件及其他表文件中读取内容,为当前表或视图添加记录。,记 录 的 输 入(6),记 录 的 输 入(7),6. 备注型字段与通用型字段的数据的输入 1)备注型字段 在浏览窗口中,备注型字段显示“memo”(表示无内容)或“Memo”(表示有内容)。步骤:把光标移动到备注型字段后,按下“CTRL+HOME”组合键或双击备注型字段;在出现编辑窗口中输入备注内容,结束时关闭编辑窗口。 2)通用型字段 在浏览窗口中,通用型字段显示“gen”(表示无内容)或“Gen”(表示有内容)。步骤:把光标移动到通用型字段后,按下“CTRL+HOME”组合键或双击通用型字段;在出现编辑窗口后利用菜单命令“编辑/插入对象”插入其内容,结束时关闭编辑窗口。,对于大多数应用程序而言,都需要一次使用多个表文件。为此VFP引入了工作区和表的别名两个概念。 工作区是指用以标识一个打开的表的区域。每个工作区有一个编号, VFP最多可提供32767个工作区。 表的别名是对工作区中打开的表的一个临时标识。在前10个工作区中系统指定的默认别名是字母AJ,在工作区11到32767中指定的默认别名是W11到W32767。另外,还可以使用自定义别名。若打开表时没有自定义别名,则系统默认以表文件名作为别名。在工作区中打开的表都有一个别名。 1)一个工作区在某一时刻只能打开一个表。2)如果在一个工作区中已经打开了一个表,再在此工作区中打开另一个表时,前一个表将自动被关闭。3)但可以同时在多个工作区中打开多个表。4)一个表也可在多个工作区中多次被打开。,工 作 区 与 表 的 别 名,打 开 和 关 闭 表(1),一、打开表(自由表)的操作方法 1.通过系统菜单打开表。在VFP主窗口中单击“文件”菜单,选择其下拉菜单中的,在弹出的“打开文件”对话框的选择框中选,然后选中要打开的表,再单击“确定”按钮即可。 2.通过“数据工作期”窗口打开表。在VFP主窗口中单击“窗口”菜单,选择其下拉菜单中的,或点击“常用”工具栏上的“数据工作期窗口”按钮,即可弹出“数据工作期”窗口。 单击窗口中的“打开”按钮,在弹出的“打开”对话框中选中要打开的表,再单击“确定”按钮即可。,打 开 和 关 闭 表(2),3.通过命令窗口打开表。即在命令窗口中使用 USE命令打开表: 语法: USE ALIAS 自定义别名 表别名是 VFP 用来指定在一个工作区中 打开的表的名称。在打开表时,系统自动使用该表名作为默认的表别名。但用户在打开一个表时,还可以自己定义表的别名。 二、关闭表(自由表)的操作方法 1.通过“数据工作期”窗口关闭表。在VFP主窗口中单击“窗口”菜单,选择其下拉菜单中的,或点击“常用”工具栏上的“数据工作期窗口”按钮,即可弹出“数据工作期”窗口。先选择窗口中“别名”下的列表框中的表(别名),再单击窗口中的“关闭”按钮即可关闭用户指定的表。 2.通过命令窗口关闭表。即在命令窗口中输入命令: USE 即可将打开的当前表关闭。,“数据工作期”窗口,命 令 窗 口,选择工作区打开和关闭表(1),1、 先选择当前工作区,然后用use命令打开表 选择当前工作区的命令: 语法:SELECT 工作区标号|别名 功能:选择工作区标号或别名所指定的工作区为当前工作区。 说明:工作区标号从 032767,若命令中使用了工作区标号0,则选用一个未被使用的编号最小的工作区为当前工作区。 2、 在USE命令中指定工作区打开或关闭表 语法:USE 表名 IN 工作区标号|别名 功能:选择由工作区标号或别名指定的工作区打开表。,选择工作区打开和关闭表(2),说明: (i) 若使用的工作区标号为0,则选用一个未被使用的 编号最小的工作区打开表并为当前表。 (ii) 若命令中省略了“表名”,则关闭工作区标号或别 名所指定的工作区中的表。这也是关闭非当前工作区中的表的命令方式。 (iii)若命令中省略了“IN 工作区标号|别名”,则在当前工作区中打开表。 (iv) 若只使用USE,则关闭当前工作区中已打开的表。,选择工作区打开和关闭表(3),3、例题分析: (1) 在第十二工作区中以别名XSCJ打开表学生成绩.DBF 的命令是: SELECT 12 USE 学生成绩 ALIAS XSCJ 或者 USE 学生成绩 ALIAS XSCJ IN 12,选择工作区打开和关闭表(4),(2) 在第八工作区中打开表XS.DBF,浏览其记录并关闭该表的命令是: SELECT 8 或 SELECT H USE XS BROWSE USE 或者 USE XS IN 8 或 USE XS IN H SELECT XS 或 SELECT H 或 SELECT 8 BROWSE USE 注:对110工作区可以使用系统默认的别名AJ,选择工作区打开和关闭表(5),(3) 已知在前10个工作区中打开了7个表,其中第5、 第7和第8工作区未被占用,若使用以下命令: SELECT 0 USE XS 或者 USE XS IN 0 则将在第 D 工作区中打开XS表。 A. 1 B. 7 C. 8 D. 5 (4) 现执行下列命令: USE JS IN 3 SELECT 1 USE XS 则使用以下 C 命令可关闭JS表。 A. USE B. USE IN 0 C. USE IN JS D. USE IN XS,表的独占与共享使用(1),VFP是一个多用户的编程环境。在网络上的多个用户可以在同一时刻访问一个表。同样,这也意味着一个单一的用户可以通过一个多任务的操作系统,在多个会话下多次地打开一个表。这种一个表可以同时被多个用户访问的情况,就是表的共享使用,即表以共享方式打开。反之当一个表只能被一个用户打开时,称为表的独占使用,即表以独占方式打开。 当表以共享方式打开时,不能修改表结构和物理删除表中的记录。若要对表进行上述操作,必须以独占方式打开表。 1.设置独占与共享打开表的默认状态 VFP在默认状态下是以独占方式加载的。当打开一个表时,如果没有指定用何方式打开,即用系统默认的方式打开。,表的独占与共享使用(2),系统的默认打开方式可以通过“工具”菜单中的“选项”来设置(如下图)。 或使用SET EXCLUSIVE命令来设置: SET EXCLUSIVE OFF &设置“共享”为默认打开方式 SET EXCLUSIVE ON &设置“独占”为默认打开方式,“选项”对话框,表的独占与共享使用(3),“打开”窗口,2.强行用一种方式打开表 在打开表时,亦可以用显式指定的独占或共享方式打开。 在“打开”窗口的右下角有一“独占”复选框,若打“”表示独占;否则,表示共享。在“打开”对话框或 “使用”窗口中也有同样的选择。,表的独占与共享使用(4),使用命令打开表时,可以加子句“SHARED”(共享)或“EXCLUSIVE”(独占)来指定打开方式。例如: USE XS SHARED & 以共享方式打开XS表 USE JS EXCLUSIVE & 以独占方式打开JS表 说明: 改变SET EXCLUSIVE的设置并不改变已经打开表的状态。另外,一个表同时被多次打开时,只以第一次的打开方式为准。例如,第一次是以独占方式打开一个表,则在另一个工作区中再次打开该表时,即使已指定SHARED方式,系统仍将以独占方式打开。,使 用 表 的 其 他 问 题(1),1. 在不同工作区中打开同一个表 (1)在“数据工作期”窗口中,可用前述打开表的方法在 多个工作区中打开同一个表,但不同工作区中表的别名有所不同,默认第一次打开时的表别名与表名相同,其后打开的表别名由表名加下划线和一个小写字母构成,依次为 a,b,c。(如下图),使 用 表 的 其 他 问 题(2),(2)在“命令”窗口中使用带AGAIN子句的USE命令也可以在多个工作区中打开同一个表(如下图)。与(1)不同的是,不同工作区中表的别名使用系统指定的默认别名。,表中数据的统计 (1)统计表中记录数的COUNT命令: 语法:COUNT 范围FOR 条件表达式TO 内存变量 (2)对表中数值型字段的值求平均值的AVERAGE命令: 语法:AVERAGE 数值字段名表|表达式列表范围 FOR 条件表达式TO 内存变量表|数组名 (3)对表中数值型字段的值求和的SUM命令: 语法:SUM 数值字段名表|表达式列表范围 FOR 条件表达式 TO 内存变量表|数组名 说明:该命令中表示包括如下函数任意的组合:AVG()、SUM()、MAX()、MIN()等。,使 用 表 的 其 他 问 题(3),2. 工作区的引用(命令代码方式) 在VFP中,允许用户访问(引用)非当前工作区中的表的字段。具体方法是:在其它工作区中打开的表的别名后加上点号“.”或“-”操作符,然后再接字段名(如下图)。,记 录 的 顺 序,表中记录被输入时的先后顺序叫做记录的存储顺序,又称之为记录的物理顺序。记录号表示的就是记录的物理顺序。 表打开并被使用时,表中记录的处理顺序则称为记录的逻辑顺序。逻辑顺序可以与物理顺序相同,也可以不同。 当要查找表中的记录,而表中记录数目很大时,若按其物理顺序逐条搜索,则费时较多且效率较低。 为了实现对表记录的快速查询,可以对表文件中的记录按某个字段值或某些字段值排序, 即按其逻辑顺序搜索记录。 排序的方法有两种,一是把原表记录按某个逻辑顺序重新写到一个新的表文件中,新表与原表大小相同,记录数相同,不同的仅是它们的物理顺序;二是建立一个逻辑顺序号与原表物理顺序的记录号的对照表,并把对照表保存到一个文件中。上述第二种方法,就是索引技术。若要按特定的顺序定位、查看或操作表中记录,可以使用索引。,索 引 的 概 念(1),索引(Index)是由一系列记录号组成的一个列表。记录号在列表中的顺序,是按照各个记录的索引关键字的值,从小到大或从大到小进行排列的。索引提供对数据的快速访问,可对表的各行强制实现唯一性。索引由索引序号和对应于索引序号的表的记录号(亦称为指针)组成。 1. 索引关键字(Index Key) 索引关键字是用来作为建立索引的依据。它通常是一个字段或字段表达式,有时也叫索引表达式。VFP使用索引关键字来显示和访问表中的记录。 注意:通用型字段和备注型字段不能作为索引关键字。 2. 索引表达式的构成 索引表达式的构成与一般表达式的构成一样,只是索引表达式一般与表的字段有关。索引表达式可以由单个字段构成,也可以是多个字段的组合(多字段索引)。,索 引 的 概 念(2),3. 建立“多字段索引”需注意三点 (1) 索引表达式中字段“相加”的前后顺序将影响索引的结果。 (2) 用多个“数值型”字段相加建立一个索引表达式,索引将按照这些字段的值的总和的大小,而不是字段本身对记录进行排序。 (3) 不同类型字段“相加”构成一个索引表达式时,必须用相关的系统函数将它们转换为同一类型(字符型)。 4. 索引标识(Tag) 索引标识是索引关键字的名称。可以任意指定,若索引表达式为单字段,则索引标识名也可以与该字段名重名,但必须以下划线、字母或汉字开头,并且不能超过10个字节。,索 引 的 类 型(1),从VFP索引的内容来划分,索引有4种类型:主索引、候选索引、唯一索引和普通索引。这些索引控制着在表字段和记录中是否允许或禁止重复值。 1.主索引(Primary Indexes) 在数据库表中,每张表只能创建一个主索引。组成主索引关键字的字段或表达式,在表的所有记录中不能有重复的值。例如,学生表中的学号可以创建主索引,因为在每一张表中每一个学生记录的学号值是唯一的。而学生姓名则不能建立主索引,可能有同名的学生,若建立了主索引,一旦出现同名的学生数据输入,则系统拒绝接收其数据输入。另外,自由表不能建立主索引。主索引只适用于数据库表的结构复合索引中。,索 引 的 类 型(2),2.候选索引(Candidate Indexes) 在指定的索引关键字段或索引表达式中不允许有重复值的索引。一张表中可以建立多个候选索引。候选索引可用于数据库表和自由表。 3.普通索引(Regular Indexes) 可以决定记录的处理顺序,但是允许索引关键字段或索引表达式的值出现重复。对一个表可以创建多个普通 索引。在普通索引上查找的记录不具有唯一性。例如,对教师表按工龄创建普通索引,则在工龄索引中同一个工龄值可能出现若干次(因为不能排除工龄相同的可能性)。 4.唯一索引(Unique Indexes) 参加索引的关键字段或表达式在表中可以有重复值,但在索引对照表中,重复的值仅存储一次。例如,对教师表建立以系名作为关键字段的唯一索引,在此索引上浏览教师表时,仅显示每个系的第一个教师。,索引本身并不改变表中记录的物理顺序,只是把索引保存到另一个文件中,这个文件就是索引文件。 VFP支持三种不同类型的索引文件:结构复合索引文件、非结构复合索引文件和独立索引文件。前两种文件的扩展名为CDX,独立索引文件的扩展名为IDX。结构复合索引是最普通、最重要的索引。其他两种索引文件则较少用到。 复合索引文件的含义是:可以把表的一个或多个索引存储在同一个索引文件中;而独立索引文件中只能存放一个索引。 创建索引文件的方法有两种:一是使用“表设计器”;二是使用INDEX命令。 索引的综合比较,索 引 文 件 的 类 型,索引的综合比较,创建结构复合索引文件(1),创建结构复合索引文件的方法有两种: 1. 使用“表设计器” 先打开所要处理的表,再单击“显示”菜单,从其下拉菜单 中选择“表设计器” ,在打开的“表设计器”对话框中: (1)选择选项卡,选择表中的某字段,再单击其右边 的“索引”项,从弹出的下拉列表中选择“升序”或“降序”(如图);,创建结构复合索引文件(2),(2)选择选项卡,输入索引名,选择索引类型, 输入索引表达式(如图)。索引表达式的输入也可使用“表达 式生成器”来完成。点击“表达式生成器”按钮,打开“表达 式生成器”对话框,输入相应的表达式即可。,创建结构复合索引文件(3),2.使用命令创建结构复合索引 有三种方法: (1)使用CREATE TABLE-SQL 创建表结构时,同时创建 (2)使用ALTER TABLE-SQL 修改表结构时,再创建 (3)使用INDEX命令创建表的索引 使用CREATE TABLE-SQL 创建表结构时,同时创建 格式: CREATE TABLE 表名 (字段名 类型(宽度) PRIMARY KEY|UNIQUE) 其中: PRIMARY KEY 为主索引 UNIQUE 为候选索引,例:在JXSJ数据库中创建X1表,其结构要求:工号(GH,C,6)为主索引,姓名(XM,C,6)为候选索引的命令是: OPEN DATABASE JXSJ &打开JXSJ数据库 CREATE TABLE X1 (GH C(6) PRIMARY KEY,XM C(6) UNIQUE) 例:在JXSJ数据库中创建X2表,其结构要求:工号(GH,C,6),姓名(XM,C,6)为主索引,基本工资(JBGZ,N,8,2)为候选索引的命令是: OPEN DATABASE JXSJ &打开JXSJ数据库 CREATE TABLE X2 (GH C(6) ,XM C(6) PRIMARY KEY,JBGZ N(8,2) UNIQUE) 说明: 要创建主索引,只在字段后面添加“PRIMARY KEY” 要创建候选引,只在字段后面添加“UNIQUE”,创建结构复合索引文件(4),使用ALTER TABLE-SQL 修改表结构时,再创建 格式: ALTER TABLE 表名 ADD PRIMARY KEY|UNIQUE 字段名 TAG 标识名 例:在JXSJ数据库中已创建X3表,其结构是:工号(GH,C,6),姓名(XM,C,6),要求将工号创建为主索引的命令是: OPEN DATABASE JXSJ &打开JXSJ数据库 CREATE TABLE X3(GH C(6) ,XM C(6) ) ALTER TABLE X3 ADD PRIMARY KEY GH TAG GH 例:在JXSJ数据库中已创建X4表,其结构是:工号(GH,C,6),姓名(XM,C,6),基本工资(JBGZ,N,8,2),要求将姓名创建为候选索引的命令是: OPEN DATABASE JXSJ &打开JXSJ数据库 CREATE TABLE X4(GH C(6) ,XM C(6) ,JBGZ N(8,2) ALTER TABLE X1 ADD UNIQUE XM TAG XM 说明: 要修改主索引,只在字段后面添加“ADD PRIMARY KEY” 要修改候选引,只在字段后面添加“ADD UNIQUE”,使用INDEX命令创建表的索引 INDEX ON TO 索引名| TAG OF 组合索引名 FOR 条件表达式 ASCENDING | DESCENDING UNIQUE |CANDIDATE 其中: INDEX *创建索引的命令字 ON *创建一个关键字段表达式 TO 索引名 *创建指定的索引名 TAG OF 组合索引名 *指定索引的标识名 FOR 条件表达式 *筛选指定的条件表达式 ASCENDING *索引按升序排列 DESCENDING *索引按降序排列 UNIQUE *创建唯一索引 CANDIDATE *创建候选索引 如果无UNIQUE或CANDIDATE,则创建普通索引 注意:用INDEX命令不能创建主索引,主要格式: INDEX ON TO 索引名 &生成独立索引,扩展名为 .IDX INDEX ON TAG OF 组合索引名 &生成非结构复合索引,扩展名为 .CDX 例:对学生表创建各种索引 USE XS INDEX ON XH TAG XH 创建结构复合索引(普通索引),在表设计器中有 INDEX ON XH TO XHIDX 创建普通索引,在表设计器中无,“表达式生成器”对话框,设 置 主 控 索 引(1),一个打开的表可以同时打开多个索引文件(独立的或复合的),但要决定显示或访问表中记录的顺序,还要设置一个索引作为主控索引(MASTER CONTROLLING INDEX)。主控索引可以是复合索引(.CDX)文件中的一个标识(主控标识),或者是一个独立索引(.IDX)文件(主控索引文件)。 在复合索引文件所包含的多个索引中,在某一时刻只有一个索引对表起作用,则这个索引标识称为主控索引标识(MASTER CONTROLLING TAG)。虽然结构复合索引文件是随表的打开而自动打开的,但结构复合索引文件中的任何一个索引却不会被自动设置为主控标识,此时,表中的记录仍按记录的物理顺序显示和访问。除非在打开表时指定某一索引标识为主控标识,或在表打开后,再用其他命令设置主控索引。,设 置 主 控 索 引(2),设置主控索引的方法有下列几种: 1.在“工作区属性”窗口中设置 先打开要操作的表及表的相关索引文件,然后在“数据 工作期”窗口中点击其中的“属性”按钮;或打开表的“浏览” 窗口,点击“表”菜单,选择其下拉菜单中的“属性”,均可打 开“工作区属性”窗口。,设 置 主 控 索 引(3),点击“索引顺序”下的下拉列表框右侧的按钮,即可列 示出当前已打开的索引文件中的多个索引,从中选择一个, 即将选中的索引设置为主控索引。 2.使用命令设置 (1)打开表的同时指定主控索引 语法: USE ORDER ,Close tables all Use xs order xh Use xs in 0 alias xs2 again order xb,例如:,设 置 主 控 索 引(4),(2)先打开表再设置主控索引 先用USE命令打开表,再使用如下命令设置主控索引: 语法:SET ORDER TO Tag名 IN 工作区|别名 ; ASCENDING|DESCENDING 如果发出 SET ORDER TO 0 命令,则所有已打开的索引文件仍保持打开状态。但是,表中所有记录的显示和访问顺序是记录的物理顺序而不是索引所要求的逻辑顺序,即该命令的功能为取消主控索引的设置。SET ORDER TO 命令与 SET ORDER TO 0 命令的功能完全一样。 说明: 若在命令中使用IN 工作区|别名子句,则可以为指定工作区中已打开的表(非当前表)设置主控索引。,索 引 的 修 改 与 删 除,1.索引的修改 (1)用表设计器修改索引 对于已建的结构复合索引文件,可以在表设计器中,利 用“索引”选项卡来修改一个索引的标识名、类型以及表达式 等。 (2)用命令修改索引 如果不修改索引标识,可以再用INDEX命令建立同标识名的索引,当系统提示“标识已存在,改写吗?”时,选择“是”,就把原索引覆盖了。 2.索引的删除 删除的方法有两种: 在表设计器中,利用“索引”选项卡来选择并删除索 引标识; 用DELETE TAG命令删除索引标识。命令格式如下: 语法:DELETE TAG 标识名1 ,标识名2 或者 DELETE TAG ALL,表建立了索引后,可以使用SEEK命令或SEEK()函数进行表中记录的快速查找。 1.SEEK命令 在一个表中搜索首次出现的一个记录,这个记录的索引关键字必须与指定的表达式匹配。 语法:SEEK 表达式 ORDER Tag名; ASCENDING|DESCENDINGIN 工作区|别名 参数:表达式指定SEEK搜索的索引关键字,利用索引快速查找记录(1),利用索引快速查找记录(2),说明:SEEK命令只能在索引过的表中使用,并且只能搜索索引关键字。 如果SEEK找到了与索引关键字相匹配的记录,则RECNO()函数返回匹配记录的记录号;FOUND()函数返回“真”(.T.);EOF()函数返回“假”(.F.)。 如果找不到相匹配的关键字,则RECNO()将返回表中记录的个数加1;FOUND()返回“假”(.F.);EOF()返回“真”(.T.)。 例如,在XS表中要定位到学号为960102的记录上,则当前主控索引的索引关键字必须是XH或是以XH开头。 USE xs ORDER TAG xh SEEK “960102“,利用索引快速查找记录(3),2. SEEK()函数 SEEK()函数同先执行SEEK命令然后执行FOUND()函数的结果一样。 语法:SEEK (表达式 ,工作区|别名 , Tag名) 3.索引的其他用法 索引除了可以指定表记录的访问顺序和进行快速定位以外,还可以利用索引建立表之间的永久关系和临时关系。有关内容将在下一章中介绍。,有关表操作的几个函数(1),(1)SELECT() 语法:SELECT(0|1|别名) SELECT()函数用来测试工作区号。 其中:0用于返回当前工作区号;1表示返回当前未被使用的最大工作区号;别名用于返回该表所在的工作区号。使用别名必须加引号。 (2)USED() 语法:USED(工作区 | 别名) USED()函数用于测试一张表的别名是否已被使用,或在指定的工作区中是否有表打开。 (3)ALIAS() ALIAS( 工作区) ALIAS函数用于返回当前或指定工作区中表的别名。,有关表操作的几个函数(2),(4)FIELD() 语法:FIELD(字段序号,工作区 |别名) 本函数用于返回已打开表的指定序号的字段名。 (5)FCOUNT() 语法:FCOUNT( 工作区 |别名) 本函数用于返回已打开表的字段个数。 (6)DELETED() 语法:DELETED() 本函数用于测试表的当前记录是否带有删除标记。 如果带有则返回.T.,否则返回.f.。,建 立 “多 字 段” 索 引(1),索引表达式可以由单字段构成,也可以是两个以上字段的组合。现举例说明建立“多字段索引”的方法。 例题分析: 已知XSCJ表的结构如下: 字段名 字段类型 字段长度 小数位数 XH C 8 XM C 8 XB L 1 CSRQ D 8 XIMING C 18 YWCJ N 5 1 SXCJ N 5 1 WYCJ N 5 1 JL M 4,建 立 “多 字 段” 索 引(2),各字段名的含义如下: XH-学号;XM-姓名;XB-性别;CSRQ-出生日期; XIMING-系名;YWCJ-语文成绩;SXCJ-数学成绩; WYCJ-外语成绩;JL-简历。 试按以下要求用命令方式建立结构复合索引: (1)将XS表中的记录先以XIMING排序,XIMING相同的 再以XM排序,XM相同的再以XH排序,索引标识名为XXX1。 (2)将XS表中的记录先以XM排序,XM相同的再以SXCJ 排序;SXCJ相同的再以CSRQ排序,索引标识名为XXX2。 (3)将XS表中的记录以学生的总成绩的降序排序,索 引标识名为XXX3。 解: (1) INDEX ON XIMING+XM+XH TAG XXX1 (2) INDEX ON XM+STR(SXCJ,5,1)+DTOC(CSRQ); TAG XXX2 (3) INDEX ON YWCJ+SXCJ+WYCJ TAG XXX3 DESC,记 录 的 浏 览(1),查看表中记录内容的方法有以下几种: 一、使用“浏览”窗口 先将要查看的表打开并选定为当前表,然后从“显示”菜单中选择或在“数据工作期”窗口中点击“浏览”按钮,均可打开“浏览”窗口。,记 录 的 浏 览(2),“浏览”窗口显示活动表中的记录。在“浏览”窗口中浏览一个表时,可以用两种方式查看记录:浏览和编辑。可以在“显示”菜单中选择或切换查看方式(必须先打开表的“浏览”窗口)。,记 录 的 浏 览(3),二、使用BROWSE命令 BROWSE命令用来打开表的浏览窗口。BROWSE命令可以简单到只有BROWSE一个词,也可以复杂到具有几十个选项,用以定制浏览窗口的外观、控制记录的编辑和筛选浏览的记录、字段等。对此,不必一一究其用法,掌握几个常用的选项即可。 语法:BROWSE FIELDS FOR 三、在VFP主窗口中显示记录 除了以上两种方法外,还可以用LIST和DISPLAY命令将表中记录显示在系统主窗口中。 语法:LIST FIELDS 范围 FOR OFF DISPLAY FIELDS 范围 FOR OFF 说明:二者的区别是:前者的范围选项的默认值为所有记录(ALL),后者为下一条记录(NEXT 1);前者在窗口显示满后,将不停顿的连续显示,后者会做一停顿,等待用户按任意键继续显示。,记 录 的 浏 览(4),四、例题分析 (1)用BROWSE命令显示JS表中所有男教师的GH、XM、XB、ZC等字段的内容(如图所示)。,记 录 的 浏 览(5),(2)在VFP主窗口中显示JS表中所有男教师的GH、XM、 XB、ZC等字段的内容(如图所示)。,记 录 的 定 位(1),1.记录指针标志 当一个表文件被打开后,系统中自动生成三个控制标志: 记录的开始标志、记录指针标志、记录的结束标志。当向表中输入数据时,VFP为每个记录按输入顺序指定了“记录号”。第一个输入的记录的记录号是1,依次类推。(如图),记 录 的 定 位(2),记录指针是一个非常重要的概念。它是VFP系统内部的一个指示器,指向表中的记录,每当打开一个表文件时,记录指针总是指向第一个记录。记录指针指向的那个记录称为当前记录。可以将记录指针理解为保存当前记录号的变量。在进行数据处理时,经常要移动记录指针,使记录指针指向用户所需要操作的那个记录,这个过程即是记录的定位。测试当前记录指针的值可用函数REC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论