数据表的设计与操作.ppt

上传人:牧羊曲112 文档编号:6578961 上传时间:2023-11-14 格式:PPT 页数:97 大小:885.50KB
返回 下载 相关 举报
数据表的设计与操作.ppt_第1页
第1页 / 共97页
数据表的设计与操作.ppt_第2页
第2页 / 共97页
数据表的设计与操作.ppt_第3页
第3页 / 共97页
数据表的设计与操作.ppt_第4页
第4页 / 共97页
数据表的设计与操作.ppt_第5页
第5页 / 共97页
点击查看更多>>
资源描述

《数据表的设计与操作.ppt》由会员分享,可在线阅读,更多相关《数据表的设计与操作.ppt(97页珍藏版)》请在三一办公上搜索。

1、Visual FoxPro数据库技术及应用第 4 章,数据表的设计与操作,2,第 4 章,4.1 数据表建立与修改4.2 表的基本操作 4.3 表的排序与索引 4.4 数据表的统计与汇总 4.5 工作区4.6 多表连接,3,数据表的分类数据表可被分成自由表和数据库表两种。自由表独立存在于任何数据库之外,而数据库表则包含于某个数据库中,作为数据库的一个组成部分。自由表和数据库表可以相互转换。同一个数据库表不能同时包含于两个数据库中。,4.1 数据表建立与修改,4,4.1.1 建立表结构,一、建表之前的准备设计一张二维表,要完成以下内容的设计:1.表名2.栏目名3.表的内容二、设计表结构设计数据表

2、,要完成以下内容的设计:1.定义表名 定义表名,就是定义表文件的名称,它是该文件存储到磁盘的唯一标识2.定义表的字段 表的字段属性即表的组织形式,它包括表中的字段个数,每个字段的名称、类型、宽度及是否建立索引等。3.建立表结构,5,创建表有直接创建和间接创建两种。而直接创建包括定义表结构和输入表记录两部分的操作,且总是先定义结构,然后才输入记录。创建数据表的三种方法:(1)命令方式:CREATE/?(2)表向导(3)表设计器,三、建立表结构,6,字段类型及命名,三、建立表结构,(1)字段名:必须以字母或汉字开头,可以包括字母、汉字、数字和下划线,不要超过10个字符。示例:姓名、XB、班级BJ、

3、班级2、班级_2 _XM、2班、“成绩”、班级:姓名(2)字段类型:共13种。(3)字段宽度:不同类型的字段具有不同的宽度。(4)小数位:数值型数据需要规定小数位数。(5)使用NULL值:可以指定字段是否接受NULL值,它是一个不存在的值。,7,选择菜单:文件新建表新建文件 为该数据表命名输入各字段的相关信息(包括索引等)结构存盘。“表设计器”窗口见图,1)使用表设计器创建表,8,2)用命令创建数据表,格式:(1)CREATE:弹出表设计器(2)CREATE TABLE(类型符(字段宽度,小数位,)例如:CREATE TABLE 职工表(职工号 C(11),姓名 C(6),性别 C(2),出生

4、日期 D,党员否 L,基本工资 N(7,2)该语句将创建一个“职工表”,该表含有4个字段:职工号:字符型,宽度11,姓名:字符型,宽度6,性别:字符型,宽度2,出生日期:日期型,宽度8(自动定义,党员否:逻辑型,基本工资:数值型)。,字段名和字段类型之间要空格,9,3)利用表向导创建表,操作步骤如下:(1)选择菜单:文件新建表向导(2)在“表向导”的窗口进行操作:步骤1:选择“样表”并确定可用字段。确定表是否存放在数据库中。步骤2:可对已选定的字段属性进行修改和确认。步骤3:可以为表建立索引。步骤4:确定表保存方式。,10,可以利用已打开的一个或多个数据表来生成一个新表。1、复制当前表到指定的

5、新表中 COPY TO 新表 FIELDS 字段名表2、复制当前表的结构到指定的新表中 COPY STRU TO 新表 FIELDS 字段名表说明:1)若省略FIELDS 字段名表,则默认全部字段2)“新表”自定义名称,也是一个.DBF文件,间接创建表,11,1.定义完表结构后直接输入记录(立即方式),四、输入表记录,定义完表结构后,出现询问框时,选择“是”将调用一个编辑窗口,用户可以开始在该窗口中输入记录内容,记录输入完毕后,关闭窗口,或按Ctrl+W键就可以保存输入的内容。,12,2.在浏览窗口中添加记录(表格方式),四、输入表记录,打开表文件后,使用命令:BROW 在浏览窗中,此时并不能

6、追加新的记录,但是可以通过菜单进入追加状态,它有如下几种情况:1)选择菜单显示-追加方式-可以追加任意多条2)选择菜单表-追加新纪录-只能追加一条3)选择菜单表-追加纪录-可以从其它表中成批追加,13,3.使用命令添加记录(追加方式),四、输入表记录,打开表文件后,使用命令:APPEND 追加新的记录,总是加在文件之后,14,4.备注型数据的输入,备注型字段的输入:把光标移到备注型字段下双击鼠标左键,进入相应的编辑窗口进行输入。,四、输入表记录,Ctrl+w存盘退出,5.通用型数据的输入,通用型字段的输入:把光标移到通用型字段下双击鼠标左键,进入相应的编辑窗口,再点击【编辑】-【插入对象】,1

7、5,对表结构的修改包括对原有字段的字段名、类型和宽度及可能有的小数位数的更改,增加新的字段和删除已有字段等。1)可以在表设计器中修改表的结构,2)可以利用命令自动地完成对表结构的修改。,4.1.2 修改表结构,16,利用菜单命令:在VFP的主窗口中,选择“显示表设计器”项,便可在屏幕上显示出一个表设计器,其所包含的内容是当前表的结构信息若表设计器标题出现“只读”,则要以独占方式重新打开,1)通过表设计器修改表结构,17,(1)增加新的字段(一个命令只能加一个字段)ALTER TABLE 数据表名 ADD COLUMN 字段名 字段类型符(宽度,小数位)该命令用来在指定的数据表末尾添加一个新的字

8、段。对于字符型字段和数值型字段,必须明确指定其宽度及必要的小数位。常用的字符类型符有:C-字符型 N-数值型 D-日期型 T-日期时间型 L-逻辑型 M-备注型 G-通用型,2)使用ALTER TABLE命令修改结构,18,(1)增加新的字段(一个命令只能加一个字段)【例4-1】为教师信息表添加C型字段和D型字段。Alter Table 教师信息表 Add 部门 C(10)Alter Table 教师信息表 Add 毕业日期 D,2)使用ALTER TABLE命令修改结构,19,(2)删除已有字段 ALTER TABLE 数据表名 DROP COLUMN 字段名 该命令用来删除指定数据表中的一

9、个已有字段。(3)更改已有字段的类型或宽度 ALTER TABLE 数据表名 ALTER COLUMN 字段名 字段类型符(宽度,小数位)该命令用来修改指定数据表中已有字段的类型或宽度。(4)更改已有字段的字段名 ALTER TABLE 数据表名 RENAME COLUMN 旧字段名 TO 新字段名 该命令用来更改指定数据表中已有字段的名字。,2)使用ALTER TABLE命令修改结构,20,实例1:在“学生表”表中增加新字段“班级”ALTER TABLE 学生表 ADD COLUMN 班级 C(2)实例2:在“学生表”表中删除字段“籍贯”ALTER TABLE 学生表 DROP COLUMN

10、 籍贯实例3:在“学生表”表中将字段“姓名”的宽度修改为8 ALTER TABLE 学生表 ALTER 姓名C(8),实例:ALTER TABLE命令修改结构,可省略,可省略,21,4.2 表的基本操作,一、打开数据表 可以用多种方法来打开一个数据表1、使用菜单命令选择文件打开在“文件类型”中,选择“表”选择所需dbf文件,数据表的打开和关闭,22,2、用USE命令 USE ALIAS Exclusive/Shared 该命令用来打开一个已存在的数据表,并为该表指定一个别名。带有Exclusive子句时,该数据表是以独占方式打开的,而带有Shared子名时,则指定该表以共享方式打开。默认为独占

11、的。3、通过“数据工作期”打开选择窗口数据工作期 打开,数据表的打开和关闭,23,二、关闭数据表1、Use In 工作区号/别名 该命令只能用来关闭一个数据表,当带有IN时,所关闭的是在指定工作区中所打开的或由别名所标示的数据表;如果不带IN,则关闭当前数据表 2、CLOSE TABLE3、CLOSE ALL4、CLEAR ALL,数据表的打开和关闭,24,4.2.2 表的浏览,显示表中数据:包括表结构的显示和表记录的显示两种情况。可利用表设计器来显示出表结构,也可在VFP的主窗口中显示表的结构;类似地,可在浏览或编辑窗口中显示表的记录,也可在VFP的主窗口中显示表的记录数据,而更多的是在表单

12、中以用户指定的格式来显示记录。,25,1、在表设计器中显示 选择“显示表设计器”项,会调出一个表设计器,同时把当前表文件的结构描述信息在表设计器中显示出来2、通过执行命令显示格式:LIST STRUCTURE 或 DISPLAY STRUCTURE示例:USE 学生表 LIST STRU,一、显示表结构,26,1、在浏览窗口中显示选择菜单显示浏览执行BROWSE命令2、执行LIST/DISP命令格式:LIST/DISPLAY OFF FIELDS WHILE FOR 说明:的可选值包括:ALL:全部记录。RECORD n:第n条记录。NEXT n:从当前记录开始以下的N条记录。REST:从当前

13、记录开始到文件末尾的所有记录。,二、显示表记录,OFF表示不显示记录号,27,显示表记录实例-1,USE 学生表LIST FOR 性别=“男”LIST FIELDS 学号,姓名,性别LIST 姓名,性别,出生日期 FOR 出生日期 CTOD(01/01/83)DISPLISTDISP ALL,选择(横向)投影(纵向)投影+选择显示当前一条记录滚动显示所有记录分屏显示所有记录,或1983-1-1,28,显示表记录实例-2,USE 学生表LIST FOR 性别=女.and.团员否=.T.(显示女团员)团员否 等价于 团员否=.T.LIST FOR 性别=男.and.团员否=.F.(显示男生非团员)

14、.NOT.团员否 等价于 团员否=.F.LIST FOR 姓名=李(显示姓李的学生)LIST FOR 姓名!=陈(显示不姓陈的学生)LIST FOR 姓名=李.or.姓名=陈(显示姓陈和姓李的学生),29,4.2.3 记录指针的定位,记录指针:用来指示表文件中记录位置的指针。当前记录:指针当前所指向的记录。指针可以指向三个不同的位置:某个具体的记录,该记录就是当前记录文件开头位置,这时BOF()函数值为.T.文件末尾,这时EOF()函数值为.T.,30,4.2.3 记录指针的定位,一、记录指针的绝对定位1、用GOTO命令定位格式:GO/GOTO RECORD GO/GOTO TOP/BOTTO

15、M说明:GOTO TOP:移指针到第一个记录 GOTO BOTTOM:移指针到最后一个记录 GOTO RECORD n:移指针到第n号记录 n移指针到第n号记录(注意:指针移到记录号时,go/goto/record都可以省略),示例:USE 学生表 3(或GO 3)DISP GOTO RECN 5 DISP GO BOTT DISP,31,2、使用菜单实现,在浏览窗口中:选择表转到记录出现一个级联菜单(如图)选择“第一个”、“最后一个”或“记录号”,32,1、用SKIP命令格式:SKIP+/-说明:N0指针向下移动n个记录N0 指针向上移动n个记录若省略n 指针下移1个记录2、选择菜单项在浏览

16、窗口中,选择“表转到记录”项,二、记录指针的相对定位,示例:USE 学生表 DISP SKIP DISP SKIP 3 DISP SKIP-2 DISP SKIP 6 DISP,33,三、记录指针的条件定位,1、用LOCATE命令 LOCATE FOR 条件 范围 从指定范围的第一个记录开始按顺序查找满足条件的记录,找到时移指针到该匹配记录,这时FOUND()函数值为.T.,否则FOUND()函数值为.F.,这时记录指针或者移到文件末尾(范围为ALL、REST时),或者移到指定范围的最后一个记录(范围为NEXT n、RECORD n时)。,34,1、LOCATE和CONTINUE命令定位格式:

17、LOCATE FOR WHILE示例:USE 学生表 LOCATE FOR 班级=2 DISP CONTINUE DISP LIST WHILE 班级=2,当状态栏出现:“已到定位范围末尾”EOF()为真,Found()为假,三、记录指针的条件定位-1,35,2、选择菜单项定位在浏览窗口中:选择表转到记录出现一个级联菜单选择“定位”在“定位记录”的“FOR”中输入条件表达式,三、记录指针的条件定位-2,36,4.2.4 插入与追加记录,一、插入记录格式:INSERT BEFORE BLANK说明:INSERT:在当前记录之后插入记录INSERT BEFORE:在当前记录之前插入记录INSERT

18、 BLANK:在当前记录之后插入一个空白记录INSERT BEFORE BLANK 在当前记录之前插入一个空白记录,37,记录的插入实例,实例:在第5条记录之后插入一条新记录方法1:Go 5INSERT 再输入记录内容方法2:GO 5INSERT BLANKBROW 再在空白记录中输入记录内容,方法3:Go 6INSERT BEFORE再输入记录内容方法4:GO 6INSERT BLANK BEFOREBROW 再在空白记录中输入记录内容,38,二、追加记录,格式:APPEND:在表末尾添加一个或多个记录。APPEND BLANK:在表末尾添加一个空白记录。【例4-1】用APPEND 命令追加

19、记录 USE 教师信息表Append,39,1、在浏览窗口或编辑窗口中进行编辑 打开一个库文件后,选择“显示浏览”项或执行BROWSE命令便会调出一个浏览窗口,而执行EDIT或CHANGE命令则可以调出一个编辑窗口,此后便可以对显示在窗口中的字段值进行人工修改了。2、对成批记录的指定字段值进行替换1)在浏览/编辑窗口中实施成批替换 在浏览/编辑窗口中,选择“表替换字段”项便可进行成批替换操作。,4.2.5 修改记录,40,2)执行REPLACE命令格式:REPLACE WITH,WITH FOR WHILE 功能:修改表字段值说明:范围:ALL/NEXT n/REST(从当前记录直到结束)FO

20、R:遍历整个表WHILE:从当前记录起,直到第一个不满足条件的记录止,4.2.5 修改记录,41,实例1:将“学生表”中第4个记录的姓名 改为“李青”,性别“女USE 学生表GO 4DISPREPLACE 姓名 WITH“李青”,性别 WITH“女“DISP实例2:将“学生表”中前4个记录的班级置1,剩余的置2USE 学生表 Replace 班级 WITH 1 NEXT 4&当前指针4skipReplace 班级 WITH 2 REST,更新表记录实例,42,4.2.6 删除与恢复记录,记录有逻辑删除和物理删除两种情形1)逻辑删除:只是在数据表中作删除标记,记录仍然存在,可以用SET命令控制能

21、否访问这些被删除的数据。一旦需要,还可以取消删除。2)物理删除:从数据表中永远删除记录内容,这种删除是不可恢复的。,43,1、在浏览窗口中删除记录,1)删除记录选择表删除记录或单击窗口最左边的删除栏逻辑删除标记为一黑色小方块见右图第3、5条记录2)恢复记录再次单击黑色小方块3)彻底删除记录 为需要删除的记录添加逻辑删除标记后选择【表】【彻底删除】命令,44,(1)DELETE命令和DELETE()函数格式:DELETE WHILE条件 FOR条件示例:USE 学生表 GO 6 DELETE LISTBrow可以使用DELETED()函数判断。其语法如下:DELETED(工作区/别名)如:?DE

22、LETED(教师信息表),2、通过命令删除记录,用BROW显示时:被删记录前带黑色小方块用LIST显示时:被删记录前带*号,45,【例4-1】使用DELETE命令逻辑删除记录。先使用COPY TO命令对“教师信息表”进行备份,复制得到的新表为“新教师信息表”,然后对新表进行DELETE操作,删除基础工资小于950的记录,最后把逻辑删除后的数据表记录情况在浏览窗口中显示出来。USE 教师信息表COPY TO 新教师信息表USE 新教师信息表DELETE FOR 基础工资950BROWSE,2、通过命令删除记录,46,也可以用DELETE-SQL语句来逻辑删除记录。DELETE-SQL语句的常用格

23、式:DELETE FROM 数据库名!数据表名 WHERE 条件式【例4-22】使用DELETE-SQL命令逻辑删除记录。DELETE FROM 新教师信息表 WHERE 基础工资950LIST【例4-23】使用DELETED()函数对数据表进行逻辑删除判断。USE 新教师信息表BROWSE FOR DELETED(),2、通过命令删除记录,47,格式:SET DELETED ON/OFF说明:用于是否显示被删除记录示例:USE 学生表 GO 3 DELETE next 4 LIST SET DELETE ON LIST,使用SET DELE命令控制删除记录显示否,On 时不显示被删除记录,4

24、8,1)使用RECALL命令恢复格式:RECALL FOR WHILE 示例:USE 学生表 GO 6 DELETE DISP GO 6 RECALL DISP,3、恢复逻辑删除的数据,2)在浏览/编辑窗口中实施恢复记录 单击窗口最左边的删除栏,或选择“表恢复记录”命令项,都可以对带有逻辑删除标记的记录去掉其逻辑删除标记,49,【例4-25】使用RECALL命令恢复记录。USE 教师信息表GOTO 3?DELETED()&屏幕显示为.T.RECALL ALLLIST,3、恢复逻辑删除的数据,50,以下2条命令将永久删除表中记录,不可恢复!1)删除已经逻辑删除的记录格式:格式:PACK功能:对于

25、已经逻辑删除的记录实行物理删除示例:USE 学生表 LIST PACK LIST2)删除表中所有记录格式:ZAP说明:SET SAFETY ON/OFF打开“安全确认”开关,这样在执行ZAP时,会弹出一个“删除确认”的对话框,询问是否真的要删除。,4、物理删除表中记录,51,1.表结构的复制(1)复制当前表结构到指定新表中 格式:COPY STRUCTURE TO FIELDS 说明:该命令从当前表结构中选出全部或部分指定的字段,复制到新表中,新表只有结构,没有任何记录。,4.2.7 表结构和数据的复制,【例4-26】复制教师信息表的表结构到另一个新的数据表中。USE 教师信息表COPY ST

26、RUCTURE TO 教师信息表结构&执行后,“教师信息表结构”的表结构与“教师信息表”相同,但记录数为0USE 教师信息表结构LIST STRUCTURE&显示当前表的表结构,52,4.2.7 表结构和数据的复制,1.表结构的复制(2)利用当前表结构生成一个结构描述文件格式:COPY STRUCTURE EXTENDED TO FIELDS 说明:根据当前数据表的结构来生成一个新的数据表,所生成的数据表称为结构描述文件。,53,2、表数据的复制格式:COPY TO FIELDS FOR 说明:该命令将指定范围内满足条件的记录复制到指定的表中,每个记录可只包含由FIELDS指定的字段,省略FI

27、ELDS时则复制所有字段,该命令复制的内容包括表结构和表记录。,表结构和数据的复制,【例4-27】复制“教师信息表”中基础工资大于1600的记录到另一个新的数据表中。USE 教师信息表COPY TO 教师信息表2 FIELDS 姓名,性别,电话 FOR 基础工资1600USE 教师信息表2List,54,改变数据表记录的逻辑顺序,可以有两种方法:排序:物理的调动数据记录的排列顺序,然后把这些顺序调整的结果保存于一个新的表中。索引:依据某种排列规则来生成一张按某个表达式值顺序排列的索引表,这种方式没有调动表的物理位置,而是通过索引表来影响数据表中记录的操作顺序。,4.3 数据表的排序和索引,55

28、,(1)数据表的排序:把数据表文件中的记录按照某个字段值的大小顺序重新排列。(2)关键字:作为排序依据的字段。(3)升序:按照关键字值从小到大的顺序进行排序。(4)降序:按照关键字值由大到小的顺序进行排序。(5)数据大小的比较规则:如果是数值型、日期型的数据进行比较,则由其本身的大小决定;字符型数据由其ASCII码值确定,汉字由机内码确定大小。,1.几个概念,4.3 数据表的排序和索引,56,格式:SORT TO ON/A/D,/A/DASCENDING/DESCENDING FOR WHILE FIELDS 说明:排序结果产生一个新的.DBF文件,要按排好的顺序显示,打开这个文件。示例1:U

29、SE 学生表 SORT TO STU1 ON 班级,姓名/D USE STU1 LIST,4.3.1 数据表的排序,示例2:USE 学生表SORT TO STU2 ON 学号 FOR 班级=“1”USE STU2LIST,57,4.3.1 数据表的排序,【例】对“教师信息表”进行多重排序,按基础工资降序排列,基础工资相同的再按职称升序排列。USE 教师信息表SORT TO JCGZ1 ON 基础工资/D,职称USE JCGZ1LIST,【例】对“教师信息表”的部分记录进行排序。USE 教师信息表SORT TO T1 ON 职称 FOR 性别=”男”NEXT 8 FIELDS 姓名,性别,职称,

30、电话USE T1LIST,58,4.3.2 数据表的索引,为什么使用索引?1)排序造成了数据冗余,浪费存储空间2)如果对数据表文件进行增、删、改操作时,需要重新进行排序什么是索引文件?1)索引文件是由指针构成的,这些指针逻辑上按照索引关键字进行排序。2)索引文件和表文件分别进行存储,并不改变表中记录的物理位置。,59,按性别建立索引示意图,模拟索引表,物理顺序,逻辑顺序,执行命令:Index on 性别 to xbBrow索引文件储存的是指针,60,1.索引文件的种类,(1)普通索引文件:扩展名为.IDX,(也称独立索引)其各个索引文件只能包含一个单一的关键字或者组合关键字。(2)复合索引文件

31、:扩展名为.CDX,在一个复合索引文件中可以包含多个索引选项,每个索引选项叫做索引标识(Index Tag)。复合索引文件有两种类型:结构复合索引文件(主文件名与数据表的主文件名相同)独立复合索引文件(主文件名与数据表的主文件名不同),61,2.索引类型,普通索引:允许关键字具有相同的值唯一索引:允许关键字具有相同的值,若有多个,只取第一个,其他跳过候选索引:不允许关键字具有相同的值,他可以作为主键的候选关键字,一个数据表可以有多个候选索引主索引:不允许关键字具有相同的值,一个数据表只能有一个主索引(只有数据库表才有)不能对备注型或通用型字段建立索引;不要建立多余的无用的索引,会降低系统性能;

32、关键字由多个字段组成时要注意数据类型的一致。若类型不同,要转换为相同类型,62,3.建立索引(表设计器),1)在表设计器中建立索引在“字段”选项卡可建立普通索引在“索引”选项卡则可建立任意索引在自由表中不可能建立一个主索引。说明:使用表设计器建立的索引都是.CDX必须激活后才起作用,63,格式1(建立.IDX索引文件):INDEX ON TO FOR UNIQUE COMPACT ADDITIVE说明:关键字表达式:只能升序,不能降序索引文件名:独立索引UNIQUE:对于一个索引关键字值,只有第一个满足该值的记录包含在.IDX 文件中。COMPACT:可以创建一个压缩的.IDX 文件ADDIT

33、IVE:所有已打开的索引文件保持打开状态。如省略该子句,则此时,关闭所有已打开的索引文件,2)使用命令建立独立索引,64,独立的 单索引只能升序,不能降序,独立的 组合索引,实例:对于“学生表”表建立.IDX索引文件(普通索引)USE 学生表 INDEX ON 班级 TO BJ LIST INDEX ON 班级+姓名 TO BJXM LIST INDEX ON 出生日期 TO CSRQ FOR 性别=“女”LIST,用命令建立普通索引实例,65,格式2(建立.CDX索引文件)INDEX ON TAG ASCENDING/DESCENDING说明:关键字表达式:可以升序,也可以降序 ASCEND

34、ING:升序(默认)DESCENDING:降序 TAG:创建一个复合索引文件。复合索引文件是一种可包含任意数量的独立标识(索引项)的索引文件,每一个标识都由其唯一标识名确定。复合索引文件中的标识数目仅受可用内存和磁盘空间的限制。,3)使用命令建立复合索引,66,实例:USE 学生表INDEX ON 入学日期 TAG dd DESCLISTINDEX ON 性别+班级 TAG xbnjLISTINDEX ON 性别 TAG xb教师信息表SET DATE ANSIINDEX ON 职称+dtoc(工作日期)TO zcdd,类型要一致,使用命令建立复合索引实例,类型要一致,67,普通索引与复合索引

35、特点比较,普通索引:多个索引产生多个索引文件,学生表,XB.IDX,BJ.IDX,CSRQ.IDX,按性别,按出生日期,按班级,普通索引:(单索引)多个索引产生多个索引文件,复合索引:多个索引在一个索引文件中,学生表,学生表.CDX标记:XB标记:BJ标记:CSRQ,68,只有数据表存在活动索引时,该索引表才会影响数据表记录的操作顺序。,4、使用索引,69,(1)打开数据表文件的同时打开索引文件,格式:USE INDEX 示例:USE 学生表 INDEX bjUSE 学生表 INDEX bj,bjxb,1)索引文件的打开与关闭,(2)在数据表文件己经打开的情况下打开索引文件,格式:SET IN

36、DEX TO 示例:USE 学生表 SET INDEX TO bj,xb,70,在打开的索引文件中设置主控索引,格式:SET ORDER TO/TAG 示例1:在打开的多个索引中,为学生表指定主控索引,71,为学生表指定主控索引,USE 学生表SET INDEX TO bj,xb&第一个bj默认为主控索引LISTSET ORDER TO 2&改变主控索引为第2个LISTSET ORDER TO 0&取消主控索引LIST,72,(1)哪些索引是激活状态?使用命令建立的索引(无论是.IDX还是.CDX),在创建后都是激活状态,若马上显示或做其他操作,则按索引顺序。(2)哪些索引是没有激活的?已经建

37、立的索引但是被关闭(随着表的关闭)再次打开表,却没有打开索引使用表设计器建立的索引.CDX,创建后处于“沉睡”状态,以上几种情况索引必须激活后才会影响表记录的操作顺序,2)索引的激活,73,两种方法用来激活索引(指定活动索引):1)在打开数据表时同时指定活动索引 USE 数据表名 ORDER 索引标记2)用命令指定主索引 SET ORDER TO 索引标记/索引序号,2)索引的激活,74,打开、激活复合索引示例,USE 学生表INDEX ON 性别 tag xb(建立3个索引标记,方法类似)以下创建索引后再次打开USE 学生表 ORDER xb&激活xbSET ORDER TO 2&激活csr

38、qSET ORDER TO 3&激活xm说明:对于.CDX类型的索引,它不存在“打开”的问题,只需要激活,它的顺序是tag创建的物理顺序(见图),75,普通索引与复合索引使用比较,创建索引:INDEX ON 性别 TO xb&产生xb.idx文件INDEX ON 性别 TAG xb&在CDX文件中产生标记xb打开索引:SET INDEX TO xb复合索引随DBF文件打开自动打开激活索引:(设置主控索引)SET ORDER TO 索引序号(已打开的多个索引)SET ORDER TO 索引标记/序号(CDX文件中的顺序号),76,3)索引的关闭、删除和重新索引,1)索引文件的关闭格式:CLOSE

39、 ALL或 CLOSE INDEXES2)重新索引格式:REINDEX(先要打开所有相关索引)3)删除索引格式:DELETE TAG 索引标记表/ALL,77,格式1:FIND 数值常量/字符串常量/&C型内存变量 根据所给出的常量或宏替换函数值查找字段值相匹配的记录。格式2:SEEK 表达式功能:根据表达式值查找字段值相匹配的记录 查找相匹配记录后,指针指向所找到的记录,FOUND()函数值为.T.,否则指向文件末尾,5、索引查询,78,1)FIND命令:指向表中相匹配的第一个记录,格式:FIND 示例:USE 学生 INDEX ON 籍贯 TAG jg find 广东?FOUND()DIS

40、P 或nm=“广东”FIND&nm DISP,1)索引查找-FIND命令,USE 学生INDEX ON 籍贯 TAG jgINDEX ON 专业 TAG zy,79,格式:SEEK ORDER/IDX/TAG OF ASCENDING/DESCENDING,SKIP DISP NN=男 SEEK NN(FIND&NN)DISP,2)SEEK命令,示例:USE 学生INDEX ON 专业 TAG zyseek 计算机DISPSET INDEX TO xbSEEK“女DISP,打开索引后,Skip 按索引跳转,80,统计是数据库必不可少的功能之一,统计总是对数据表进行的。VFP提供了许多用于统计的

41、命令和函数。汇总是对数据进行分类合计,在进行汇总操作之前,必须先将数据表中分类字段值相同的记录排列,也就是说必须先对分类字段进行排序或索引。,4.4 数据表的统计与汇总,81,1.计数命令格式:COUNT TO FOR WHILE 功能:统计出当前数据表指定范围中满足指定条件记录的数目,并可把求得的记录数保存于变量中。示例:USE 学生 COUNT FOR 专业=“土木工程 TO AA?AA COUNT TO BB&计算总记录数?BB,4.4.1 数据表的统计,82,【例】统计“教师信息表”性别为男的记录数。USE 教师信息表COUNT TO N?N,RECCOUNT()&屏幕显示为:13 1

42、3COUNT TO N1 FOR 性别=“男”?N1&屏幕显示为:9DELETE ALLCOUNT TO N2 FOR NOT DELETED()?N2&屏幕显示为:0RECALL ALLGOTO 5COUNT TO N3 NEXT 5 FOR DELETED()?N3&屏幕显示为:0,统计记录数例子,是否存在被删记录,83,格式:SUM TO SUM TO ARRAY FOR WHILE 功能:对当前数据表的指定或全部数值字段按字段表达式分别求和,求得的结果可保存于一个或多个变量中,也可保存于一个数组中。示例:USE 教师信息表 LIST SUM 基础工资 FOR 职称=讲师 TO CJ S

43、UM 基础工资 TO JCGZ FOR 性别=“男”?CJ,JCGZ,2.求和命令,84,格式:AVERAGE TO/TO ARRAY FOR WHILE 功能:对当前数据表的指定或全部数值字段按字段表达式分别求其平均值,求得的结果可保存于一个或多个变量中,也可保存于一个数组中。示例:USE 学生表 LIST AVERAGE 年龄 FOR 专业=经济法 TO N?N,3.求平均值命令,85,格式:TOTAL TO ON FIELDS FOR WHILE 说明:1)当前表必须按进行过排序或索引 2)保存汇总结果的新数据表中不含有M型字段。3)只对数值型字段汇总功能:对当前数据表记录按关键字值进行

44、分类,关键字值相同的记录被分在同一类,然后分别对每类记录进行合并汇总,同类记录汇合成一个记录,最后把汇总所得的所有记录存入指定的数据表中。,4.4.2 分类汇总,86,【示例1:】对“教师信息表”按“职称”进行分类汇总。USE 教师信息表 LIST INDEX ON 职称 TO zc TOTAL ON 职称 to aaa USE aaaCOPY TO bbb FIELDS 职称,基础工资 USE bbb LIST,4.4.2 分类汇总,87,【示例2:】对“教师信息表”按“文化程度”字段进行分类汇总。USE 教师信息表INDEX ON 文化程度 TAG 文化程度TOTAL ON 文化程度 TO

45、 WHCDUSE WHCDLIST,4.4.2 分类汇总,88,4.5.1 工作区的概念 1.工作区与当前工作区 在VFP中,数据表总是在工作区中打开的。一个工作区在同一时间只能打开一个数据表;在同一工作区,如果打开另一个新数据表时,则自动关闭原先打开的数据表。最多可使用32767个工作区。选择工作区:对前10个工作区,也可用SELECT AJ来选择0是一个特殊的工作区,它代表当前未使用的最小工作区编号。当前工作区和当前数据表:执行SELECT命令所选择的工作区称为当前工作区。在当前工作区中打开的数据表称为当前数据表,4.5 工作区,89,2.别名每次打开一个数据表,VFP都会为该数据表指定一

46、个别名,该别名可以通过执行以下命令来指定:格式:USE ALIAS 说明:1)当执行不带ALIAS可选项时,该数据表的别名与数据表同名。2)在一些VFP命令中可以访问多个已打开数据表中的字段,但此时除了当前工作区中打开的表的字段以外,其它表的字段名前都要加上工作区别名和分隔符,书写格式如下:别名.字段名或:别名字段名,工作区的概念,90,格式:SELECT/功能:选择指定的工作区作为当前工作区。,4.5.2 指定工作区,【示例】工作区的选择和切换CLOSE ALL&关闭所有表文件及其索引文件USE 教师信息表&在1号工作区打开教师信息表SELECT 0&选择未使用的最低号工作区,即2号工作区U

47、SE 学生表 ALIAS XSB&打开学生表,别名为 XSBUSE 成绩表 IN D&在4号工作区打开成绩表SELECT XSB SELECT D&选择4号工作区为当前工作区,91,4.6.1 多表临时关联 建立表与表之间的关联可以使得两个表的记录指针同时移动,当父表(当前表)中的指针移动时,被关联的表(子表)的指针也会跟着移动。一般通过字段名来关联两个数据表,要求建立关联的两个表中必须有公共字段,且子表必须按这个公共字段(或由这个公共字段复合构成的关键字表达式)建立索引并激活索引。,4.6 多表连接,92,格式:SET RELATION TO/INTO/,/INTO/ADDITIVE说明:1

48、)数据表之间的关联,叫做“临时关系”,在数据库中建立的关系,叫做“永久关系”2)的值必须是相关联的两个表文件共同具有的字段,表文件必须已经按关键字表达式建立了索引文件并处于打开状态。,多表临时关联,93,说明:3)当两个表文件建立关联后,当前表文件的记录指针移到某一记录时,被关联的表文件的记录指针也自动指向关键字值相同的记录上。如果被关联的表文件具有多个关键字值相同的记录,则指针只指向关键字值相同的第一条记录。如果被关联的表文件中没有找到匹配的记录,指针指向文件尾,即函数EOF()的值为.T.。,4.6.1 多表临时关联,94,【例】数据表临时关系的建立。操作步骤如下:(1)打开“学生选课”表(子表),以“学号”为关键字设置索引。SELECT AUSE 学生选课INDEX ON 学号 TAG XH(2)打开“学生”表(父表),选择“学生”表所在工作区为当前工作区。SELECT BUSE 学生(3)建立临时关系。SET RELATION TO 学号 INTO ABROWSESELECT A BROWSE,4.6.1 多表临时关联-例,注意:子表要建立索引,而父表不必。,95,4.6.1 多表临时关联-例,96,4.6.2 表间物理连接,表间的物理连接也就是表间的永久连接,只有数据库表之间才可以建立永久连接,在本书的节将做详细的介绍。,97,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号