第3章VISUAL FOXPRO数据库及其操作_第1页
第3章VISUAL FOXPRO数据库及其操作_第2页
第3章VISUAL FOXPRO数据库及其操作_第3页
第3章VISUAL FOXPRO数据库及其操作_第4页
第3章VISUAL FOXPRO数据库及其操作_第5页
已阅读5页,还剩99页未读 继续免费阅读

下载本文档

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

文档简介

1、第第3章章 VISUAL FOXPRO数据库及其操作数据库及其操作3.1.1 3.1.1 基本概念基本概念数据库,通过一组系统文件将相互联系的数据库表及其相关的数据库对象统一组织和管理。在VFP6.0 中;数据库的扩展名.dbc; 相关的文件扩展名.dct(数据库备注文件) 相关的文件扩展名.dcx(数据库索引文件)注意:1.刚建立的数据库是空的数据库,没有数据,也不能输入数据,2.用户一般不直接使用这些文件。3.1.2 建立数据库1. 在项目管理器中建立数据库;2. 文件/新建/数据库;3. 使用命令交互建立数据库。Create database 数据库名数据库名|?该方式不打开数据库设计器

2、,只是数据库处于打开状态。打开数据库的命令: open database 3.1.3 使用数据库1.在项目管理器中打开数据库;2.通过打开对话框打开数据库;3.使用命令打开数据库; OPEN DATABASE filename|?exclusive|shared noupdatevalidateFilename: 要打开的数据库名;使用?则显示打开对话框。Exclusive:以独占方式打开数据库,不允许其它用户在同一时刻也使用该数据库。Shared:以共享方式打开数据库。Noupdate:指定数据库按只读方式打开。Validate:指定vf检查在数据库中引用的对象是否合法;注意:注意:、为使数

3、据库中的表只读,需要在USE命令打开表时使用 NOUPDATE USE 学生学生 NOUPDATE & 以只读方式打开以只读方式打开、打开数据库,其中的表可以使用,但这些表不会自动打开,需要使用USE命令打开。、当用USE命令打开一个表时,vf首先在当前数据库中查找该表,vf会在数据库外继续查找,实际打开一个表并不一定要打开数据库,这是vfp的一个缺点。VFP在同一时刻可打开多个数据库,但在同一时刻只有一在同一时刻可打开多个数据库,但在同一时刻只有一个是当前数据库,指定当前数据库的命令是:个是当前数据库,指定当前数据库的命令是: SET DATABASE TO 数据库名数据库名3.1.

4、4 修改数据库o在项目管理器中打开数据库设计器;o通过打开对话框打开数据库设计器;o使用命令打开数据库设计器;o MODIFY DATABASEDatabaseName|?o NOWAITNOEDITnDatabaseName:要修改的数据库名;?可打开对话框。nNOWAIT:打开数据库设计器后程序继续执行。该项只在程序中使用。nNOEDIT:只是打开数据库设计器,而禁止对数据库进行修改。注意o 在建立数据库时建立了扩展名分别为dbc、dct和dcx的三个文件,用户不能直接对这些文件进行修改。o 打开数据库设计器,可在其中进行数据库对象的建立、修改和删除等操作。举例o 创建一个数据库学籍管理n

5、 (创建数据库)n (打开数据库)n (修改数据库3.1.5 删除数据库在项目管理器中;选中数据库,按“移去”按纽;可删除。再选择该按纽注意:o VFP6.0 的数据库文件并不真正含有数据库表或其它数据库对象,只是在数据库文件登录了相关的条目,表、视图或其它数据库对象是独立存放在磁盘上的。 如果要在删除数据库的同时,删除表等对象,需要使用命令DELETE DATABASE DatabaseName|?DELETETABLESRECYCLEDELETETABLES:该选项表示删除数据库的同时删除其中的 表(.dbf文件)RECYCLE:选择该项则将删除的数据库文件和表文件等放入 Windows的

6、回收站中,还可还原它们。注意:如果设置:SET SAFETY ON 则VFP6.0会提示是否 要删除数据库,否则不出现提示,直接进行删除操作。 注意:操作数据库的常用命令操作数据库的常用命令 o 建立数据库:CREATE DATABASE o 打开数据库:OPEN DATABASE o 打开数据库设计器:nMODIFY DATABASE o 设置当前数据库:SET DATABASE TO o 显示当前数据库结构:nDISPLAY DATABASE o 关闭数据库:CLOSE DATABASE ALLo 删除数据库:DELETE DATABASE 3.2 建立数据库表o 有多个相关的表放入数据库

7、中,这些表叫数据库表。3.2.1 在数据库中建立表用数据库设计器;建立表,可进行下列选择:表设计器3.2.1 在数据库中建立表表的基本概念解释o 字段名n 即关系的属性名或表的列名,一个表有若干列(字段)构成;n 每个列都必须有一个惟一的名字,这个名字就是字段名;n 将来可以通过字段名直接引用表中的数据;n 字段名可以是汉字或西文标识符号。姓名成绩出生日期婚否说明张三8004/01/78.t.李四6005/09/84.f.王五7006/10/82.f.一个关系相当于一张二维表格学生(姓名,成绩,出生日期,婚否,说明)表的基本概念解释o 字段类型和宽度n字符型n货币型n数值型n日期型n日期时间型

8、n双精度型n整型n逻辑型n备注型n字符型n备注型(二进制)表的基本概念解释o 空值(null)n 尚未存储数据的字段,这时的空值与空(或空白)字符串、数值0等具有不同的含义;n 空值就是缺值或不确定值。表的基本概念解释o 字段有效性组框n 在字段有效性组框中可以定义字段的有效性规则以及违反规则时的提示信息和字段的默认值。表的基本概念解释o 显示组框n 在显示组框中可定义显示的格式、输入的掩码和字段的标题表的基本概念解释o 字段注释n 可以为每个字段添加注释,便于以后维护在数据库中直接建立表的方法o Open database 数据库名o Create 数据表名o 打开表的命令:n Use 数据

9、表名o 例如:在订货管理数据库中建立仓库表,使用命令n Open database 订货管理n Create 仓库3.2.2 修改表结构o 表结构可以任意修改、增加字段、删除字段、修改字段名、o 字段类型、字段宽度、可以建立、修改、删除索引,可以建立、修改、删除有效性规则等。3.2.2 修改表结构o 可以修改:n 1、修改已有的字段n 2、增加新字段n 3、删除不要字段修改方法:o 1、在数据库设计器中;在某表上单击右键,选择“修改”o 2、用命令修改:n USE 表名n MODIFY STRUCTURE3.3 表的基本操作o 表一旦建立后,自然就需要对它进行相应的操作:n 添加新记录n 删除

10、无用记录n 修改有问题的记录等3.3.1 使用浏览器操作表o 项目管理器/数据库/表/浏览方法二、在数据库设计器中选择表,单击菜单: 数据库/浏览方法3、在命令方式下: USE 表名 BROWSE3.3.2 增加记录的命令o 1、APPEND n 在表的尾部增加记录,立即输入一条或多条记录o 1-1、APPEND BLANKn 在表的尾部增加一条空白记录,然后用EDIT、CHANG、Browse再输入命令,或用REPLACE命令直接修改该空白记录。2、insert 命令 该命令可以在表的任意位置插入新的记录,命令格式如下: INSERT BEFOREBLANKo INSERT :在当前记录之后

11、插入一条新记录o INSERT BEFORE:在当前记录之前插入一条新记录。o INSERT BLANK:在当前记录之后插入一条空白记录。然后用EDIT、CHANG、Browse再输入命令,或用REPLACE命令直接修改该空白记录。注意:注意:如果表建立了主索引或侯选索引,则不能用以上的命令。必须使用SQL的INSERT命令3.3.3 删除记录命令o 删除分为:n 逻辑删除 (只是做删除标记,并没有真正删除)n 物理删除 (对做过删除标记的记录,真正删除)与删除相关的命令有:1、置删除标记的命令 DELETE FOR 逻辑条件 例1:DELE *删除当前记录 例2: DELE FOR 年龄=2

12、0 *删除表中20岁的记录2、恢复记录的命令 RECALL FOR 逻辑条件 例1:RECALL 例2 RECALL FOR 性别=“女”与删除相关的命令有:3、物理删除有删除标记的记录 PACKPACK4、物理删除表中的全部记录 ZAPZAP 表结构依然存在表结构依然存在3.3.4 修改记录的命令1 1、交互修改的、交互修改的EDITEDIT、CHANGECHANGE2 2、直接修改的直接修改的REPLACE REPLACE 命令命令 REPLACE 字段名字段名1 With 表达式表达式2,字段名字段名2 With 表表达式达式2,for 条件表达式条件表达式 REPL ALL REPL

13、ALL 年龄年龄 with with 年龄年龄+1+1 REPL ALL REPL ALL 年龄年龄 with with 年龄年龄+1 +1 for for 性别性别=“=“男男”3.3.5 显示记录的命令LIST/DISPLAYFIELDSFIELDLISTFOR 逻辑表达式offto printerprompt|to FILE FileName例:LIST FOR 性别=男 FIEL 姓名,学号,性别3.3.6 查询定位命令1、用、用GOTO命令直接定位(绝对定位)命令直接定位(绝对定位) GOTO命令和命令和GO命令是等价的,命令格式为: GO n; GO record; go top;

14、 go bottom 例:go 1; go reco 3 3.3.6 查询定位命令2、SKIP(相对定位)相对定位) skip SKIP +n ; SKIP n3.3.6 查询定位命令3、LOCATE(按条件定位)按条件定位) CONTINUE常用结构 loca for 条件表达式功能:按条件定位,该命令执行后记录指针定位在满足条件的第1条记录,如果没有满足条件的记录则指针指向文件结束位置。如果要继续指向下一个满足loca 条件的记录,使用CONTINUE命令继续为了判别是否找到了满足条件的记录,可以使用函数FOUND该函数的值如果为真,则表示有满足条件的记录。该函数的值如果为真,则表示没有满

15、足条件的记录。 LOCATE命令的常用结构命令的常用结构Locate for 条件表达式DO WHILE FOUND() 处理. continue enddo use 学生loca for 性别=女 DO WHILE FOUND() disp cont enddo 例子操作表的常用命令操作表的常用命令o建立数据表:CREATE o打开数据表:nUSE IN | o 关闭数据表:nUSE IN | o 关闭所有工作区中的数据表:nCLOSE TABLES ALLo 关闭所有打开的文件:nCLOSE ALLo 打开表设计器(显示/修改表结构):nMODIFY STRUCTUREo打开“浏览”窗口(

16、显示/修改表记录):nBROWSE FIELDS 操作表的常用命令操作表的常用命令o 显示表结构o DISPLAY | LIST STRUCTURE TO PRINTER PROMPT|TO FILE o 显示表记录o DISPLAY | LIST FIELDS FOR WHILE TO PRINTER PROMPT|TO FILE o 当“范围”省略时,DISPLAY命令默认为当前记录,而LIST默认为全部记录。操作表的常用命令o 交互式修改记录n EDIT | CHANGE FOR WHILE o 直接修改记录nREPLACE WITH ,字段名2 WITH表达式2 . 范围 FOR |

17、WHILE o 在表的末尾追加(空白)记录:nAPPEND BLANKo 利用已有文件追加记录nAPPEND FROM FIELDS FOR SDF 操作表的常用命令o在当前记录之后(之前)插入(空白)记录:nINSERT BEFORE BLANKo删除记录(删除标记):nDELETE 范围 FOR WHILE o恢复记录(去删除标记):nRECALL 范围 FOR WHILE o(8)从磁盘上删除表中有删除标记的记录:nPACKo从磁盘上删除表中所有的记录:nZAPo注意:如果在表上建立了主索引或候选索引,则不能用以上的APPEND或INSERT命令插入记录,必须使用SQL的INSERT命令

18、。 操作表的常用命令操作表的常用命令o 查找(定位)记录n LOCATE FOR 范围 WHILEo 继续查找(满足LOCATE条件的)下一记录n CONTINUEo 过滤记录n SET FILTER TO o 筛选字段n SET FIELDS TO | ALLo 定位记录指针n GO | GOTO | BOTTOM | TOPo 移动记录指针n SKIP 数值表达式操作表的常用命令操作表的常用命令o 复制表文件的结构:n COPY STRUCTURE TO FIELDS o 复制表文件:n COPY TO 范围 FOR WHILE FIELDS o 将表文件复制成文本文件:n COPY TO

19、 TYPE DELIMITEDo 文件复制命令:n COPY FILE TO o 将表的结构复制成记录内容:n COPY STRUCTURE EXTENDED TO FIELDS 操作表的常用命令操作表的常用命令o 选择当前工作区:nSELECT | o 物理排序:n SORT TO ON /A | /D /C , /A | /D /C. ASCENDING | DESCENDING FIELDS FOR o 显示文件内容:nTYPE TO PRINTER PROMPT | TO FILE o 设置是否以独占的方式打开数据表:nSET EXCLUSIVE ON | OFF排序o 所谓“排序”,

20、就是指定记录排列的先后顺序。建表时,输入到新表的记录按照输入顺序存储,在浏览表时,记录按输入的顺序出现。o SORT TO ON /A | /D /C , /A | /D /C. ASCENDING | DESCENDING FIELDS FOR o /A | /D:/A按升序排列,/D按降序排列,默认为按升序排列;o /C:排序时不区分大小写字母,默认区分大小写;o ASCENDING | DESCENDING:除了用/A | /D说明升序或降序的字段外,其他参与排序的字段的排序方式,默认为按升序排列; 例如o 要将“基本信息”表生成一个按届次降序排序的新表:n SORT ON 届次/D T

21、O JBXX1o 排序后并不改变原表的顺序,但可以生成一个排过序的新表。3.4 索引o 按特定的顺序定位、查看或操作表中的记录,可以使用索引。o VPF 可以灵活对同一表创建和使用不同的索引,使人们可按不同顺序处理记录。3.4.1 基本概念o vfpvfp 索引是由指针构成的文件,这些指针在逻辑上索引是由指针构成的文件,这些指针在逻辑上按照索引关键字值进行排序。按照索引关键字值进行排序。o 索引文件和表文件分别存储,并且不改变表中记索引文件和表文件分别存储,并且不改变表中记录的物理顺序。录的物理顺序。o 创建索引也就是创建一个指向创建索引也就是创建一个指向. .DBFDBF文件记录的指文件记录

22、的指针构成文件针构成文件. .o 若要根据特定顺序处理表记录若要根据特定顺序处理表记录, ,可以选择一种索引可以选择一种索引. . o 从逻辑上按照索引关键字的值进行升序或降序排列。从逻辑上按照索引关键字的值进行升序或降序排列。2、索引的类型o主索引o侯选索引o惟一索引o普通索引1、主索引o 主索引在指定字段或表达式中不允许出现重复值的索引。即在数据表的全部记录中都不能出现重复。不允许有重复值。否则VF6.0返回出现错误信息。o 只能在数据库表中创建和使用,而且一个数据表只能指定一个主索引。 2、候选索引o 候选索引和主索引具有相同的特性,建立候选索引的字段可以看成 是候选关键字,所以一个表可

23、以有多个候选索引。o 索引关键字不允许有重复值索引关键字不允许有重复值, ,对每个自由表和对每个自由表和数据库表都数据库表都可以建立多个侯选索引可以建立多个侯选索引。3、惟一索引o 是VFP为保持与低版本软件兼容而保留的一种索引类型。像普通索引一样,但是在索引表中只保留数据表中与索引字段值相同的第一条记录。4、普通索引o 它允许字段中出现重复值,并且索引项中也允许出现重复值。在一个表中可以建立多个普通索引。o 数据表可创建该索引,自由表也可以。 3.4.2 在表设计器中建立索引3.4.3 用命令创建索引o 格式一:n Index On 索引表达式 To 独立索引文件名Uniqueo 格式二:n

24、 Index On 索引表达式 Tag 索引名 Of 复合索引文件名 ASCENDING|DESCENDING Unique|CANDIDATE解释:o 在vfp中索引文件应该索引文件应该有独立索引文件和复合索引文件2种。索引文件细化为三种o 1、结构复合索引文件n 该文件的主文件名与表文件的主文件名同名,扩展名为cdx,在表设计器中指定索引时,自动生成该索引文件,该文件在打开表时自动打开,关闭表时自动关闭。一个表文件最多只能有一个结构复合索引文件。索引文件细化为三种o 2、非结构复合索引文件:n 该文件的主文件名与表文件的主文件名不相同,扩展名也为cdx,它必须使用Index命令建立,要使用

25、该文件时,必须先用set index to 索引文件名打开,然后再用set order to 索引名命令来指定有效的索引。n 非结构复合索引文件不会自动生成,而且也不会自动随表文件的打开而打开,随表文件的关闭而关闭。索引文件细化为三种o 3、独立索引文件:n 扩展名为.IDX,一个独立索引文件只能有一个索引标识,即一个独立索引文件只能包含一种索引方式。n 独立索引文件不能降序索引,它是为了向下兼容才保留的,在VFP中很少用到独立索引文件。3.4.4 使用索引o 1、打开单索引或非结构复合索引文件o SET INDEX TO 索引文件列表o 2、设置当前索引o SET ORDER TO 索引序号

26、|TAG 索引项o 有多个索引文件打开或文件包含多个索引时,o 用来设定当前作用的索引,其中索引序号决o 定打开时的列表顺序。将结构索引文件中的“订购单号”设置为当前索引SET ORDER TO TAG 订购单号或SET ORDER TO 订购单号例:3.4.5 使用索引快速定位o SEEK命令的格式:n SEEK 索引关键字值ORDER 索引序号|索引名 ASCENDING|DESCENDINGn 在指定升序或降序索引中定位指定索引关键字值的第1条记录。o 例:假设当前正在使用学生表,将记录指针定位在学号为9921105的记录上n SEEK 9921105 ORDER 学号例:SEEK “8

27、888888” ORDER 学号 DISP3.4.6、删除索引1.在表设计器中使用“索引”选项卡,选择对象按删除按纽。 2.命令格式:DELETE TAG 索引名|ALL 命令说明:用于删除指定的索引或全部索引。DELETE TAG 索引名DELETE TAG 索引名|ALL3.5 数据完整性o 在数据库中数据完整性是指保证数据正确的特性。o 数据完整性一般包括实体完整性、域完整性和参照完整性等,VFP提供了实现这些完整性的方法和手段。3.5.1 实体完整性与主关键字o 是保证表中记录唯一的特性,即在一个表中不允许有重复记录。VFP利用主关键字或侯选关键字来保证表中的记录惟一性,即保证实体惟一

28、性。3.5.2 域完整性与约束规则o 数据类型的定义都是域完整性的范畴。o 域约束规则也称作字段有效性规则,主要用于数据输入正确性的检验。字段有效性规则:对整个字段的有效性加以规范,其中有3个属性1.规则 应当是一个关系表达式或逻辑表达式,结果为 .F.检验未通过;.T.检验通过。2、信息 检验未通过时将显示本“信息”,如果省略,系统以默认信息显示。信息是字符串表达式3、默认值 设定该字段的初始值,以便提高表中数据输入的速度和准确性。3.5.2 域完整性与约束规则例:o 订货管理数据库中的职工表为例o 设职工的工资有效性规则在10003000元之间,当输入的职工工资不在此范围时给出出错提示,职

29、工的默认工资值是1200。o 规则:工资=1000.and.工资=3000o 信息:“工资输入错误,应该在1000-3000元之间。”o 默认:12003.5.3参照完整性与表之间的关系o 参照完整性与表之间的关联有关;o 它的含义:n 当插入、删除或修改一个表中的数据时,通过参照引用相互关联的另一个表中的数据,来检查对表的数据操作是否正确。参照完整性是指不允许在相关数据表中引用不存在的记录参照完整性应满足如下三个规则:1、在相关联的数据表间,子表中的每一个记录在对应的父表中 都必须有一个父记录。2、对子表作插入记录操作时,必须确保父表存在一个父记录。3、对父表作删除记录操作时,其对应的子表中

30、必须有子记录存在。1、建立表之间的联系o 一般在父表中建立主索引,在子表中建立普通索引o 通过主索引与普通索引建立2个表之间的联系。o 用教学管理作例子:学生与学生个人情况是一对一关系专业与学生是一对多关系。 2、设置参照完整性约束o 首先清理数据库,即删除数据库各表中所有带有删除标记的记录。o 数据库/清理数据库 o 功能与命令:PACK DATABASE 一样。o 在表之间的联系线上,单击右键,在快捷菜单选择“参照完整性”关于级联、限制、忽略的解释参照完整性规则包括选择该选项卡更新规则更新规则:规定了当更新父表中的连接字段(主关键字)值规定了当更新父表中的连接字段(主关键字)值时,如何处理

31、相关子表中的记录:时,如何处理相关子表中的记录:删除规则删除规则:规定了当删除父表中的记录时,如何处理子表中的规定了当删除父表中的记录时,如何处理子表中的 相关的记录:相关的记录:插入规则插入规则:规定了当插入子表中的记录时,是否进规定了当插入子表中的记录时,是否进行参照完整性检查:行参照完整性检查:3.6 自由表表有2种:自由表和数据库表自由表:独立存在的表数据库表:属于数据库的表称为“数据库表”表名的扩展名均为:.dbf1、使用表设计器:2、使用命令窗口:CREATE 表名3、使用向导 在在VFP中创建新表方法分为:中创建新表方法分为:在在VFPVFP中创建表的地方:中创建表的地方:o 1

32、、在项目外创建表;文件/新建/表/新建文件o 2、在项目内创建表;在项目管理器中;数据/自由表/新建o 3、在项目中创建数据库表;o 4、在项目中创建自由表1、在项目管理器中添加2、在数据库设计器中,用快捷菜单添加。数据库/添加3、命令添加: ADD TABLE 表名|?NAME 长表名 ?显示打开对话框长表名:=128个字符一个表只能属于一个数据库。如果要将某个数据库的表添加到当前数据库中;操作:选数据库表-移去-打开当前数据库-添加3.6.2 将自由表添加到数据库 ADD TABLE TTT NAME 2001 级学生军训表将自由表TTT添加到当前数据库。表名为2001 级学生军训表USE

33、 TTT=USE 2001 级学生军训表例:注意o 一个表只能属于一个数据库,当一个自由表添加到某个数据库后就不再是自由表了。o 所以不能添加已经属于某个数据库的表到当前数据库,否则会有出错提示。3.6.3 从数据库中移出表o 1、在项目中移去表; n 移去或删除表o 在“项目管理器”中,选择数据库;选择要移去的表, 单击“移去” 在提示中选择“移去”或“删除”。o 命令:REMOVE TABLE 表名|?DELETERECYCLEn ?打开移去对话 框n DELETE彻底删除n RECYCLE移去并不立即删除。3.7 多个表的同时使用 在实际操作中往往需要同时使用多个数据表多个数据表,在VF

34、6.0中,最多有32767个数据表操作,但是每次只能对其中的一个进行操作。这个被选中的数据表叫做当前表,用户可以随时切换到其他表操作。3.7.1多工作区的概念 o 发所谓打开一个数据表,实质上就是将一个数据表的信息,调入计算机内存某个特定存储区域的过程。这个特殊的存储区域,被称为工作区。 o 同时使用多个表,VFP系统必然能够为用户在内存中同时建立多个工作区。每个工作区中只能打开一个表。3.7.1多工作区的概念o 每个工作区都有自己的编号,它们是1、2、332767。每个工作区还有自己的名称,其中前10个是A、B、CJ后面的是W11、W12、W32767。o 每次启动VFP以后,系统总是默认1号工作区为当前工作区。o 如果这里指定为0,则选择编号最小的可用工作区

温馨提示

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

评论

0/150

提交评论