VFP数据库及其操作1.ppt_第1页
VFP数据库及其操作1.ppt_第2页
VFP数据库及其操作1.ppt_第3页
VFP数据库及其操作1.ppt_第4页
VFP数据库及其操作1.ppt_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

第3章 VFP数据库及其操作,3.1VFP数据库及其操作 3.2表及其操作 3.3索引和排序 3.4数据完整性 3.5多个表同时使用,掌握数据库的建立、使用、修改、删除方法 掌握数据库表和自由表的建立、修改表结构,输入、浏览、增加、删除、修改、显示、查询定位记录的方法 掌握表的索引的建立、使用、删除的操作 能够建立表之间的联系,并能同时使用多个表,本章知识点与要求:,第3章 VFP数据库及其操作,3.1VFP数据库及其操作 3.2表及其操作 3.3索引和排序 3.4数据完整性 3.5多个表同时使用,数据库(DB) :,答:不。数据库主要是通过对表的操作达到组织和管理数据的目的。表是组织数据、处理数据的基本单元。,数据库直接管理数据吗?,如果把日常工作中的各个文件、资料看成一个个数据的话,那么 表就是存放这些文件、资料的文件夹, 数据库就是存放文件夹的文件柜。 文件夹(表) 是我们日常工作操作的对象, 文件柜(数据库)担负着承载、组织和管理文件夹(表)的作用 “皮之不存,毛将焉附?”, 因此,我们先学习数据库的相关知识。,引言,存储在计算机存储设备上的结构化的数据集合。,3.1.1 建立数据库,【方法一:】在项目管理器中新建数据库,菜单或工具栏 “新建” 选择“数据库” 新建文件或向导,【方法三:】命令方式,Create database ,【方法二:】菜单方式,前两种方式新建数据库后会自动打开数据库设计器 命令方式不自动打开数据库设计器 数据库文件是以(.dbc)为扩展名文件,3.1.2 打开数据库,【方法一:】项目管理器中,菜单或工具栏 “打开”,【方法三:】命令方式,open database exclusive|shared,【方法二:】菜单方式,若同时打开了多个数据库,可以指定当前的数据库: SET DATABASE TO 数据库名 【说明:】数据库名必须为已经打开的数据库。如果省略数据库名,则不指定当前数据库(没有当前数据库)。,3.1.3 修改数据库,修改数据库实际就是打开数据库设计器,修改相应的内容。,【方法一:】在项目管理器中,【方法三:】命令方式,【方法二:】菜单方式,modify database ,3.1.4 关闭数据库,【方法一:】在项目管理器中,【方法二:】命令方式,close database all,关闭当前数据库,如果带all子句,则关闭所有打开的数据库,3.1.5 删除数据库,【方法一:】在项目管理器中,【方法二:】命令方式,delete database deletetables,删除指定的数据库,如果带deletetables子句时,连同数据库内的表一起删除,否则,数据库内的表变为自由表,第3章 VFP数据库及其操作,3.1VFP数据库及其操作 3.2表及其操作 3.3索引和排序 3.4数据完整性 3.5多个表同时使用,引言,在数据库系统中也存在类似情况:一些表存放于数据库之内一些表存放于数据库之外。,文件夹存放在文件柜里,文件夹没有存放在文件柜里,存在于某一个数据库中,接受数据库管理的数据表称为数据库表 独立存在数据库之外,不受任何数据库管理的数据表称为自由表,统称数据表或表,如果把日常工作中的各个文件、资料看成一个个数据的话,那么 表就是存放这些文件、资料的文件夹, 数据库就是存放文件夹的文件柜。,问题:自由表与数据库表有何异同?两者可以互相转换吗?,(1)两者都是一个以(.dbf)为扩展名的独立文件,使用和操作方法没有任何区别。 (2)自由表独立存在,不与任何数据库相关联; 数据库表存在于数据库中,与某一个数据库相关联。 (3)数据库表中字段名的长度为1-128个字符, 自由表中字段名的长度不超过10个字符。 (4)将数据库表从数据库中移除,就变成自由表; 把自由表添加到数据库中就变成数据库表,二者可以转换,3.2.1 建立表,菜单或工具栏按钮“新建” 选择“表” 新建文件或向导,【方法一:】项目管理器中,【方法三:】命令方式,【方法四:】菜单方式,【方法二:】数据库管理器中,Create 表文件名,注意: 使用方法三、四新建数据表时,如果存在已经打开的数据库,则新建的数据表为数据库表,否则,为自由表。,1、 建立表文件,2、 设计表的结构,数据库表的表设计器,自由表的表设计器,在VFP6.0中字段变量的数据类型有13种:数值型、字符型、货币型、日期型、日期时间型、逻辑型、整型、浮点型、双精度型、备注型、通用型、备注型(二进制)、通用型(二进制)。,(1)字段名:表中每一列的标题称为字段名,将来可以通过字段名直接引用表中的数据,字段名的命名遵循变量命名规则,且同一个表中字段名不能重复。,(2) 类型:字段的数据类型,决定了该字段能够存储哪一种类型的数据。,(6)NULL:设置该字段是否允许为空值(值为不确定状态)。,(3) 宽度:字段宽度,决定了该字段能够放数据的最大字符数或数值位数。,(4)小数位数:定义数值型、浮点型、双精度型数据需保留的小数位数。,(5)索引:是否将当前字段为设置索引字段。(后面章节详细讲),3、 输入表的记录,注意: (1)输入的数据要与字段的类型、宽度、小数点位数一致。 (2)备注型、通用型数据的输入需要在专门文件中输入。 备注型输入内容后 表中“memo”变为“Memo”字样; 通用型输入内容后 表中“gen”变为 “Gen”字样。,如果是数据库表,还可以设置字段有效性、格式、掩码等。,显示组框:,格式:确定字段显示时采用的大小写、字体和样式等。,常用格式字符及功能如下表,显示组框:,输入掩码:用于设置字段的输入格式,屏蔽非法格式的输入,减少输入错误。 掩码字符及功能如下表:,如果是数据库表,还可以设置字段有效性、格式、掩码等。,显示组框:,标题:用于字段显示时的标题,没有则显示字段名。,如果是数据库表,还可以设置字段有效性、格式、掩码等。,如果是数据库表,还可以设置字段有效性、格式、掩码等。,字段有效性组框:,规则:建立检查字段输入数据是否有效的规则(表达式)。,定义字段有效性规则、违反规则时的提示信息和字段的默认值。,信息:当输入数据违反规则时的提示信息。 默认值:预设输入数据的默认值。,注意: 规则的结果为逻辑值。 信息是字符串表达式。 默认值视字段类型而定。,如果是数据库表,还可以设置字段有效性、格式、注释等。,可以为每一个字段添加注释说明,便于日后或其他人对数据表进行维护。,字段注释:,3.2.2 表的基本操作,只有先打开表,才能对表进行相关的操作。,1、打开表,菜单方式,命令方式,use exclusive|shared,独占方式,共享方式,2、主窗口显示表结构,List | display structure,3、复制表结构,copy structure to fields ,4、修改表结构,菜单方式,命令方式,数据库方式,项目管理器方式,modify structure,5、浏览表的记录,菜单方式,命令方式,数据库方式,项目管理器方式,browse fieldsfor,list | display fieldsfor,主窗口显示,表的形式显示,6、追加记录,菜单方式,命令方式,Append blank,在文件尾追加一条或多条记录,打开表输入窗口供用户追加记录。当有blank选项时,在表尾追加一条空记录,不打开表输入窗口。,命令方式,insert blankbefore,【说明】 (1)缺省blank 时,弹出记录编辑窗口,由用户输入插入的内容否则,系统自动插入一条空记录,而不打开记录编辑窗口; (2)有before选项时,在当前记录前插入;否则在当前记录后插入 (3)插入新记录后,其后面记录均自动顺次后移。,7、插入记录,在指定位置插入一条或多条新记录,8、修改记录,【功能】打开表编辑窗口供用户修改记录。,菜单方式,命令方式,change | edit fields for,replace with ,字段2 with for,【命令二】,【例】对所有少数名族的学生的成绩都加上10分 Replace 成绩 with 成绩+10 for left(民族,2)!=“汉”,Change 、 Edit、Replace,【命令一】,【功能】对满足条件的记录,用表达式的值直接替换字段的值 不打开表编辑窗口。,9、删除记录,菜单方式,命令方式,Delete、recall、pack、zap,逻辑删除,物理删除,给要删除的记录加上删除标记,可以恢复,把加了逻辑删除标记的记录从表中永久地清除掉,不可以恢复,Delete FOR,在满足条件的记录加上逻辑删除标记。,Recall FOR,撤销被逻辑删除的记录。,Pack,Zap,物理删除带逻辑删除标记记录。,物理删除当前表中所有记录,无论是否有逻辑删除标记。,10、记录的查询定位,前面很多地方提到“当前记录”,什么是当前记录? 数据表建立后,系统会为表设置一个指向记录的指针,记录指针所指向的记录称为当前记录。记录的定位就是将记录指针指向指定的记录。,跟记录及指针位置有关的几个函数,recno(),返回当前记录的记录号,reccount(),返回当前表的总记录个数,包括逻辑删除的记录,BOF(),判断指针是否指向表文件头,若指针指向文件头,返回真,否则返回假;,判断指针是否指向表文件尾,若指针指向文件尾,返回真,否则返回假;,EOF(),在表第一条(首记录top)的上面有一个文件起始标志,称文件头 Beginning Of File(BOF); 在表最后一条(尾记录bottom)的下面有一个文件结束标志,称文件尾 End Of File(EOF);,表文件逻辑结构,记录指针,10、记录的查询定位,菜单方式,命令方式,go、skip、locate,菜单“表”| “转到记录”,go n|top|bottom 把记录指针移动到指定记录。绝对移动,n:将记录指针移动到第n条记录,n为正整数; top:将记录指针移动到当前表的第一条记录; bottom:将记录指针移动到当前表的最后一条记录;,skip n 相对于当前记录,记录指针向上或向下的移动若干条 记录;相对移动,n为正数时,向下移动n条记录; n为负数时,向上移动n条记录。,【例】 use 学生基本信息表 ?reccount() ?recno() skip 3 ?recno() go 5 ?recno() skip -3 ?recno() go bottom ?recno() ?eof() skip ?eof() go top ?bof() skip -1 ?bof(),记录查询定位的locate命令,【格式】Locate for ,【功能】执行该命令后,记录指针定位在满足条件的第一条记录上,若无满足条件的记录,则指针指向文件结束位置。若要使指针指向下一条满足条件的记录,需要使用continue命令配合。,为了判断locate或continue是否找到了满足条件的记录,可以使用found()函数,如果有满足条件的记录,该函数返回真,否则返回假。Locate常用的结构是:,Locate for 条件 do while found() continue enddo,该结构的功能是首先找到满足条件的第一条记录,接着在循环体内进行有关处理,然后使用continue找到下一条满足条件的记录,并进行处理,如此循环,一直到最后一条记录。,【例】编程实现:从键盘输入学生姓名,在学生信息.DBF中按姓名进行查询,若查到则显示该记录,若没查到显示“查无此人”。,clear accept “请输入姓名:” to xmm use 学生信息 locate for xm=xmm if found() display else ?“查无此人!” endif use,11、表与表及表与excel文件之间的数据交换,菜单方式,命令方式,【格式】Copy to 文件格式 范围 fields for while ,【功能】把当前表中的全部或部分数据复制到新文件中。 【说明】 1)导出表或txt可省略文件格式,导出excel等需要文件格式 2) fields用以指定复制到新文件中的字段结构及顺序,缺省时为全部字段。 3)范围子句有:all、next n、record n和rest。 若省略则为all 4) for/while 设定条件,(1)表-表、excel、文本等,for和while 的区别:,菜单”文件”-”导出”,for和while 的区别: for: 在指定范围内选择每一条符合条件的记录; while:在指定范围内,从当前记录开始(范围为record n时除外)操作满足条件的记录,一旦遇到不满足条件的记录即终止命令的执行,即使后面有满足条件的记录也不再操作。 若当前记录就不满足条件,则选择的记录数为0。,11、表与表及表与excel文件之间的数据交换,(2) excel、文本等-表,菜单”文件”-”导入”,菜单方式,命令方式,菜单”表”-”追加记录”,append from fields for excel文件格式 sheet sheetname,例: Append from xuesheng.xls xl5 &excelexcel5.0文件格式,(3)从表、excel、文本等文件向表追加数据,第3章 VFP数据库及其操作,3.1VFP数据库及其操作 3.2表及其操作 3.3索引和排序 3.4数据完整性 3.5多个表同时使用,3.3.1 排序,排序是另外生成一个按要求排好顺序的新表,【格式】sort to on /A/D/C, /a/d/c. fields for,【功能】对记录先按指定的指定顺序重新排序后生成一个新的表文件。 【说明】 1) 必须先打开排序的数据表文件。 2) 存在,,时,先按排序,字段1相同时再按排序,依次类推。 3) /A为升序,/D为降序;缺省时按升序。/C 排序时不区分大小写。,例:把student表中的记录按出生日期和姓名升序排序 sort to new1 on csrq,xm,3.3.2 索引,为加快对表的查询操作,并且不改变表中记录的物理顺序,创建的由指向表记录的指针构成的,且这些指针逻辑上按照指定字段或字段表达式的值进行排序的文件就是索引。,这个指定的字段或字段表达式就称为索引表达式。,索引文件和表文件分别存储,当表文件与索引文件一起使用时,就能按索引文件中记载的顺序对原表进行操作。,单索引文件(.IDX),结构复合索引,复合索引文件(.CDX),非结构复合索引,结构化与非结构化索引文件的区别: 1、结构化复合索引的主文件名与表文件名相同,索引文件随表的打开而打开,在更新记录时自动维护;使用方便,最常用。 2、而非结构化复合索引文件的主文件名与表文件名不同,索引文件必须单独打开。,索引文件的分类,只能按一个字段建立索引,也就是只能有一个索引项,可以按多个字段建立索引,也即是可以包含多个索引项,每个索引项都有一个索引标识,代表记录的某一种逻辑顺序,VFP中的索引分为主索引、候选索引、普通索引、惟一索引四种:,主索引:仅适用于数据库表,其索引字段不允许有重复值,一个数据库表只能建立一个主索引。 候选索引:其索引字段不允许有重复值,但一个表可以创建多个候选索引。 普通索引:其索引字段中允许出现重复值,一个表可以创建多个普通索引。 唯一索引:其索引字段中允许出现重复值,一个表可以创建多个唯一索引。其“唯一”表示索引字段出现重复值时,索引列表中只保留首次出现此值的记录。,1、创建索引,命令方式,用表设计器创建索引,【格式1】 index on to for unique | candidate compact additive,【格式2】 index on tag of for ascending | descending unique | candidate,【说明】 ascending升序,descending 降序,compact建立一个压缩的单索引文件,复合索引总是压缩的。 unique建立唯一索引, candidate建立候选索引;都缺省时将建立普通索引, additive不关闭已打开的索引,否则关闭。,命令方式不能建立主索引。,在表设计器创建的索引都是结构化复合索引,use 职工.dbf (1)以仓库号为索引字段,建立单索引文件sy_test.idx, 普通索引 index on 仓库号 to sy_test.idx (2)以职工号为索引字段,建立一个索引标识为ckhjgfh的 结构复合索引文件 职工.cdx,候选索引 index on 职工号 tag zghjgfh candidate (3)以仓库号为第一索引,以职工号为第二索引字段,建立一个索引标识为ckzgh的非结构复合索引文件,唯一索引 Index on 仓库号+职工号 tag ckzgh of sy_test.cdx unique,例 用命令为职工.dbf建立索引,2、使用索引,与表同名的结构化索引文件在打开表的同时自动打开,但对于单索引文件和非结构索引文件,则必须专门打开。,(1)打开索引文件,【格式1】 use index ,在打开表的同时打开与之相关的一系列索引文件,【格式2】 set index to ,在表已打开的情况下,打开与之相关的一系列索引文件,【例】 打开刚才建立的索引文件sy_test.idx和sy_test.cdx use 职工.dbf index sy_test.idx, sy_test.cdx set index to sy_test.idx, sy_test.cdx,2、使用索引,(2)指定当前索引,【格式】 set order to | tag of ,【功能】设置对排序起作用的索引,find | ,【功能】在已打开索引文件的表中快速搜索 索引表达式的值与 | 相匹配的第一条记录。若查找成功,记录指针指向该记录,found()为真,否则,记录指针指向表文件结束标识,found()为假。,seek ,功能同find,2、使用索引,(3)使用索引快速定位,2、使用索引,(4)关闭索引文件,【方式1】 关闭表文件 关闭结构复合索引文件 【方式2】 关闭索引命令 close indexes set index to,关闭非结构复合索引和单索引文件。,2、使用索引,(5)删除索引,【方式1】 表设计器中手动删除 【方式2】 命令方式 delete tag of | all 删除复合索引 delete file 删除单索引,第3章 VFP数据库及其操作,3.1VFP数据库及其操作 3.2表及其操作 3.3索引和排序 3.4数据完整性 3.5多个表同时使用,数据完整性一般包括:实体完整性、域完整性、参照完整性,(1)实体完整性 指表中记录的唯一性,即不允许有重复的记录;一般利用主关键字(主索引)或候选关键字(候选索引)来保证表中记录的唯一性。,(2)域完整性 指字段的取值应满足相应的条件。如:数据类型的要求,字段有效性规则等。,3.4.1数据完整性,(3)参照完整性 参照完整性与表之间的关联有关,其含义是:当插入、删除或修改一个表中的数据时,通过参照引用相互关联的另一个表中的数据,来检查对表的数据操作是否正确.,数据完整性一般包括:实体完整性、域完整性、参照完整性,参照完整性是关系数据库管理系统的一个很重要的功能。 在Visual Foxpro中为了建立参照完整性,必须首先建立表之间的联系(关系)。,3.4.2 建立表之间的联系,在关系数据库中一般通过连接表与表之间的字段来体现和表示联系。,一个表中的一条记录,在另一个表中只有一条记录与之对应,且要求两个表都必须具有相同索引字段,且索引字段为主索引或候选索引,一个表中的一条记录,在另一个表中有多条记录与之对应,且要求两个表都必须具有相同索引字段,且一方索引字段为主索引或候选索引,多方索引字段为普通索引。,一对一关系:,一对多关系:,两个表之间的关系主要有两种:,建立表之间的关系一般在数据库设计器中进行,【例】订货数据库中有仓库、职工、订购单、供应商四个表,请分别建立、修改各个有关联的表之间的联系,3.4.3设置参照完整性,建立参照完整性之前必须首先清理数据库,菜单“数据库” - “清理数据库”,命令 pack database,然后用鼠标右击表之间联系线,右键菜单中选择“编辑参照完整性”,第3章 VFP数据库及其操作,3.1VFP数据库及其操作 3.2表及其操作 3.3索引和排序 3.4数据完整性 3.5多个表同时使用,在前面总是强调对当前表进行操作,好像在同一时刻只能使用一个表。实际上不是这样。在vfp中同一时刻可以在不同工作区中打开多个表。,3.5.1. 多工作区的概念,每打开一个表,系统就会在内存中开辟的一个区域(亦称缓冲区)与磁盘上保存的表之间建立起一种映射关系,使VFP通过缓冲区使用磁盘上表中的数据,这个内存中的缓冲区就称为工作区。,在每一个工作区内只能打开一个表,但可以同时打开与表相关的其他文件,如索引、查询等;如果需要同时打开多个表,可以在不同的工作区内打开,但在任何时刻只能选择一个工作区进行操作, 正在操作的工作区就称为当前工作区, 在当前工作区打开的表,称为当前表。,VFP 6.0系统最多可以同时开辟32767个工作区。 每一个工作区一个编号,分别是1、2、3、32767。,select use ,例:在1号工作区打开student.dbf,在3号工作区打开 chengji.dbf,use student.dbf in 1 use chengji.dbf in 3,在指定工作区内打开一个表的方式为:,【方式1】,【方式2】,先使用select命令指定工作区,再打开表,在use命令中使用in指定工作区,use in ,select 1 use student.dbf select 3 use chengji.dbf,或者,VFP 6.0系统最多可以同时开辟32767个工作区。 每一个工作区一个编号,分别是1、2、3、32767,这样写:,use student.dbf in 0 &?,如果打开表时指定的工作区号为0时,则选择空闲的最小号工作区打开表。,【例1】依次执行下述命令后,判断那个表为当前表? close all use student.dbf in 1 use 职工.dbf in 3 use 成绩.dbf in 4 use 订购单.dbf in 8,【例2】依次执行下述命令后,判断那个表为当前表? close all use student.dbf in 6 use 职工.dbf in 3 use 成绩.dbf in 4 use 订购单.dbf in 8,student表为当前表,没有当前表,Visual FoxPro 6.0启动后,自动指定1号工作区为当前工作区,则在1号工作区内打开的表就为当前表;若没有表在1号工作区内打开,则没有当前表,可以使用select命令指定当前表。,select | ,当多个表在不同工作区内打开时,在当前工作区中不但可以使用本工作区内打开的表的数据,也可以引用其他非当前工作区内打开的表的数据。 引用非当前工作区内表的数据的方法是: 表名.字段名 或 表名-字段名,例:在1号工作区打开了student.dbf,在3号工作区打开了 chengji.dbf,要显示chengji.dbf中学号为20100101的学生的所有课程名和成绩,可以使用命令: list chengji.课程名, chengji.成绩 for xh=“20100101”,利用数据库设计器建立的表之间的联系是永久关系,还可以使用命令建立表之间的临时联系。,3.5.2 表之间的联系,set relation to into ,在当前工作区的表与指定表名的表建立临时关系。,例:通过职工号索引建立职工表与订购单之间的临时关系 use 职工.dbf in 1 order 职工号 use 订购单.dbf in 2 order 职工号 set relation to 职工号 into 订购单,永久关系不能控制表之间记录指针的关系。 而表之间的临时联系可以控制表之间记录指针的关系,当父表指针变动时,子表的指针也会随之变动。,当临时关系不再需要时,可以取消,命令为:,取消当前表与指定表之间的临时关系,set relation to,

温馨提示

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

评论

0/150

提交评论