440 likes | 600 Views
任务三 如何用表准备数据结构和数据内容. 内容提要 : 表的概念及其基本操作 索引与排序的概念及其建立 学习目的与要求: 了解表的概念及索引的概念 熟悉表的建立及其基本操作 掌握索引的建立 重点: 掌握表的建立及其基本操作; 难点: 表结构的修改,索引概念的理解. 任务三 如何用表准备数据结构和数据内容. 认识表并创建表. 第一讲. 表的基本操作. 第二讲. stop. 索引和排序. 第三讲. 自由表的基本操作. 实训四. 第一讲 认识表并创建表. 授课内容: 表的基本概念 创建表 修改表结构
E N D
任务三 如何用表准备数据结构和数据内容 • 内容提要: 表的概念及其基本操作 索引与排序的概念及其建立 • 学习目的与要求: 了解表的概念及索引的概念 熟悉表的建立及其基本操作 掌握索引的建立 • 重点:掌握表的建立及其基本操作; • 难点:表结构的修改,索引概念的理解
任务三 如何用表准备数据结构和数据内容 认识表并创建表 第一讲 表的基本操作 第二讲 stop 索引和排序 第三讲 自由表的基本操作 实训四
第一讲 认识表并创建表 • 授课内容: 表的基本概念 创建表 修改表结构 • 学习目的: 了解表的基本概念 熟悉表结构的组成及创建表的两种方法 掌握表结构的创建及修改 • 重点:掌握表结构的创建及修改 • 难点:灵活掌握修改表结构的方法
任务一:创建学生表,学生表结构为:学号,字符型,宽度为8,姓名,字符型,宽度为8,性别,字符型,宽度为2,民族,字符型,宽度为10,出生日期,日期型,宽度为8,简历,字符型,照片,通用型任务一:创建学生表,学生表结构为:学号,字符型,宽度为8,姓名,字符型,宽度为8,性别,字符型,宽度为2,民族,字符型,宽度为10,出生日期,日期型,宽度为8,简历,字符型,照片,通用型 创建课程表,字段包括课程编号,课程名称,课程类别,课时,学分 • 任务二:在创建表结构完成时输入记录 • 任务三:修改表结构,在学生表中增加字段班级,字符型,宽度为10,将民族字段的宽度改为12,将简历改为备注型
3.1 表的基本概念 VFP中的表指的是存放在磁盘上的二维表,其扩展名为.dbf,当表中有备注型或通用型字段时,系统自动生成与表文件同名的.fpt备注文件 一个表文件由表名、表结构和表记录三要素组成。表结构描述了数据存放形式以及存贮的顺序,确定了表的字段,就完成了对表结构的定义;表记录是表所要保存的数据主体,数据由记录组成,字段是构成记录的基本单元。 建立一个表文件首先第一步就是建立表结构,然后再输入表记录。
例如要建立本章所用的学生.dbf,表内容如下:例如要建立本章所用的学生.dbf,表内容如下:
3.2 创建表 一、利用表设计器创建表 建立表结构的方法有多种,这里主要讲两种: 1.菜单方式 选择“文件”菜单中的“新建”命令打开“新建”对话框,选择“表”,单击“新建文件”,在出现的“新建”对话框中进行相关操作。 2.命令方式 【格式】CREATE [<表文件名> | ?] 【功能】建立一个扩展名为.DBF的表文件。若缺省扩展名,则默认为.DBF。
不论采用哪种方法都要打开表设计器窗口。如图所示。不论采用哪种方法都要打开表设计器窗口。如图所示。 • 表设计器对话框中包含“字段”、“索引”、“表”三个选项卡。 • “字段”选项卡:适用于建立表结构,确定表中每个字段的字段名、字段类型、字段宽度和小数位数等。 • 字段名:是某字段的名字。在表中必须唯一。以汉字、字母和下划线开头,由汉字、字母、数字和下划线组成。
字段类型:表示该字段中存放数据的类型。若存储的字符超过254,为节省存储空间可定义为备注型。若要保存图片或OLE对象,可定义为通用型。备注型和通用型字段的信息都没有直接存放在表文件中,而是存放在一个与表文件同名的.FPT文件中。字段类型:表示该字段中存放数据的类型。若存储的字符超过254,为节省存储空间可定义为备注型。若要保存图片或OLE对象,可定义为通用型。备注型和通用型字段的信息都没有直接存放在表文件中,而是存放在一个与表文件同名的.FPT文件中。 • 字段宽度:表示该字段所允许存放数据的最大宽度。例如:字符型字段的最大宽度254个字符,数值型字段和浮点型字段的宽度为20位,逻辑型字段的宽度固定为1,日期型字段的宽度固定为8,通用型字段和备注型字段的宽度固定为4。 • 小数位数:只对数值型字段和浮点型字符等数值类型有效,允许最大宽度20。在计算数值型字段和浮点型字段的宽度时,小数点本身也算作一个字符。数值型字段的小数位数由数据的精度决定位数。
二、 使用表设计器修改表结构 在VFP中,表结构可按用户需要进行任意修改:增加、删除字段;可以修改字段名、字段类型、字段宽度和小数位数;可以建立、修改、删除索引;可以建立、修改、删除有效性规则等。 • 打开表设计器的方法: ①打开表后,在“显示”菜单中执行“表设计器”命令, ②在命令窗口执行MODIFY STRUCTURE命令。 • 说明: 修改表结构和建立表时的表设计器界面完全一样。在表设计器中可以完成对表结构的修改。
修改表结构 • 修改已有的字段 直接修改字段的名称、类型和宽度。 • 增加新字段 确定好要插入新字段的位置,单击“插入”命令按钮,输入相应字段内容。 • 删除不用的字段 将光标定位在要删除的字段上,然后单击“删除”命令按钮。 如果在刚建好表结构时,在系统提示是否立即输入记录的对话框中选择“是”可直接进入输入记录窗口。如果选择了“否”,再想输入表记录就要以追加方式输入记录。 输入表记录的方法见下节的相关操作。 返回 结束
第二讲 表的基本操作 • 授课内容: 表的打开、关闭 表中记录的操作 • 学习目的: 熟悉常用命令的格式及使用 熟悉并掌握对表、记录的操作方法 • 重点:掌握表中记录的追加、删除方法 • 难点:对命令的理解及使用
任务一:打开学生表,浏览,显示表中记 录,为简历,照片编辑内容 • 任务二:将记录指针指向4号记录,逻辑删除 4,5,7号记录,彻底删除5号记录 • 任务三:在表末尾增加4条记录
3.3 表的基本操作 包括如下操作: • 表的打开和关闭 • 表记录的浏览 • 表记录的编辑修改 • 表中记录的追加 • 表中记录的删除 • 显示记录 • 记录的定位
一、表的打开、关闭和显示 • 表的打开和关闭 格式:USE [表名] 功能:打开或关闭表。 说明:如果选择表名,则打开表,否则关闭表。使用菜单方式打开表和数据库的建立方法类似。 • 表的显示 【格式】 LIST | DISPLAY [FIELDS <字段名表>][<范围>] [FOR<条件>] 【功能】将当前表文件的记录按照指定的选项进行显示。 【说明】①DISPLAY命令与LIST命令的功能相似,当表文件的数据记录较多时,用DISPLAY命令较为方便。② 如果同时缺省<范围>和<条件>子句,DISPLAY命令只显示当前的一条记录,而LIST命令则是取默认值ALL而显示全部记录。
FOR<条件>:指定对表文件中指定范围内满足条件的记录进行操作。FOR<条件>:指定对表文件中指定范围内满足条件的记录进行操作。 FIELDS <字段名表>:用来指定显示的字段。 <范围>:用来指定显示哪些记录。 “范围”有以下四种表示方法: ● ALL:所有记录。 ● NEXT N:从当前记录开始,后面的N条记录(包括当前记录) ● RECORD N:第N条记录。 ● REST:当前记录后的全部记录(包括当前记录)。 • 示例 例1、显示表学生.DBF的全部记录。 USE 学生 LIST 则会在主窗口显示所有学生记录的内容。
例2、显示男生记录的指定字段内容。 USE 学生 DISPLAY FOR 性别 FIELDS 学号,姓名,入学成绩 例3、显示表中所有记录的学号、姓名和性别。 USE 学生 LIST FIELDS 学号, 姓名, 性别 例4、显示表中1981年出生的学生的学号、姓名、性别及出生日期。 USE 学生 LIST FIELDS 学号,姓名,性别,出生日期 FOR YEAR(出生日期)=1981
二、 表记录的浏览 • 在项目管理器中将数据库展开至表,并且选择要操作的表,单击“浏览”命令按钮。如图所示:
在数据库设计器中右击要浏览的表,在快捷菜单中选择“浏览”命令。在数据库设计器中右击要浏览的表,在快捷菜单中选择“浏览”命令。 • 在命令方式下,先用USE命令打开表,然后执行BROWSE命令。 注意: • 在表的浏览窗口中可进行记录的添加、修改和删除等操作。 • 可以直接关闭浏览窗口退出浏览状态。
三、表中记录的追加 • 在表的浏览窗口可进行记录的追加 打开表的浏览窗口,执行显示菜单中的“追加方式”命令,即可进行记录的添加。 • 使用命令APPEND和INSERT • APPEND命令 格式:APPEND [BLANK] 功能:在表的尾部追加新记录。 说明:有[BLANK]选项表示在表尾追加一条空白记录。 • INSERT 格式:INSERT [BEFORE] [BLANK] 功能:在表的任意位置插入一条新记录。 说明:如果有[BEFORE] 选项,指在当前记录之前插入新记录,系统默认在当前记录之后插入。
四、表记录的编辑修改 • 可在表的浏览窗口进行记录的编辑修改 • 使用EDIT和CHANGE命令交互式地修改 • 使用REPLACE命令进行直接修改 • 格式 REPLACE <字段名1> WITH <表达式1> [,<字段名2> WITH <表达式2> ,…] [FOR <条件>] • 功能 直接利用表达式替换字段的值,从而达到修改记录值的目的。 • 说明 一次性可修改多个字段,如果不使用FOR短语,则默认修改当前记录,否则修改满足条件的记录。 例如:给当前表所有女生的入学成绩加20分。 REPLACE 入学成绩 WITH 入学成绩+20 FOR NOT 性别
五、表中记录的删除 表记录的删除分逻辑删除和物理删除两步进行。逻辑删除还可以恢复,而物理删除则不可恢复。 1.逻辑删除记录 逻辑删除就是给指定的记录加删除标记“*”。 • 命令方式 【格式】DELETE [<范围>] [FOR <条件>] [WHILE <条件>] 【功能】对当前表中指定范围内满足条件的记录作删除标记“*”。 【说明】DELETE命令仅仅是在要删除的记录前加上一个删除标记“*”,并不是真正地从表文件中将该记录删除掉。可以用LIST或DISP命令显示带删除标记的记录。 <范围>、FOR<条件>、WHILE<条件>等各项选项意义同前;如果同时缺省<范围>和 <条件>子句,则仅仅删除当前的记录。
例如:删除学生.DBF中所有男同学的记录。 USE 学生 DELETE FOR 性别 LIST 则在主窗口显示的学生表中的所有男生记录均加上了“*”。 • 菜单方式 ① 首先打开表文件。 ② 选择【显示】|【浏览】命令,系统弹出记录浏览窗口,在主菜单上增加【表】菜单项。 ③ 选择【表】|【删除记录】命令,出现如图所示的“删除”对话框。在该对话框中进行如图所示的设置,单击“删除”按钮,系统将完成对指定范例内满足指定条件的记录的逻辑删除。
3.恢复逻辑删除记录 恢复逻辑删除是将被逻辑删除的记录恢复为正常记录。 命令方式 【格式】RECALL [<范围>] [FOR <条件>][NOOPTIMIZE] 【功能】将当前表文件中指定范围内满足条件的已作删除标记“*”的记录恢复。 注意:该命令与DELETE相对应,它可以去掉被逻辑删除的记录的删除标记“*”。如果同时缺省<范围>和 <条件>子句,则仅仅恢复当前记录。 例如:恢复学生.DBF中删除的所有记录。 USE 学生 RECALL ALL 菜单方式 在表的浏览窗口为当前窗口的情况下,执行【表】|【恢复记录】命令,出现类似逻辑删除时的对话框。其它操作与“删除”对话框的操作相同。
4. 物理删除记录 物理删除是将当前表文件中被逻辑删除的记录从表中彻底删除。 • 命令方式 【格式】PACK 【功能】将当前表文件中所有带“*”的记录真正地从表中删除掉。 【说明】执行该命令后被删除的记录将不能被恢复,因此应慎重使用。 例如:将学生.DBF中的姓名为“王丽”的记录进行物理删除。 USE 学生 DELETE FOR 姓名=”王丽” PACK • 菜单方式 打开表的浏览窗口,选择【表】|【彻底删除】命令,在弹出的对话框单击“是”按钮,完成物理删除过程。
注意:用户也可以在EDIT、CHANGE、BROWSE窗口中,按Ctrl+T键对当前记录作(或取消)删除标记,也可以用鼠标单击记录最左边的删除标记栏作(或取消)删除标记。 5.删除全部记录 【格式】ZAP 【功能】将当前打开的表文件中的所有记录完全删除掉。 说明:该命令只是删除表中的全部记录,并没有删除表,执行完该命令后的表是一个空表。
六、记录的定位 • 记录号用于标识数据记录在表文件中的物理顺序。记录指针是一个指示器,它始终指向当前表中正在操作处理的那条记录,此记录被称为当前记录。如果要对某条记录进行处理,必须移动记录指针,使其指向该记录。在任意时刻指针只能指向唯一的一条记录。 • 记录指针定位有绝对定位、相对定位和查询定位三种。 1. 绝对定位 【格式】GO | GOTO <数值表达式> 【功能】将记录指针绝对定位到<数值表达式1>指定的记录 说明:此处的<数值表达式>指明记录的物理记录号。绝对定位与是否打开索引文件没有关系。 例如:USE 学生 GO 5
2.相对定位 【格式1】SKIP [<数值表达式>] 【功能】记录指针从当前记录向前(或向后)移动若干个记录。 【说明】 • <数值表达式>:表示移动的记录个数。若数值表达式的值为负值,表示向前移动记录;否则,表示向后移动记录。如果缺省此项,则表示向后移动1个记录。 • 如果记录指针已经移过文件的最后一个记录,则RECNO()函数返回的值等于文件中的记录总数加 1,EOF()函数返回逻辑真(.T.)值。 【格式2】GO|GOTO <TOP|BOTTOM> 【功能】将记录指针移动到表文件的首记录或尾记录
相对定位与是否打开索引文件有关。如果打开有索引,记录指针按索引文件中顺序移动。否则按表文件中物理顺序移动。相对定位与是否打开索引文件有关。如果打开有索引,记录指针按索引文件中顺序移动。否则按表文件中物理顺序移动。 例如:相对定位的用法。 USE 学生 SKIP 4 &&当前记录为5 SKIP –3 &&当前记录为2 SKIP 8 &&当前记录为10 GO TOP&&当前记录为1 SKIP &&当前记录为2
3. 查询定位 • 命令方式 【格式】LOCATE [<范围>] FOR<逻辑表达式> 【功能】在表指定范围中查找满足条件的记录。 【说明】该命令在表指定范围中查找满足条件的第一条记录。 <逻辑表达式1>:表示所需满足的条件。 <范围>:指定查找范围,缺省时为ALL,即在整个表文件中查找。 找到第一条满足条件的记录后,记录指针指向该记录,并将函数FOUND()(用于检测是否找到满足条件的记录)置为.T.;否则,记录指针指向<范围>的底部或文件结束标志,并且将函数FOUND()置为.F,并在状态栏给出提示信息“已到定位范围末尾”。
该命令的最大特点是可以在没有进行排序或索引的无序表中进行任意条件的查询,这是索引查询做不到的,但在大型表中查询速度和效率也是最低的。该命令的最大特点是可以在没有进行排序或索引的无序表中进行任意条件的查询,这是索引查询做不到的,但在大型表中查询速度和效率也是最低的。 CONTINUE命令 • LOCATE找到第一条满足条件的记录后,可以用CONTINUE继续查找下一个满足条件的记录。 • CONTINUE命令必须在LOCATE命令之后使用,否则出错。在CONTINUE命令中实际隐含了前一个LOCATE命令中的条件。 例如:在学生.DBF中查找学号前四位为0102的同学记录。 USE 学生 LOCATE FOR LEFT(学号,4)=“0102” ?RECNO()&&在主窗口中显示第一个满足条件的记录号5 CONTINUE ?RECNO()&&在主窗口中显示第二个满足条件的记录号6
菜单方式 打开表的浏览窗口,选择【表】|【转到记录】|【定位】命令,打开定位记录对话框。和前面删除记录的操作类似,然后单击“定位”按钮。系统将指针定位于符合条件的第一条记录上。 返回 结束
第三讲 索引和排序 • 授课内容: 表中记录的物理排序 索引的概念 索引的建立 索引的使用 • 学习目的: 了解索引和排序的概念及索引文件的类型 熟悉四种索引索引的特点 掌握索引的创建及物理排序的方法 • 重点:掌握索引的创建及物理排序的方法 • 难点:索引概念的理解
任务一:在学生表中,以学号建立候选索引,在任务一:在学生表中,以学号建立候选索引,在 课程表中以课程编号简历候选索引,以 课程名称建立普通索引 • 任务二:指定课程编号为当前索引,在该索引方 式下浏览表中数据, • 任务三:对课程表中的课时按降序排序,并生成 新的表course • 任务四:思考索引和排序的含义
3.4 排序和索引 为了高效方便地存取数据,往往要求表记录以某一定的顺序排放或显示,因此,Visual FoxPro提供了两种方法重新组织数据,即排序和索引。 • 排序是从物理上对表进行重新整理。按照指定的关键字段来重新排列表中数据记录的顺序,并产生一个新的表文件。由于新表的产生既费时间也浪费空间,实际中该命令很少使用。 • 索引是从逻辑上对表进行重新整理,按照指定的关键字段的建立索引文件。一个表文件可以建立多个索引文件,但对于打开的表文件,任何时侯只有一个索引文件起作用,此索引文件称为主控索引。
一、表的物理排序 【格式】SORT TO <新表名> ON <字段1> [/A | /D] [/C] [, <字段2> [/A | /D] [/C] ...][ASCENDING | DESCENDING] [<范围>] [FOR <逻辑表达式1>] 【功能】对当前打开的表,按指定的字段进行排序,生成新的表文件。 说明: • 该命令中的范围、条件的含义同前。 • 用作排序的字段的数据类型允许是N、C、D、L型。 /A 表示升序 ,/D 表示降序,/C 表示不区分大小写。 • 当有多个关键字段时,先按字段1的值排列,其值相同的,再按字段2的值排列。 • 原表中的记录发生变化,排序产生的新表文件不能自动完成同步修改。 • 该命令执行后,当前表不变,产生的新表不会自动打开。 例如:SORT TO 学生1 ON 入学成绩/D
二、索引的基本概念 索引是以索引文件的形式存在的,根据指定的索引关键字表达式建立。索引文件可以看成索引关键字的值与记录号之间的对照表,关键字可以是一个字段,也可以是几个字段的组合。在建立索引文件时,把表所有记录的索引关键字表达式的值按指定顺序排序,并把每个索引关键字表达式值与该值在表中所对应的记录对应起来,保存在索引文件中。 索引文件必须与原表一起使用。查询时根据索引关键字表达式的值先在索引文件中找到某字段所在的记录号,然后再到表里直接定位。打开索引文件时,将改变表中记录的逻辑顺序,但并不改变表中记录的物理顺序。 建立索引的主要目的是为了提高查询速度,另一方面,索引也是进行其它一些操作的基础,如建立表之间的联系等。但是维护索引是要付出代价的,当对表进行插入、删除和修改时,系统会自动维护索引,即索引会降低插入、删除和修改等操作的速度,所以建立索引也有个策略问题。
一个表文件可建立多个索引文件。Visual FoxPro系统中支持两种不同的索引文件类型,即单独索引文件和复合索引文件。 • 单独索引文件是根据一个索引关键字表达式(或关键字)建立的索引文件,文件扩展名为.IDX,它可用INDEX命令建立。 • 复合索引文件是指索引文件中可以包含多个索引标识的扩展名为.CDX的文件。每一个索引标识均有一个特殊的标识名(TAG)。复合索引文件又有两种:一种是非结构复合索引文件;另一种是结构复合索引文件。 • 结构复合索引文件的主名与相应的表文件同名,扩展名为.CDX。该索引文件随表文件的打开而自动打开;在同一个索引文件中可包含多个索引关键字。 • 非结构复合索引文件不与表文件同名,扩展名为.CDX。在打开表时不会自动打开此索引文件,必须使用命令打开。
索引可分为下列四种类型: • 主索引 • 主索引是一个不允许在指定字段和表达式中出现重复值的索引。每一个表只能建立一个主索引,只有数据库表才能建立主索引。 • 侯选索引 • 侯选索引和主索引具有相同的特性。数据库表和自由表都可以建立侯选索引,一个表可以建立多个侯选索引。 • 唯一索引 • 系统只在索引文件中保留第一次出现的索引关键字值。数据库表和自由表都可以建立唯一索引。一个表可以建立多个唯一索引。 • 普通索引 • 允许关键字值的重复出现数据库表和自由表都可以建立普通索引。一个表可以建立多个普通索引。
三、索引文件的建立 • 菜单方式 ① 打开表文件。 ② 选择【显示】|【表设计器】命令,打开表设计器对话框,选择“索引”标签。 ③ 在索引名中输入索引标识名,在类型的下拉列表框中确定一种索引类型,在表达式中输入索引关键字表达式,在筛选中输入确定参加索引的记录条件,在排序序列下默认的是升序按钮,单击可改变为降序按钮。 ④ 确定好各项后,选择“确定”,关闭表设计器,同时索引建立完成。 ⑤ 同样的方法也可以将以前建立的索引调出,利用表设计器上的“插入”或“删除”按钮进行插入或删除。 注意:用表设计器建立的索引都是结构复合索引文件。
四、使用索引 1. 索引文件的打开 结构复合索引文件随着表的打开而自动打开,而对于其他的索引文件则必须使用命令将其打开。 【格式】SET INDEX TO <索引文件列表> 功能:在已打开表文件的前提下,打开相关索引文件。 【说明】 • <索引文件名表>:指定要打开的索引文件,索引文件中的文件扩展名可以省略,但如果存在同名的单索引文件和复合索引文件,必须带扩展名。 • 执行该命令后,索引文件列表中的第一个索引文件成为主控索引文件。
2.索引文件的关闭 结构复合索引文件不能用以上命令关闭,它随表文件的打开而打开,随表文件的关闭而关闭。其它索引文件必须使用命令关闭。 【格式1】USE 【功能】关闭打开的表文件及所有索引文件。 【格式2】SET INDEX TO 【功能】关闭打开的所有单索引文件和独立复合索引文件。 3. 使用索引快速定位 【格式】SEEK <表达式> [ORDER <数值表达式>]| [[TAG] 索引标识] 【说明】当表中的记录很多时,此命令可以进行快速查找。 例如:USE 学生 SEEK ‘01010002’ ORDER 学号
4. 改变当前的索引 【格式】SET ORDER TO [<数值表达式1>|[TAG]<标识名> [ASCENDING|DESCENDING] 【功能】重新指定主索引或当前的索引项。 【说明】<数值表达式1>的值为指定主索引的编号。 例1、打开学生.DBF表文件及其相关索引文件,并指定结构复合索引文件中的姓名为主控索引。 USE 学生 SET ORDER TO TAG 姓名 5. 索引的删除 删除索引的方法是在表设计器中使用“索引”选项卡选择并删除索引。也可使用如下命令删除结构索引。 【格式】DELETE TAG <标识名>|ALL 【说明】选择<标识名>删除指定的索引名,选择ALL删除所有的索引名。 返回 结束
实训四 自由表的基本操作 一、实训目的 • 熟练掌握自由表的创建及数据的输入方法 • 熟练掌握表的编辑、修改、表记录的删除、索引的建立等基本操作 二、实训内容 • 自由表的创建,包括表结构的建立和表记录的输入 • 表文件的打开和关闭、记录的追加、编辑、删除、定位 • 表结构的显示和记录的显示 • 表中索引的创建,查看索引信息及记录排序 三、实训步骤 • 参照实训书 返回 结束