1VisualFoxPro章目录2VisualFoxPro5.1数据库的建立5.2数据库的操作5.3建立与修改数据库表3VisualFoxPro5.1.1建立数据库文件1.菜单操作方式“文件”“新建”“数据库”“新建文件”系统将打开数据库设计器由于还没有添加任何表和其他对象,所以只是建立了一个空的数据库文件。5.1数据库的建立4VisualFoxPro2.命令操作方式格式:CREATEDATABASE[数据库文件名|?]数据库文件名指定生成的数据库文件,若省略扩展名,则默认为.dbc。如果未指定数据库文件名或用“?”代替数据库文件名,VisualFoxPro会弹出“创建”对话框。保存后该数据库文件被建立,并且自动以独占方式打开该数据库。用该命令建立数据库后并不打开数据库设计器,只是建立一个新的数据库文件并打开此数据库。5VisualFoxPro5.1.2向数据库添加自由表每个表可以有两种存在状态:自由表或数据库表。如果用户要保存的数据关系比较简单,使用自由表就够了。如果要保存的数据需要多个表,表和表之间又存在相互关系,这时就必须建立一个数据库,把这些表添加进数据库。向数据库添加表的方法:“数据库”“添加表”(快捷菜单)数据库表文件与自由表文件一样,扩展名仍然为.dbf。通常,表只能属于一个数据库文件,如果想将一个数据库中的表移到其他数据库,必须先从数据库中移去该数据库表使之变成自由表,然后才能将其添加到另一数据库中。移去或删除数据库中的表的方法:“数据库”“移去表”6VisualFoxPro5.1.3为数据库表建立索引为了建立表之间的永久关联,需要为数据库表建立索引。“显示”“表设计器”5.1.4建立表之间的永久联系表之间的永久联系在数据库设计器中显示为表索引之间的连接线。操作方法:在数据库设计器对话框,首先,用鼠标左键选中父表中的主索引字段,并拖至与其建立联系的子表中的对应字段处,再松开鼠标左键,数据库中的两个表间就有了一个连线,其永久关系就已建立完成。子表中的索引类型决定了要建立的永久联系类型。如果子表中的索引类型是主索引或候选索引,则建立起来的就是一对一关系。如果子表中的索引类型是普通索引,则建立起来的就是一对多关系。7VisualFoxPro编辑联系:双击连线数据库表之间的永久联系和不同工作区中打开的表之间的关联是两个不同的操作。主要区别是:(1)“永久联系”被保存在数据库中,在每次使用表时不需要重新建立。而“关联”没有被保存在文件中,每次打开表时都需重建,所以这种关联成为“临时联系”。(2)“永久联系”反映了数据库中各表之间的默认连接条件,而“临时联系”反映的是不同工作区中表记录指针的联动关系。8VisualFoxPro5.1.5设置参照完整性对于具有永久关系的两个数据库表,当对一个表更新、删除或插入一条记录时,另一个表并未作相应变化,这就破坏了数据的完整性。VisualFoxPro提供一个参照完整性生成器供用户指出保证数据完整性的要求,VisualFoxPro则根据用户要求生成参照完整性规则以保证数据完整性。在建立参照完整性之前必须首先清理数据库,所谓清理数据库是物理删除数据库各个表中所有带有删除标志的记录。“数据库”“清理数据库”9VisualFoxPro1.参照完整性生成器窗口“数据库”“编辑参照完整性”参照完整性生成器窗口有更新规则、删除规则和插入规则3个选项卡,选项卡上有级联(插入规则选项卡上没有此项)、限制和忽略3个选项按钮和一张表格。表格内每行表示一个永久关系。每一个永久关系对应更新、删除、插入3种操作,可以选择“级联”、“限制”、“忽略”3个值之一,即选择对应的3个选项按钮之一。2.设置参照完整性10VisualFoxPro5.2.1数据库的打开与关闭1.数据库的打开“文件”“打开”命令格式是:OPENDATABASE[数据库文件名|?][NOUPDATE][EXCLUSIVE|SHARED]数据库文件名指定要打开的数据库名。如果用户省略数据库文件名或用“?”代替数据库名,系统会显示“打开”对话框。NOUPDATE指定以只读方式打开数据库,EXCLUSIVE指定以独占方式打开数据库,SHARED指定以共享方式打开数据库。5.2数据库的操作11VisualFoxPro打开一个数据库文件,同名的.dct数据库备注文件与.dcx索引文件也一起被打开。在同一时刻可以打开多个数据库,但在同一时刻只有一个当前数据库,所有作用于数据库的命令或函数都是对当前数据库而言的。当打开多个数据库时,系统将最后被打开的数据库作为当前数据库。可以从“常用“工具栏上的数据库下拉列表中选择一个打开的数据库作为当前数据库,或者使用SETDATABASETO命令选择一个数据库作为当前数据库。12VisualFoxPro注意:(1)在数据库被打开的情况下,它所包含的所有表都可以使用。但这些表并没有被自动打开,使用时仍需要用USE命令打开。(2)当用USE命令打开一个表时,系统首先在当前数据库中查找该表,如果找不到,则在数据库之外继续查找并打开指定的表(只要该表在指定的路径下存在)。实际上要打开一个表并不一定要打开数据库,这是VisualFoxPro不够完善的地方,因为它与以前版本的FoxPro兼容。2.数据库的关闭CLOSE[ALL|DATABASE]其中ALL用于关闭所有对象,如数据库、表、索引等。DATABASE用于关闭当前数据库和数据库表。13VisualFoxPro5.2.2数据库的修改“显示”“数据库设计器”MODIFYDATABASE[数据库文件名|?][NOWAIT][NOEDIT]如果用户省略数据库文件名或用“?”代替数据库名,系统会显示“打开”对话框。NOWAIT只在程序中使用,在命令窗口无效。NOWAIT选项的作用是在数据库设计器打开后程序继续执行,即继续执行MODIFYDATABASENOWAIT之后的语句。如果不使用该选项,则在数据库设计器打开后,程序暂停,直到数据库设计器关闭后程序才会继续执行。NOEDIT选项只是打开数据库设计器,而禁止对数据库进行修改。14VisualFoxPro5.2.3数据库的删除DELETEDATABASE[数据库文件名|?][DELETETABLES][RECYCLE]数据库文件名指定要删除的数据库名,此时要删除的数据库必须处于关闭状态。被删除的数据库中的表则变成自由表。如果省略数据库文件名或用“?”代替数据库名,系统会显示“打开”对话框,可从其中选择要删除的数据库文件名。在一般情况下,删除数据库文件并不删除数据库中的表等对象。要在删除数据库文件的同时从磁盘上删除该数据库所含的表,可以在命令中选择DELETETABLES选项。RECYCLE选项表明将删除的对象放入回收站中。15VisualFoxPro一个自由表在数据库设计器中添加到数据库就成为一个数据库表。5.3.1在数据库中直接建立表“数据库”“新建表”(打开数据库设计器后)若打开了数据库,则CREATE命令在数据库中直接建立表。若没有打开数据库,则CREATE命令建立的是自由表。数据库表的表设计器对话框与自由表的表设计器对话框有所不同。数据库表的表设计器对话框的下部,多了显示、字段有效性、匹配字段类型到类和字段注释4个输入区域。这是因为数据库表具有一些自由表所没有的属性,包括:5.3建立与修改数据库表16VisualFoxPro(1)数据库表可以使用长表名和长字段名。(2)可以为数据库表中的字段指定标题和添加注释。(3)可以为数据库表的字段指定默认值和输入掩码。(4)数据库表的字段有默认的控件类。(5)可以为数据库表规定字段级规则和记录级规则。(6)数据库表支持参照完整性的主关键字索引和表间关系。(7)支持INSERT、UPDATE和DELETE事件的触发器等。1.字段的显示属性(1)显示格式在数据库表设计器中,显示区的“格式”文本框用于键入格式表达式,确定当前字段在浏览窗口、表单或报表中显示时采用的大小写、字体大小和样式。格式字符(P94表5.2)17VisualFoxPro(2)输入掩码输入掩码用于指定字段的输入格式。使用输入掩码可减少人为的数据输入错误,提高输入准确性,保证输入的字段数据格式统一和有效。(P95表5.3)输入掩码必须按位指定,如设置99-999,表示相应字段只能输入数字,可输入5位数字,第3个符号“-”不是输入掩码,照原样显示,“-”不用输入。(3)标题指定字段显示时的标题。数据库表的字段名最多包含128个字符。在定义数据库表的字段名时,一般都比较简练,但在输出时难于表现字段的含义。为此,VisualFoxPro提供了“标题”属性,标题用于为当前字段指定在浏览窗口、表单或报表中的标题显示内容。18VisualFoxPro2.有效性规则有效性规则是一个与字段或记录相关的表达式,通过对用户的值加以限制,提供数据有效性检查。建立有效性规则时,必须建立一个有效的规则表达式,以此来控制输入到数据库表字段和记录中的数据。如果输入的值不满足规则要求,则拒绝该值。根据激活方式的不同,有效性规则分两种:字段有效性规则-----字段有效性规则是对一个字段的约束,检查单个字段中输入的数据是否有效。记录有效性规则------记录有效性规则是对一个记录的约束,当插入或修改记录时被激活,常用来检查数据输入的正确性。记录有效性规则只有在整条记录输入完毕后才开始检查数据的有效性。有效性规则只在数据库表中存在。规则存储在数据库文件中。19VisualFoxPro(1)字段有效性规则栏输入一个逻辑表达式。如对于性别字段输入:性别=男.OR.性别=女。信息栏指定输入有误时的提示信息,如性别只能是男或女。默认值栏用于指定当前字段的默认值。(2)记录有效性记录有效性指建立一规则对同一记录中不同字段之间的逻辑关系进行验证。“表”选项卡“记录有效性”中:“规则”框,设置记录有效性规则。“信息”框,设置违反该规则时显示的错误提示信息。如在“规则”框输入YEAR(工作日期)-YEAR(出生日期)=18在“信息”框输入参加工作要年满18周岁。20VisualFoxPro(3)触发器触发器是在某些事件发生时触发执行的一个表达式或一个过程。这些事件包括插入记录、修改记录和删除记录。当发生了这些事件时,将引发触发器中所包含的事件代码。触发器包括插入触发器、更新触发器和删除触发器。指定一规则,当对数据库表进行插入(包括追加)、更新和删除时,验证规则,只有当规则成立时才能进行相应操作。例如设置“删除触发器”的表达式为EMPTY(姓名)表示只有当相应记录的“姓名”字段为空时才能删除该记录,这个触发器用于保证不误删除记录。5.3.2修改数据库中的表快捷菜单中选择“修改”