数据库应用基础教程_第1页
数据库应用基础教程_第2页
数据库应用基础教程_第3页
数据库应用基础教程_第4页
数据库应用基础教程_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

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

文档简介

1、数据库应用基础教程中南大学出版社中南大学出版社3 数据表的基本操作3.1 数据表的建立3.2 数据表的打开与关闭3.3 数据表的显示3.4 数据表的修改3.5 记录的定位、增加与删除3.6 数据表的复制3.7 数据表的排序与索引3.8 数据表的统计 3.9 数据表的查询3.1 数据表的建立建立表时,首先要对所处理的对象进行调查分析,再根据需要设计一张二维表。当表的行、列个数及每列中数据的属性确定后,再把数据集合在其中即可。下面将以人事档案表的设计过程为例,具体介绍Visual FoxPro系统中表的建立过程。1. 1. 定义表中的数据类型定义表中的数据类型(1)定义二维表名 设计一张二维表,首

2、先要给表起个名字。 (2)二维表栏目设计 首先确定表中有几个栏目,然后根据每一个栏目所含内容的不同设计栏目标题和属性。由此,决定每一列存放的数据的内容和属性。栏目一旦被设定,表的总体框架也就设计完成,就可以依照数据的属性将数据填入表中。 (3)填写二维表的内容表3-0 人事档案基本情况部门部门编号编号编号编号姓名姓名性性别别婚婚否否出生年月出生年月职称职称基本工资基本工资吉祥物吉祥物简历简历1010013王 强男T1963.5.7讲师245(略)(略)1010073冯跃峰男F1975.8.23助教165(略)(略)2020001郑明亮男T1950.12.13教授390(略)(略)3030475

3、戴博雅女T1958.02.09副教授305(略)(略)0101001向 静女F1968.10.15讲师225(略)(略)1010014夏有福男T1965.03.08工程师225(略)(略)0303004吴 宏女T1964.07.23高级工程师270(略)(略)0101127裴天曾男T1935.10.30教授520(略)(略)2020019张怀鸣女T1968.11.23助教179(略)(略)0202476李树龙男F1975.05.23助理工程师179(略)(略)返回表3-1从上表可以看到,它是由以下几部分组成的: 表的名字(标题):每张表都有一个名字,是用来概括表的内容。例如上表的名字为“人事档

4、案基本情况”。 表中每一列的栏目标题序列为表头,它标明了每一列对应数据的属性。例如在表中的编号、姓名、出生年月、简历等等,即是表头。 表中每一行的数据是表的内容,由每行中具体的数据项内容组成的,它标明了某一事物的基本内容。例如在上表中,第二行反映的便是王强的个人情况。 在Visual FoxPro 系统中,一张二维表对应一个数据表,称为表文件(Table)。 一张二维表由表名、表头、表的内容三部分组成,一个数据表则由数据表名、数据表的结构、数据表的记录三要素构成。 数据表的文件名相当于二维表中的表名,它是数据表的主要标识,用户可以依靠数据表名在磁盘上存取、使用指定的数据表。 数据表的结构相当于

5、二维表的表头,二维表的每一列对应数据表中的一个字段,其属性决定了字段名、字段类型和字段长度。 数据表中的记录是数据表中不可分割的基本项,即二维表中的表的内容。一个数据表的大小,主要取决于它拥有的数据记录的多少。不包含记录的数据表称为空表。 定义数据表的结构,就是根据二维表的定义来确定数据表的结构。即确定表的组织形式,定义表中的字段个数、字段名、字段类型、字段宽度及是否以该字段建立索引等。 如果我们以表3-0的内容建立一个数据表,它的结构可以按表3-1定义。 表3-1 人事档案数据表的结构 意义意义字段名字段名字段类型字段类型字段宽度字段宽度小数位数小数位数部门编号Bmbh字符型2编号Bh字符型

6、5姓名Xm字符型8性别Xb字符型2婚否Hf逻辑型1出生年月Csny日期型8职称Zc字符型10基本工资Jbgz数值型62吉祥物Jxw通用型4简历Jl备注型42 2利用表设计器创建表利用表设计器创建表 利用表设计器定义数据表的结构,操作方法有二种。 方法一: 从Visual FoxPro 系统的主菜单开始,打开“文件”菜单,选择“新建”;在“新建”窗口,选择“表”,再按“新建文件”按钮;在“创建”窗口,输入要建立的表的名字;在“表设计器”窗口,逐一地定义表中所有字段的名字、类型、宽度和是否建立索引,完成对数据表结构的建立。 方法二: 命令格式: CREATE 表文件名例如 CREATE rsda

7、3. 向数据表输入记录 通过前面的介绍,我们知道一个表是由表的结构与表中的记录两部分组成的。向表中加入记录,就是对表进行数据输入的操作。 创建表时立即输入数据创建表时立即输入数据创建表即定义表结构是通过表设计器来完成的,而向表中加入数据,要在表“浏览”窗口或表“编辑”窗口中进行。在创建表时,如果表中所有字段的属性已定义完成,可按“确定”按钮保存表结构,同时打开“系统”窗口,显示“现在输入数据吗?”的对话。选择“是”按钮,可以立即进入表“浏览”窗口,进行表中数据的输入。 备注型字段数据的输入备注型字段数据的输入 备注型字段由于其长度不定,因此,该字段数据不能同其它类 型的字段一样在表“编辑”窗口

8、或表“浏览”窗口输入。 将光标移到备注型字段的memo处,按Ctrl+PgDn 或 双击字段的memo标志,进入备注型字段编辑窗口,在这个窗口内,用户可以输入或修改备注型数据。通用型字段数据的输入通用型字段数据多数是用于存储OLE对象,如图象、声音、电子表格和文字处理文档等,因为其长度的不确定性,通用型字段数据也不能和常规类型的字段一样在表“编辑”窗口或表“浏览”窗口输入。将光标移到通用型字段的gen处,按Ctrl+PgDn或 双击字段的gen标志,进入通用型字段编辑窗口;打开“编辑”菜单,选择“插入对象”;在“插入对象”窗口,在“对象类型”列表框中,选择插入对象类型“BMP图像”;选择“新建

9、”或“由文件创建”按钮,BMP文件就被插入到通用字段中了。如果想拥有更好的数据输入和数据编辑环境,可以根据需要开发应用程序,为数据输入提供更方便的操作方法。 3.2 数据表的打开与关闭 一、数据表的打开 “文件”菜单“打开”命令。 也可以在命令窗口使用USE命令:USE 二、数据表的关闭:USE (1) 选择窗口菜单中的数据工作期命令,弹出数据工作期窗口; (2) 在数据工作期窗口中选择“关闭”按钮,关闭数据表。 在命令窗口中使用不带文件名的USE命令亦可关闭打开的数据表。 3.3 数据表的显示 3.3.1 数据表结构的显示 通过显示菜单中表设计器显示表结构: 命令格式: LIST|DISPL

10、AY STRUCTURE TO PRINT|TO FILE 命令功能:列出指定数据表的结构。 使用说明: (1) LIST是连续显示,而DISPLAY是分屏显示。 (2) 若选择TO PRINT子句,则一边显示一边打印。 (3) 若选择TO FILE ,则在显示的同时将表结构输出到指定的文本文件中。 应用举例: 例3.1 显示rsda.dbf的结构。 USE rsda LIST STRU 3.3.2 数据表记录的显示命令格式: LIST|DISPLAY FIELDS FOR WHILE TO PRINT|TO FILE OFF 命令功能:显示当前数据表中的记录或指定的表达式的值 使用说明: (

11、1) FIELDS 指定要显示的表达式。例如:use rsda list List fields xm,jbgz List xm,hf List xm,jbgz+100 (2) 、FOR子句和WHILE子句用于决定对哪些记录进行操作。 : all Next Record Rest例: list all go 2 list next 3 list record 4 list rest(从4号记录到最后一个记录)(3) 若选定FOR子句,则显示满足所给条件的所有记录。若选定WHILE子句,显示直到条件不成立时为止,这时后面即使还有满足条件的记录也不再显示。 如果有FOR子句,缺省的范围为ALL,有

12、WHILE子句,缺省的范围为REST。例: list for xblist for xb=男男 go 1go 1 List while xb List while xb=男男 list all while xblist all while xb=男男 for zcfor zc=教授教授 &while &while 优先优先 list while xblist while xb=男男 for zcfor zc=教授教授如果FOR子句或WHILE子句以及范围全省略,对于LIST缺省为所有记录,即取ALL,对于DISPLAY缺省为当前记录,即取NEXT 1。例: listlist d

13、isplay display go 5 go 5 disp disp对于DISPLAY命令,是分屏输出,对于LIST,是连续输出。(4) 选用OFF时,表示只显示记录内容而不显示记录号。例: disp all off 应用举例: 例3.2 就rsda.dbf数据表,进行如下操作:(1) 显示前5条记录;use rsdalist next 5(2) 显示记录号为奇数的记录;list for mod(recno(),2)=1(3) 显示未婚男职工的记录;list for !hf and xb=男(4) 显示教授或副教授的姓名、性别、年龄以及简历;list xm,xb,year(date()-yea

14、r(csny),jl for ”教授” $ zc(5) 显示姓“李”职工的姓名、基本工资和婚姻情况。list xm,jbgz,iif(hf,已婚,未婚) for at(李,xm)=1At( ) 求子字符串的起始位置3.3.3 设置过滤条件与字段表1、设置过滤条件-选择 在对记录进行访问时,用户对表中记录的使用范围加以限定,使其只对某一时期或某一问题的有用数据进行操作,会更有的放矢,节省时间。限制记录的访问可通过设置过滤条件来进行,方法是:(1)菜单操作 在“工作区属性”窗口,选择“数据过滤器”对话框输入记录的筛选条件;或按对话框后面的按钮,进入“表达式生成器”窗口, 在这一窗口输入记录的筛选条

15、件,再确认限制访问的记录即可结束操作。(2)命令操作 命令格式: SET FILTER TO SET FILTER TO 命令功能:从当前数据表中筛选出满足条件的记录进行数据操作,而“滤掉”那些不满足条件的记录。 说明: SET FILTER TO 取消已设置的过滤条件;被“滤掉”的那些记录仍在数据表中,只是不参加数据操作。例3-3 将rsda.dbf中工程师的记录筛选出来。菜单操作: 打开数据表,选择“显示”菜单浏览命令,再单击“表”菜单的“属性”命令,进入“工作区属性”窗口,在数据过滤器输入条件: zc=工程师命令操作:Use rsdaSet filter to zc=工程师ListSet

16、 filter toList 2、设置字段表(1)限制字段的访问(投影),可以通过设置“字段选择器”来完成。操作方法是打开表,在“工作区属性”窗口,利用“字段选择器”筛选出有用的字段。(2)命令格式: set fields to |All功能:将中的字段或所有字段加入内存字段表(即可存取的字段表)说明: 省略可选项,即命令set fields to ,从内存字段表中撤消所有字段。 set fields on |off 决定字段表是否有效。 on状态时,只能访问字段表所列的字段,此时其它字段就象不存在一样。当用set fields to 命令设置字段表时, set fields 自动置on。 o

17、ff 表示取消字段表,恢复到原来状态,系统默认为off状态。Clear fields撤消内存字段表中所有字段。例:对rsda.dbf设置字段表,使有效字段为bh, xb, xm。菜单操作:打开数据表,选择“显示”菜单浏览命令,再单击“表”菜单的“属性”命令,进入“工作区属性”窗口单击“字段筛选指定的字段”前的单选按钮单击字段筛选按钮,在字段选择器窗口中选定字段 关闭数据表浏览窗口重新选择表菜单中浏览命令命令操作:Use rsdaSet fields to bh,xb,xmListSet fields offList 3.4 数据表的修改3.4.1 数据表结构的修改 利用表设计器修改数据表的结构

18、,操作方法有二种。 方法一:从Visual FoxPro 系统的主菜单开始,打开“文件”菜单,选择“打开”;在“打开”窗口,输入要修改表结构的表名字;在“表设计器”窗口,修改表中所有字段的名字、类型、宽度和是否建立索引,完成对数据表结构的修改。 方法二:命令格式 MODIFY STRUCTURE 表文件名例:(1)复制文件rsda1.dbf(文件菜单中的导出命令) (2)以独占方式(exclusive)打开rsda1.dbf (3) 在csny字段前面增加一个代表民族的mz字段 (4)将jbgz和hf字段互换位置 (5)将bh字段的宽度改为8 (6)修改后存盘。 3.4.2 记录数据的修改 一

19、、全屏幕编辑修改 1浏览窗口的操作(1)打开浏览窗口 打开数据表后,在显示菜单中选择浏览命令,则数据表的内容将出现在浏览窗口中。(2)数据的两种显示方式:浏览和编辑显示方式。(3) 分割“Browse”窗口 设置分区 改变活动分区 断开分区 链接分区 删除分区(4)修改字段 改变字段显示顺序和大小 修改字段内容 添加记录(表菜单追加新记录) 指针定位 2. BROWSE命令命令格式: BROWSE FIELDS FOR 命令功能:打开浏览窗口,浏览或修改当前数据表的记录数据。使用说明:(1) 如果给出FIELDS子句,那么所列的字段就按中给出的顺序显示出来。(2) FOR子句指定一个条件,只有

20、当为真的记录才显示在浏览窗口中。FOR子句将记录指针移到第一个记录进行条件检查。应用举例:例3-4 对rsda.dbf中的xm,csny,zc,jbgz等四个字段的内容,按左边浏览,右边编辑的方式进行编辑。USE rsdaBROWSE FIELDS xm,csny,zc,jbgz PARTITION 30 REDIT例3-5 按下图浏览rsda.dbf中的记录。 USE RSDABROW FIEL xm:H=姓名,;cs=STR(YEAR(csny),4,0)+年;+STR(MONT(csny),2,0)+月+;STR(DAY(csny),2,0)+;日:H=出生日期,;jbgz:H=基本工资

21、,;hyqk=IIF(hf,已婚,未婚):H=婚姻情况; TITL 人事档案信息; NOEDIT NOAPPEND NODELETE 二、成批替换修改二、成批替换修改1、命令格式: REPLACE WITH ADDITIVE , WITH ADDITIVE , FOR WHILE 2、命令功能: 用一个表达式的值替换当前数据表中一个字段的值。3、使用说明: (1) 若不选择和FOR子句或WHILE子句,则默认为当前记录。若选择FOR子句,则默认为ALL;若选择WHILE子句,则默认为REST。 (2) ADDITIVE只能在替换备注型字段时使用。使用ADDITIVE,备注型字段的替换内容将附加

22、到备注型字段原来内容的后面,否则用表达式的值改写原备注型字段内容。 4、 应用举例: 例3-6 对rsda.dbf进行如下操作:(1)将60岁以下的教授的基本工资增加20%;list for zc=教授 and ;year(date()-year(csny)=60replace jbgz with jbgz*(1+20/100) ;for zc=教授 and ;year(date()-year(csny)=60菜单操作: 选择显示菜单中浏览命令 在表菜单中单击替换字段命令 在替换字段对话框中设置(2) 将6号记录的出生年月修改为1963年9月7日。Go 6dispReplace csny wi

23、th 1963/09/07Disp(3) 将3号记录简历字段增加一行内容“2000年5月批准为博士生导师”。Go 3Disp jlreplace jl with chr(10)+“2000年5月被批准;为博士生导师 additiveDisp jl3.5 记录的定位、增加与删除 3.5.1 记录的定位1、概念 在Visual FoxPro 系统环境下,表中的每一列数据是通过字段名来标识的,而每一行数据是通过记录号来标识的。用户对表中每一个数据项的访问,是通过记录号和字段名来进行的。也就是说,指明了记录号(表的行)和字段名(表的列),就确定了数据项(表中的某一数据)。在向表输入数据时,系统按照其输

24、入的前后顺序,给每一个记录赋予一个记录号。最先输入的记录为1号记录,其次2号记录,以此类推。 在Visual FoxPro 系统内部,有一个用以确定当前记录的记录指针,记录指针指向哪一个记录,这一个记录就是当前操作的记录,即当前记录。 当表打开时,当前记录为第一个记录。表文件一旦打开,表中的记录指针是可以移动的,所以当前记录是某一时刻的操作对象。 数据表中记录的定位,实质上就是确定哪一个数据表中记录的定位,实质上就是确定哪一个记录为当前记录记录为当前记录。 2、 确定当前记录的菜单操作方法 打开要使用的表,在“显示”菜单下,选择“浏览”; 打开“表表”菜单,选择菜单,选择“转到记录转到记录”,

25、子菜单不同的选项,可以将记录指针移动到相应的记录上。 (1)选择“第一个”,确定第一个记录为当前记录; (2)选择“最后一个”,确定最后一个记录为当前记录; (3)选择“下一个”,确定当前记录的下一个记录为当前记录; (4)选择“前一个”,确定当前记录的前一个记录为当前记录; (5)选择“记录号”, 便进入“转到记录”对话窗口,在“转到记录”对话框内,可以选择记录号,确定该记录号指定的记录为当前记录; (6)选择“定位”,进入“定位记录”窗口,在“定位记录”对话框内,输入定位条件表达式,确定满足定位条件表达式的第一个记录为当前记录。3、记录定位的命令操作(1)绝对定位 命令格式: GOTO |

26、TOP|BOTTOM 命令功能: 将记录指针定位到指定记录。(2)相对定位 命令格式: SKIP 命令功能: 以当前记录位置为基准,向前或向后移动记录指针。(3)使用说明: 利用 RECNO()、BOF()和EOF()这三个函数可以掌握有关记录指针移动的情况。4、应用举例:例3.7 设rsda.dbf共有10条记录,观察下列命令执行后记录指针的变化情况。 USE rsda ? RECNO(),BOF() 1 .F. ?reccount() 10 GO BOTTOM ? RECNO(),EOF() 10 .F. SKIP ? RECNO(),EOF() 11 .T. GO TOPDISP? RE

27、CNO(),BOF() 1 .F.Skip -1?recno(),bof() 1 .T.List? RECNO(),EOF() 11 .T.Go topList next 5? RECNO(),EOF() 5 .F. 3.5.2 增加记录 一、插入记录命令格式: INSERT BLANK BEFOREINSERT BLANK BEFORE命令功能:在当前数据表的指定位置上插入一个新记录。应用举例:例3.7 对rsda.dbf增加6号和7号记录。 USE rsdaGO 6 INSERT BEFORE 此时新增加的6号记录变成当前记录INSERT在6号记录之后插入一条新记录即第7号记录二、追加记录

28、 命令格式: APPEND BLANK 命令功能:在当前数据表的末尾追加一个新记录。 应用举例: 例3-8 在rsda.dbf末记录后增加两个记录。 USE rsda APPEND APPEND 显然,APPEND命令与下面两条命令等价: GO BOTT INSERT 3.5.3 删除记录 1. 给记录加删除标志 给暂时不使用的记录加一个删除标记称为逻辑删除。另外,对需要彻底删除的记录,也必须要先做逻辑删除后再做物理删除。 逻辑删除表中的记录,操作方法是,打开要进行逻辑删除操作的表,并进入表“浏览”窗口。 方法一:在表“浏览”窗口,把鼠标对准其删除标记栏,单击左键,这时要进行逻辑删除的记录就被

29、加上了删除标记。这种操作方法只对单记录进行逻辑删除有效。方法二: 在“浏览”窗口,打开“表”菜单,选择“删除记录”, 在“删除”窗口,可以通过选择作用范围确定要进行逻辑删除的部分记录或在For对话框中,设置逻辑删除条件表达式来确定逻辑删除的记录。命令格式: DELETE FOR WHILE 命令功能:给指定的记录加上删除标志。若不选择可选项,则仅对当前记录加上删除标志。2. 2. 取消删除标记取消删除标记 对加上逻辑删除标记的记录,如果用户还想恢复其使用权,可对其进行恢复记录的操作。 恢复已进行逻辑删除的记录,操作方法是,打开要进行恢复操作的表,并进入表“浏览”窗口。 方法一:在表“浏览”窗口

30、,把鼠标移到要进行恢复的记录上,对准其删除标记栏,单击左键除去删除标记。 方法二:在“浏览”窗口,打开“表”菜单,选择“恢复记录”;在“恢复记录”窗口,可以通过选择作用范围确定要进行恢复的部分记录;或在For文本框中,设置条件表达式来确定恢复的记录;指定范围或满足条件的记录都被除去了删除标记。 命令格式: RECALL FOR WHILE命令功能: 取消指定记录上的删除标志,若不选择可选项,则仅取消当前记录的删除标志。 3. 真正删除记录 物理删除就是把无效的记录彻底从磁盘中删除掉。要想彻底删除表中无效的数据,必须先做逻辑删除后再做物理删除。 物理删除表中的记录,操作方法是, 打开要进行物理删

31、除操作的表;在表“浏览”窗口,若没有对表中记录做逻辑删除,要对进行物理删除的记录先进行逻辑删除; 若已对若干记录做了逻辑删除,数据表中有了逻辑删除记录后,则选择, 在“系统”窗口,当选择“是”时,数据表中所有带有删除标记的记录将被彻底删除掉。 命令格式:PACK 命令功能:清除所有带删除标志的记录。 应用举例:例3.9 删除rsda.dbf中510之间的全部记录。 USE rsda GO 5 DELETE NEXT 6 PACK4.删除全部记录 命令格式: ZAP 命令功能:删除当前数据表的全部记录,只留下表结构。实验题实验题1设计一张二维表。2建立一个数据表。3对已有的表进行数据输入、记录显

32、示和修改、追加记录等操作。4对已有的表进行逻辑删除记录和物理删除记录操作。 3.6 数据表的复制 3.6.1 复制数据表的结构1、命令格式: COPY STRUCTURE TO FIELDS 2、命令功能: 将当前数据表的结构复制到指定的数据表中。仅复制当前数据表的结构,其记录数据不复制。3、使用说明: (1) 是复制产生的数据表名,复制后只有结构而无任何记录。 (2) 若给出了FIELDS 选项,则生成的空表文件中只含有中给出的字段,若省略此项,则复制的空表文件的结构和当前数据表相同。 3.6.2 复制数据表1、命令格式:COPY TO FIELDS FOR WHILE TYPE SDF|D

33、ELIMITED|XLS WITH |BLANK2、命令功能: 将当前数据表中的数据与结构同时复制到指定的数据表中 可以将当前数据表复制生成一个其它格式的数据文件3、使用说明:(1) 表示复制后产生的新的文件名。(2) 若选择了FIELDS ,则将中给出的部分字段的数据复制到指定的文件中。(3) 和FOR 、WHILE 决定了对哪些记录进行复制。省略这些子句时,则复制当前数据表的所有记录。(4) 复制含有备注型字段的数据表时,如果指定要复制该备注型字段,则在复制数据表的同时,复制相应的备注文件。(5) 若选择了SDF或DELIMITED,则将当前数据表复制成指定的文本文件,默认扩展名为TXT。

34、其格式由SDF和DELIMITED决定。SDF为标准格式,记录定长,不用分隔符和定界符,每个记录均从头部开始存放,均以回车符结束。DELIMITED为通用格式,记录不等长,每个记录均以回车符结束。若选用BLANK,字段之间用空格分隔。若选用,字符型数据用指定的定界符括起来,否则用双引号括起来。若选择XLS,则得到一个EXCEL文件。COPY TO FIELDS FOR WHILE TYPE SDF|DELIMITED|XLS WITH |BLANK 4、应用举例: 例3-11 对rsda.dbf进行复制操作,并分析目标文件的类型。(1)将基本工资大于400元的记录复制到new.dbf中;(2)

35、分别生成标准格式和通用 格 式 的 文 本 文 件new1.txt和new2.txt。菜单操作:文件菜单的导出命令USE rsdaC O P Y T O n e w f o r jbgz400USE newLIST USE rsdaCOPY TO new1 SDFType new1.txtCOPY TO new2 DELIMITEDTYPE new2.txt 例3-12 将rsda.dbf复制为一个Excel文件。USE rsdaCOPY TO rsda XLS FIELDS bh,xm,xb,hf,csny,zc,jbgz生成的Excel文件rsda.xls可在Excel下打开。3.6.3

36、数据表的结构文件 一、建立结构文件1、命令格式: COPY STRUCTURE EXTENDED TO FIELDS 2、命令功能:为当前数据表建立一个结构文件3、例:USE rsdaCOPY STRUCTURE EXTENDED TO RSDASTRUUSE RSDASTRULIST二、用结构文件产生新的数据表的结构 命令格式: CREATE FROM 命令功能: 用结构文件产生一个新的数据表的结构,并同时打开新数据表。应用举例: 例3-13 用rsda.dbf建立一个名为rsda2.dbf的数据表,它将rsda.dbf的bmbh字段的宽度改为8,并增加一个代表民族的字段(字段名为mz,C型

37、,长度为6)。USE RSDACOPY STRU TO RSDA_S EXTENUSE RSDA_SREPL FIELD_LEN WITH 8APPE BLANKREPL FIELD_NAME WITH MZ,FIELD_TYPE WITH C,FIELD_LEN WITH 6CREAT RSDA2 FROM RSDA_SLISTLIST STRU3.6.4 从其他文件向数据表添加数据 命令格式:APPEND FROM FIELDS FOR WHILE TYPE 命令功能:将指定文件中的数据添加到当前数据表的尾部。 例3-14 USE RSDACOPY TO RSDA3COPY TO NEW1

38、 SDFTYPE NEW1.TXTUSE RSDA3APPEND FROM NEW.TXT TYPE SDFLIST 3.7 数据表的排序与索引 3.7.1 数据表的排序命令格式:SORT TO ON /A|/D/C,/A|/D/CFIELDS FOR WHILE 命令功能:对当前数据表中的记录按指定的字段排序,并将排序后的记录输出到一个新的数据表中。 使用说明: (1) 是排序后产生的新表文件名,其扩展名默认为dbf。 (2) 由的值决定新表中记录的排列顺序,缺省时,按升序排列。不能按备注型或通用型字段排序。 (3) 对于在排序中使用的每个字段,可以指定升序或降序的排列顺序,默认为升序。/A

39、表示升序,/D表示降序。如果在字符型字段后加上/C,则忽略大小写。 (4) 由FIELDS指定从当前表中的字段来生成新表中包含的字段名。如果省略FIELDS子句,当前表中的所有字段都包含在新表中。 (5) 若省略、FOR 和WHILE 等选项,表示对所有记录排序。 应用举例: 例3-15 对rsda.dbf,进行如下操作: (1) 显示基本工资最高的5名职工的记录; (2) 将1号部门职工按年龄从大到小排序。USE RSDASORT ON JBGZ/D TO JBGZKUSE JBGZKLIST NEXT 5USE RSDASORT ON CSNY TO CSNYK FOR BMBH=01US

40、E CSNYKLIST 3.7.2 数据表的索引SORT排序缺点:冗余度大数据不一致性排序时间长一、索引概述1索引的概念 索引并不是重新排列数据表记录的物理顺序,而是另外形成一个索引关键表达式值与记录号之间的对照表,这个对照表就是索引文件。 索引文件中记录的排列顺序称为逻辑顺序。 索引文件发生作用后,对数据表进行操作时将按索引表中记录的逻辑顺序进行操作,而记录的物理顺序只反映了输入记录的历史,对数据表的操作将不会产生任何影响。2索引文件的种类(1)(1)按扩展名来分类按扩展名来分类 单索引文件单索引文件 . .IDXIDX 只包含一个索引 按关键字值升序排列 普通和压缩的.IDX 与以前版本兼

41、容 可作为临时性使用 复合索引文件复合索引文件 . .CDXCDX 可包含多个索引 每个索引有一个索引标志 按关键字值升序或降序排列 总以压缩方式存储结构复合索引文件结构复合索引文件Structural compound index file主名同数据表主名随表的打开而打开,在添加、更改或删除记录时还会自动维护在各类索引文件中,选用它最为省事非结构复合索引文件Non-Structural compound index file定义时要取名打开需使用SET INDEX命令或USE命令中的INDEX子句不常使用索引类型索引类型关键字重复值关键字重复值说明说明创建修改命令创建修改命令索引个数索引个数

42、允许可作为一对多永久关系中的“多方”INDEX允许多个允许,但输出无重复值为与以前版本兼容而设置候选索引不允许,输入重复值将禁止存盘可用作主关键字,可用于在永久关系中建立参照完整性INDEXCREATE TABLEALTER TABLE主索引仅适用数据库表,可用于在永久关系中建立参照完整性CREATE TABLEALTER TABLE仅可一个(2)按功能来分类 索引除具有建立记录逻辑顺序的作用外,还能控制是否允许相同的索引关键字值在不同记录中重复出现,或允许在永久关系中建立参照完整性。说明:(1)主关键字是能唯一标识记录的索引关键字,它应能排除关键字重复值。例如将姓名字段作为索引关键字,若出现

43、同名同姓人员,也即出现了关键字重复值,这样的关键字就不是主关键字。(2)唯一索引型索引文件,对于关键字值相同的记录,索引中只列入其中的第一个记录。(3)表中提到的数据库表、永久关系、参照完整性等概念将在第5章学习。二、建立索引文件1、命令功能:对当前数据表建立一个索引文件或增加索引标志。2、命令格式:INDEX ON TO |TAG OF FOR COMPACTASENDING|DESCENDINGUNIQUE|CANDIDATE ADDITIVE 3、使用说明:(1) 是包含当前数据表中的字段名的表达式,表达式中的操作数应具有相同的数据类型。(2) 若给出TO 子句,则建立一个单索引文件。若

44、给出TAG OF ,则建立一个复合索引文件,或为已建立并打开的复合索引文件增加索引标志。OF 选项用于指定非结构复合索引文件的名字,省略此选项时,表示建立结构复合索引文件。(3) 若选择FOR 选项,则只有哪些满足条件的记录才出现在索引文件中。INDEX ON TO |TAG OF FOR (4) 选用COMPACT,则建立一个压缩的单索引文件。复合索引文件自动采用压缩方式。(5) 复合索引时,系统默认或选用ASCENDING,按索引表达式的升序建立索引。选用DESCENDING按降序建立索引。单索引文件只能按升序索引。(6) 选用UNIQUE,则对于索引表达式值相同的记录,只有第一个记录列入

45、索引文件,表示建立唯一索引型索引文件。选用CANDIDATE,表示索引文件是候选索引型,但需与TAG子句同时使用。该命令默认建立普通索引型索引文件。(7) 选用ADDITIVE,则建立本索引文件时,以前打开的索引文件仍保持打开状态。INDEX ON TO |TAG OF FOR 条件COMPACTASENDING|DESCENDINGUNIQUE|CANDIDATEADDITIVE 4、应用举例:例3-16 用建立索引文件的方法对rsda.dbf,进行如下操作: (1) 显示基本工资最高的5名职工的记录; (2) 将1号部门职工按年龄从大到小排序。 USE rsda INDEX ON -jbg

46、z TO jbgzsy LIST NEXT 5 DIR jbgzsy.*INDEX ON csny TAG csnysy;FOR SUBSTR(bh,1,2)=01LISTDir rsda.*选定显示菜单的表设计器命令,选定索引选项卡 例3-17 为rsda.dbf建立结构复合索引文件,其中包含三个索引: (1) 按编号的升序排列,不允许有编号相同的记录。 (2) 先按职称升序、职称相同再按年龄升序排列。 (3) 先按性别升序,性别相同再按年龄降序排列。use rsdaindex on bh tag bhsy uniqueListindex on xb+dtoc(csnydtoc(csny,1

47、),1) tag xbnlsy2List选定显示菜单的表设计器命令,选定索引选项卡三、索引文件的使用 要使用索引,必须同时打开表与索引文件。 一个表可以打开多个索引文件,同一个复合索引文件中也可能包含多个索引标志,但任何时候只有一个索引文件能起作用,在复合索引文件中也只有一个索引标志能起作用。 当前起作用的索引文件称为主控索引文件 当前起作用的索引标志称为主控索引 结构复合索引文件随相关数据表的打开而自动打开 1. 打开索引文件单索引文件和非结构复合索引文件:(1) 数据表和索引文件同时打开命令格式:USE INDEX 命令功能:打开指定的数据表及其相关的索引文件。(2) 打开数据表后再打开索

48、引文件命令格式: SET INDEX TO ADDITIVE命令功能:为当前数据表打开一个或多个索引文件。使用说明:省略任何选项而直接使用SET INDEX TO,将关闭当前工作区中除结构复合索引文件之外的全部索引文件。若省略ADDITIVE选项,则在使用该命令打开索引文件时,除结构复合索引文件之外的索引文件均被关闭。 2. 确定主控索引命令格式:SET ORDER TO |TAG OF 命令功能:指定数据表的主控索引文件或主控索引标志。使用说明:(1) 表示已打开的索引文件的序号,用以指定主控索引。单索引文件首先按打开的先后顺序标识序号,再是结构复合索引文件的索引标志按其生成的顺序计数,最后

49、是非结构复合索引文件的索引标志按其生成的顺序计数。(2) 最好使用指定一个单索引文件为主索引文件,这样做比用索引文件顺序号更直观。(3) TAG OF 用于指定一个已打开的复合索引文件中的一个索引标志为主控索引。(4) 不带任何短语的SET ORDER TO 或 set order to 0 命令可以取消主控索引文件及主控索引,表中的记录按物理顺序输出。例3-18 查看所有的索引文件DIR *.?DX 按基本工资降序浏览数据表 RSDA打开数据表rsda 和 jbgzsy.idxUSE rsda INDEX jbgzsyBROWSE表菜单属性索引顺序Set order to 2BrowseSe

50、t order to xbnysy1BrowseSet order tobrowse 使用索引文件时,还要特别注意以下几点: (1) 在使用GO命令时,GO 使记录指针指向具体的物理记录号,而与索引无关,而GO TOP|BOTTOM将使记录指针指向逻辑首或逻辑尾记录,这时GO TOP不再等同于GO 1。 (2) SKIP命令按逻辑顺序移动记录指针。 (3) 数据表被打开后,记录指针位于TOP位置,而不一定指向1号记录。例3-19 当有索引文件时,分析记录指针的移动规律。 USE rsda INDEX ON jbgz TO gzsy GO 6 ? RECNO(),XM &显示6 夏有福

51、SKIP ? RECNO(),XM &显示1 王 强3. 关闭索引文件 命令格式1: CLOSE INDEX 命令格式2: SET INDEX TO 命令功能: 关闭当前工作区内所有打开的索引文件。但结构复合索引文件不能关闭,它随数据表的关闭而自动关闭。 此外,使用无任何选项的USE命令,除了关闭当前工作区的数据表外,也关闭了与之相关的索引文件。 4. 删除索引命令格式1: DELETE FILE 命令功能: 删除一个索引文件;遵循“先关闭后删除”原则。命令格式2: DELETE TAG ALL|命令功能: 用于删除打开的复合索引文件的所有索引标志或指定的索引标志。 如果一个复合索引文

52、件的所有索引标志都被删除,则该复合索引文件也就自动被删除了。例: dir *.idxdele file jbgzsy.idxdir *.idxuse rsdadelete tag bhsy四、更新索引自动更新 当表中的数据发生变化时,例如:对它进行插入、删除、添加或更新操作之后,所有当时已打开的索引文件都会随数据的改变自动改变记录的逻辑顺序,实现索引文件的自动更新。重新索引 若索引文件未打开,修改表的记录时索引文件不会自动更新。若仍要维持记录的逻辑顺序,可用REINDEX命令或表菜单-重新建立索引命令。 REINDEX COMPACT使用COMPACT可以把普通的单索引文件变成压缩的单索引文件

53、。实验实验 1给已建立的数据表中的字段建立不同的索引类型。2显示已建立的索引的数据表的内容。 3.8 数据表的统计 3.8.1 统计记录个数命令格式:COUNT COUNT FOR FOR WHILE WHILE TO TO 命令功能:统计当前数据表中,在指定范围内满足指定条件的记录个数。使用说明:(1) 选择项的缺省值为ALL。使用TO 选择项,将统计记录个数的结果存入指定的内存变量中。(2) 若设置了SET TALK OFF,则不显示统计的结果。若设置了SET DELETED ON命令,则作了删除标记的记录不被计数。(3) 不带任何选项的COUNT命令与RECCOUNT()函数作用相同,都

54、可以获得一个数据表的记录数。应用举例: 例3-20 对rsda.dbf进行如下操作:(1) 统计女教授的人数;use rsdacount for xb=女 and zc=教授 to x1(2) 给男职工的记录加删除标志,然后统计加删除标志的记录的个数。delete for xb=男count for deleted() to x2recall for xb=男 3.8.2 求数值表达式之和与平均值命令格式: SUM|AVERAGE FOR WHILE TO |ARRAY 命令功能: 在当前数据表中,求指定表达式之和或平均值。使用说明: (1) 两条命令的格式相同,SUM命令求指定表达式之和,而

55、AVERAGE命令求指定表达式的平均值。 (2) 选择项的缺省值为ALL。 (3) 中的表达式可以包括字段名,也可以不包括字段名,若省略,则对全部数值型字段求和。计算结果存放在由指定的内存变量中或指定的数组元素中。应用举例: 例3-21 对rsda.dbf,进行如下操作:(1) 分别求男、女职工基本工资之和;(2) 求教授的平均年龄。use rsdasum jbgz for xb=男 to x1sum jbgz for xb=女 to x2?x1,x2average year(date()-year(csny) for zc=教授 to y?y 3.8.3 财务统计命令格式: CALCULAT

56、E FOR WHILE TO |ARRAY 命令功能:在当前数据表中,对指定表达式进行财务统计函数计算。使用说明: (1) 若没有选择、FOR 或WHILE 选项,则统计计算数据表的全部记录,否则只统计计算指定范围内满足条件的记录。 (2) 中的表达式至少应包含一种财务统计函数。VFP共提供8种财务统计函数。AVE(数值表达式),CNT(),MAX(表达式),MIN(表达式),SUM(表达式) 应用举例: 例3-22 对rsda.dbf,进行如下操作: (1) 求基本工资之和与均方差; (2) 求最年轻教授的出生年月。 USE rsda CALC SUM(jbgz),VAR(jbgz) TO x1,x2 CALC MAX(csny) FOR zc=

温馨提示

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

评论

0/150

提交评论