VFP第三章表的创建和使用3.3记录的处理
- 格式:rtf
- 大小:15.18 MB
- 文档页数:14
VFP数据库与程序设计作业与实验报告(第三章表的创建及使用)学号:姓名:专业:教师:计算机基础教研室编2013年3月三表的基本操作·实验部分·实验题目:数据表的建立及数据表操作实验目的:通过本次实验,让学生掌握VFP数据表的建立,掌握创建项目、在项目中创建自由表、数据表的基本操作与维护功能。
实验内容及实验步骤:1.建立名为xs.dbf数据表,表结构定义参看实验教材上P42表3-3学生(xs)表结构,表中记录请按实验教材p43表3-6输入:步骤:单击菜单栏的【文件】-【新建】-【表】-【新建文件】命令,在弹出的“创建”对话框中输入表名 xs.dbf ,单击【保存】按钮,在弹出的“表设计器”对话框中按照表3-3定义表结构,单击【确定】按钮,在弹出的“现在输入数据记录吗?”对话框中选择【是】,按照表3-6输入数据表内容后关闭该表窗口。
2.修改数据:将第三条记录入学成绩字段值“450”改为“460”。
步骤:单击菜单栏的【显示】- 浏览命令,浏览数据表,修改入学成绩字段。
3.输入第一条记录的简历为:1990年毕业于师大附小。
步骤:双击(单击/双击)第一条记录的简历字段,在弹出的“xs.jl”对话框中输入“_ 1990年毕业于师大附小”后关闭该窗口。
4.为第一条记录的照片字段插入任意一张的图片。
步骤:双击第一条记录的照片字段,单击菜单栏的【编辑】- 插入对象命令,在弹出的“插入对象”对话框中单击位图图像单选按钮,浏览选取任意一张图片,单击【确定】按钮后关闭该窗口。
5. 追加新记录:按照实验教材P47追加记录的步骤添加表3-7中所示的三条记录。
步骤:单击菜单栏的【表】- 追加新记录命令,追加新记录。
6.将xs.dbf表中简历和照片字段删除。
步骤:单击菜单栏的【文件】-【打开】命令,在弹出的“打开”对话框中选择文件类型为表(*.dbf),选择数据表xs.dbf,选中“独占”复选框,单击【确定】按钮。
3.1 VFP6.0表1. 表的概念表(数据表):是指存放在磁盘文件中的一张二维表。
(相当FoxPro 2.x 版本中的数据库)自由表:不属于任何数据库的表。
数据库表:包含在一个数据库中的表。
表文件名:表名可以由字母、数字或下划线组成,系统自动给出的扩展名为 .DBF。
备注文件名:当表中有备注型或通用型字段时,系统自动生成与所属数据表的表名相同、扩展名为:.FP T的文件名。
表结构:存储表记录的公共结构。
(就是指一张表的表头结构,即字段的属性)。
记录:表中的一行。
它是多个字段的集合,同一张表的每个记录都有相同的字段。
字段:表中的一列。
它规定了数据的特征。
关系型数据表的特点:(1)每一个字段不可再分解,也不能有名字相同的字段;(2)每一列中的数据都有相同的数据类型;(3)表中没有内容完全相同的行(记录)。
2. 字段的基本属性字段的属性:包括:字段名、数据类型、字段宽度、小数位数、空值支持字段名:即每个字段的名字,必须以字母开头,可由字母、数字、下划线组合而成,字母大、小写无区别,但其中不许有空格或其它字符。
自由表的字段名最多由10个字符组成,数据库表的字段名支持长名,最多可达128个字符。
如果从数据库中移去一个表,那么此表的长字段名将被截短成 10 个字符。
VFP允许长字段名和长表名,但使用长名称对于跨平台的操作可能遇到难以预料的结果。
数据类型:指该字段的数据特征。
字段宽度:指该字段所能容纳数据的的最大字节数。
小数位数:指数值型数据将保留几位小数。
此时的字段宽度 = 整数位数+1+小数位数。
NULL 值(空值):无明确的值。
NULL 值不等同于零或空格。
一个 NULL 值不能认为比某个值(包括另一个 N ULL 值)大或小,相等或不同。
VFP 6.0表中字段的数据类型字段类型代号说明字段宽度使用示例字符型 C 字母、汉字和数字型文本每个字符为1个字节,最多可有 254个字符学生的学号或姓名, "8199101" 或 '李立'货币型Y 货币单位8 个字节工资, $1246.89日期型 D 包含有年、月和日的数据8 个字节出生日期,{^1980/07/08}日期时间型T 包含有年、月、日、时、分、秒的数据8 个字节上班时间,{^2005/02/20 9:15:15 AM}逻辑型L “真”或“假”的布尔值1 个字节课程是否为必修课,.T. 或 .F.数值型N 整数或小数在内存中占 8 个字节;在表中占1至20个字节考试成绩, 83.5双精度型 B 双精度浮点数8 个字节实验要求的高精度数据浮点型 F 与数值型一样整型I 不带小数点的数值 4 个字节学生的数量通用型G OLE 对象在表中占 4 个字节图片或声音备注型M 不定长度的一段文字在表中占 4 个字节学生简历字符型(二进制) C 任意不经过代码页修改而维护的字符数据每个字符用1个字节,最多可有 254个字符备注型(二进制)M 任意不经过代码页修改而维护的备注数据在表中占 4 个字节3. 表的基本操作表的创建:设计表名和表结构、输入记录、建立索引数据维护:增加记录、修改记录、删除记录创建表的主要步骤:设计表结构→ 输入记录→建立索引→数据维护4.关于表操作的几个基本命令命令格式功能CREATE表文件名创建一个新的自由表的结构USE表文件名打开指定的表文件USE关闭当前表文件LIST ALL显示当前表的全部记录内容(类似于DOS 命令中的dir)DISPLAY ALL分屏式地显示当前表的全部记录内容(类似于DOS中的dir/p)DISPLAY STRUCTURE显示当前表的结构(分屏显示)LIST STRUCTURE显示当前表的结构(不分屏显示)MODIFY STRUCTURE调出表设计器,修改当前表的结构。
3.3.1 记录的输入P71⒊使用INSERT-SQL命令追加记录⒋使用APPEND与APPEND FROM命令追加记录APPEND BLANK,可以追加新记录。
⒊使用INSERT-SQL命令追加记录在程序中向一张表中追加记录,通常使用INSERT-SQL命令。
命令格式如下。
INSERT INTO TableName[(FieldName1 [,FieldName2, … …])\] VALUES (eExpression1[,eExpression2, … …])例如:可以用以下命令向XS表中插入一条新记录:INSERT INTO XS(xh,xm,xb,ximing) VALUES ("950106","高山","男","")⒋使用APPEND与APPEND FROM命令追加记录APPEND [BLANK] [IN nWorkArea| cTableAlias]其中,BLANK用于说明向表中追加一条空记录,缺省时系统向表中追加一条空记录,并打开浏览窗口以便用户输入该记录的数据。
当表处于浏览状态时,利用―表/追加记录‖,选中数据来源的文件后,即可追加数据。
常用的可追加的文件类型有表文件.dbf、文本文件.txt(DELIMIED)和Excel文件.xls。
使用APPEND FROM 命令从其他文件中导入数据。
APPEND FROM FileName [DLIMITED|XLS]3.3.3 记录的定位当用户向表中输入数据时,VFP为每个记录都按输入顺序指定了‖记录号―。
第一个输入的记录,其记录号为1,依次类推。
⒈`记录指针当一个表文件被打开后,系统中自动生成三个控制标志:记录的开始标志、记录指针标志、记录的结束标志,如图。
记录的开始标志介于表结构和记录之间,前面是表结构,后面是第一条记录。
记录指针用于指示当前处理的记录位置,记录指针指向的那个记录称为当前记录。
记录的结束标志是整个表记录结束的标志。
记录指针是一个非常重要的概念。
它是VFP 系统内部的一个指示器,可以将记录指针理解为保存当前记录号的变量。
每当打开一个表文件时,记录指针总是指向第一条记录。
在进行数据处理时,经常要移动记录指针,使记录指针指向用户所需要操作的那个记录,这个过程即是记录的定位。
测试当前记录指针的值可用函数RECNO()进行测试。
也可以从VFP主窗口的状态栏上看出记录指针的值。
在处理记录的过程中,记录指针会不停地移动。
记录指针是否指在记录的有效范围内,可以BOF()函数和EOF()函数进行测试。
当记录指针指向记录的开始标志时,BOF()函数值为.T.,否则为.F.。
当记录指针指向记录结束标志时,EOF ()函数的值为.T.,否则为.F.。
表3-2列出了一张表被打开后,未作记录移动操作时RECNO()、BOF()和EOF ()函数的值。
记录指针的初始值总是1,不可能为0或负数。
⒉记录的定位记录的定位即记录指针的定位。
定位方式可分为记录指针的绝对定位、记录指针的相对定位、条件定位。
指针的绝对定位是指把指针移动到指定位置;相对定位是指把指针从当前位置开始,相对于当前记录向前或向后移动若干条记录的位置;条件定位是指按照一定的条件自动地在整张表中查找符合该条件的记录,找到则将指针定位在该记录上,找不到,则定位到整张表的末尾EOF()。
⑵使用命令进行记录定位对于在当前工作区打开的表,用户可以使用GOTO命令进行记录的绝对定位,使用SKIP 命令进行记录的相对定位,使用LOCATE命令进行条件定位。
命令格式:GOTO nRecordNumber [IN nWorkArea| IN cTableAlias]|TOP|BOTTOMSKIP [nRcords][IN nWorkArea|cTableAlias]LOCATE FOR lExpression[Scope]其中nRecordNumber必须在表记录的有效范围内;TOP指第一条记录;BOTTOM 指最后那条记录;记录数nRecord指记录指针需要移动的记录个数,缺省时为1。
条件表达式lExpression用于表示记录的定位条件;范围Scope指进行条件的范围。
例:13下列命令是记录定位的示例CLOSE TABLES ALLUSE XSGOTO 4GOTO TOPSKIP 4SKIP -2LOCATE FOR XM="李刚"在使用命令定位时,需注意:P774-1①如果从第一个记录向上移动一个记录,指针将指向记录起始标志,BOF()函数将返回(.T.),RECNO()函数返回值为1。
如果再执行SKIP –1命令,系统将显示出错信息:已到文件头。
此时,记录指针仍然指向记录起始标志。
⒉使用命令修改记录修改记录字段的命令有两个:UPDATE-SQL命令和REPLACE命令。
这两个命令都能对表中一个或多个字段的一个或多个记录进行修改,都是适用于编程方式。
UPDATE-SQL命令UPDATE-SQL命令的语法格式:UPDATE 表名SET 字段名1 =表达式1[,字段名2;= 表达式2 ...] WHERE 条件表达式参数:表名——指定要更新记录的表。
字段名1=表达式1 [,字段名2=表达式2 ...]——指定要更新的列以及这些列的新值。
WHERE 条件表达式——指定要更新的记录,缺省时表示所有记录。
用该命令更新表时,被更新的表不必事先打开。
REPLACE命令需注意:使用该命令时表必须事先打开。
REPLACE命令命令的语法格式:REPLACE FieldName1 with eExpression1 [ADDITIVE] [,FieldName2 witheEpression2 [ADDITIVE] … …[Scope] [FOR lExpression]其中字段名FieldName与表达式eExpression用于指定要更新的字段以及这些字段的新值;ADDITIVE仅对备注型字段有效,使用时表示替换的内容追加到原备注中,否则替换原内容;FOR子句和范围Scope用于指定要更新的记录,当均缺省时表示仅对当前记录。
执行该命令后,记录指针位于指定范围的结尾。
例子例14,将JS表中所有工龄满30年(假如不考虑月日)的教师的基本工资加100UPDATE JS SET jbgz=js.jbgz+100 WHEREyear(date())-year(gzrq)>29例15CLOSE TABLES ALLUSE JSREPLACE JBGZ WITH JBGZ+100 FOR YEAR(DATE()) - YEAR(GZRQ())>29 3.3.5 记录的删除P78⒉采用命令方式用DELETE或DELETE-SQL命令标记要删除的记录,它们的区别在于前者只能对已打开的表进行操作,后者无需事先打开表。
DELETE命令的基本语法格式:DELETE [Scope][for lExpression] [IN nWorkAlias|cTableAlias]范围、条件、工作区或表别名CLOSE TABLES ALLUSE JSDELETE FOR (DATE()-CSRQ)/365>60 ⒉采用命令方式用DELETE或DELETE-SQL命令标记要删除的记录语法:DELETE FROM 表名[WHERE 过滤条件表达式]参数:FROM 表名——指定要删除记录的表。
[WHERE 过滤条件表达式]——指定只给满足条件的记录做删除标记。
例如,要删除教师表中年龄在60岁以上的记录的命令是:DELETE FROM js WHERE year(date())-year(js.csrq)>60⒉恢复带删除标记的记录如果表的浏览窗口处于打开状态,可以在浏览窗口中单击一下带删除标记记录的小方框,小方框将由黑变白,这样就恢复了这个记录。
同样也可以有选择地恢复一组记录。
从―表‖菜单中选择―恢复记录‖,然后输入恢复条件。
使用RECALL命令恢复带删除标记的记录语法:RECALL [范围] [FOR 条件表达式1] [WHILE 条件表达式2]例如:RECALL &&恢复当前记录RECALL ALL &&恢复所有记录RECALL ALL FOR xb=‖男‖&&恢复所有性别为―男‖的记录⒊彻底删除记录P80被设置了删除标记的记录,可以被彻底删除或被恢复。
如果表的浏览窗口处于打开状态,可从―表‖菜单中选择―彻底删除‖,这个过程将删除已有标记过的记录,并重新构造表中余下的记录。
经过这一步之后,被删除的记录不能再被恢复。
PACK命令具有与菜单同样的功能。
如果要删除一个表的所有记录,只留下表结构,可使用ZAP命令。
ZAP 不管记录是否带删除标记,一概彻底删除。
所以在实际使用中应慎用此命令。
PACK 命令与ZAP命令都需要以独占方式使用表。
3.3.6 数据的复制P80利用COPY TO 命令可以将表(在当前工作区中已经打开)中的数据复制到其他表文件或其他类型的文件中。
COPY TO 命令的常用格式:COPY TO FileName[FIELDS Fieldlist][Scope] [FOR lExpression] [[TYPE] SDF|XLS|DELIMITED[WITHDelimiter|WITH BLANK|WITH TAB|WITH CHARACTER Delimiter]] p81Copy to xs01 for xb='女'COPY TO XS02 FIELDS XH,XM SDF &&XS02.TXT仅包含XH与XMCOPY TO XS03 XLS &&生成一个XS03.xls文件3.3.7 数据的统计利用COUNT、SUM和AVERAGE命令可以对表数据进行统计。
其中,COUNT命令用于统计记录数,SUM命令用于统计某数值型字段的值的总和,AVERAGE命令用于统计某数值型字段的值的平均值。
这些命令的常用语法格式如下:COUNT [Scope] [FOR lExpression][TOVarName] SUM [nExpression][Scope][FOR lExpression][TO VarName]AVERAGE [nExpression][Scope][FOR lExpression] [TO VarName]例子:CLOSE TABLES ALLUSE cjCount for cj<60 to A1 &&统计60分以下的人数,并将结果保存在变量A1中SUM CJ TO A2 FOR cj<60 &&统计60分以下的总分,并将结果保存在变量A2中AVERAGE cj TO A3 &&统计平均分,并将结果保存在变量A3中。