




已阅读5页,还剩50页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章数据库与表的操作,在VisualFoxPro中几乎所有的操作都同时提供了菜单界面方式的实现和命令方式的实现,使用两种方法执行的结果是相同的。本章重点介绍如何通过界面方式实现对数据库及表的操作,而命令的实现方式全部集中在本章的最后一节进行说明。3.1表的创建与维护3.2数据库设计器的使用3.3多表操作3.4表的命令操作方式思考题,3.1表的创建与维护,VisualFoxPro中有两种类型的表;属于数据库的表和自由表。属于数据库的表与自由表相比,有一些特殊的性质。例如,一般自由表的字段名最长不能超过10个英文字符(个汉字),而数据库的表则可以突破这一限制,使用长字段名。数据库的表可以从数据库中移去,变成自由表。反之也可。3.1.1表的创建3.1.2表的维护,3.1.1表的创建,在VisualFoxPro中,创建一个新表分为两个步骤:(1)创建表的结构。即说明表包含哪些字段,每个字段的数据类型及长度。(2)向表中输入记录。即向表中输入数据。1.表结构的设计2.表结构的创建3.表记录的添加,1.表结构的设计,表3.1“学生表”的表结构,说明:“学生表”的“XH”字段,第1、2位是年级,第3、4位是专业号,第5-7位是学号。,2.表结构的创建,1.项目管理器中选择“表”,按“新建”按钮;2.“文件”“新建”,选择“表”。备注型与通用型字段中已分别显示memo与gen标志,意味着这两种字段用其它方法来输入或修改数据。,3.表记录的添加,1.建立表结构后立即输入数据;2.打开“浏览”窗口后,“显示”“追加方式”。注意:1.日期型数据必须与日期格式相符,默认按美国日期格式mm/dd/yy输入。2.某记录的备注型或通用型字段非空时,其字段标志首字母将以大写显示,即显示为Memo或Gen。,3.1.2表的维护,表的维护是指对表进行增加、删除和修改。包括表结构的维护和记录数据的维护。1.修改表的结构2.表的索引3.记录数据的浏览与维护,1.修改表的结构,表结构的修改通常在表设计器中进行,打开表设计器的方法:1.在“项目管理器”中选择要修改的表名,然后单击“修改”按钮。2.在“数据库设计器”中选择要修改的表,然后点击“数据库设计器”中的“修改表”按钮或选择“数据库”菜单的“修改”命令。3.打开表,“显示”“表设计器”。4.浏览表,“表”“属性”“修改”。,2.表的索引,索引可以帮助用户对表中的数据排序,以加速检索数据的速度。一个表可以建立多个不同的索引。(1)建立一个字段的索引(2)建立多个字段的索引(3)激活索引(4)索引类型,(1)建立一个字段的索引,1.在“表设计器”的“字段”选项卡中,单击要建立索引字段的“索引”列。2.在“表设计器”的“索引”选项卡中,输入“索引名”,选定“类型”,在“表达式”中输入要建立索引的字段名。例如:在“学生表”中,对xh,csrq和jxj字段建立索引。,(2)建立多个字段的索引,若索引表达式中包含多个字段,通常将字段都转换成字符型数据,再连接成一个字符串。排序时按第一个字段排列,若字段值相同,再按第二个字段排列,依此类推。如果用多个“数值型”字段建立一个索引表达式,可以直接将字段相加,但将按字段相加的和对记录进行排序。例如:对“学生表”按jxj字段排序,若jxj相同,再按csrq排序。,(3)激活索引,“表”“属性”“数据工作期”“属性”setorderto索引名,(4)索引类型,主索引:在指定的字段或表达式中不允许出现重复值的索引。只有数据库中的表可以主索引,而且每个数据库的表只能建立一个主索引。主索引主要用来在一个永久关系中建立完整性。候选索引:同主索引一样具有唯一值,但是一个表可以有多个候选索引。普通索引:允许索引对应的表达式的值重复,一个表可以建立多个普通索引。唯一索引:同普通索引一样允许重复值,但是只显示重复值的第一条记录。,3.记录数据的浏览与维护(1),1.查看和浏览表中内容(1)表打开后,选择“显示”“浏览”;(2)在项目管理器中,选择要浏览的表,单击“浏览”;(3)“窗口“”数据工作期“”浏览“。2.修改记录数据(1)在浏览或编辑窗口中,直接修改某一个字段值;(2)打开浏览或编辑窗口后,”表“”替换字段”。,3.记录数据的浏览与维护(2),3.向表中加入新记录“显示”“追加方式”命令。在填充新记录的字段时,可以用Tab键在各字段间切换。setcarryON/OFF:表示在建立一个新记录时是(ON)否(OFF)将上一记录的内容复制下来。,3.记录数据的浏览与维护(3),4.删除表中记录从表中删除记录为两步:首先是单击待删除记录左边的小方框标记,标示记录并没有真正从表中删除,为了真正删除记录,应选择“表”“彻底删除”命令,在提示框中单击“是”按钮,这样将从表中删除带标识的记录并重组表中的记录。,3.2数据库设计器的使用,VisualFoxPro的数据库是用于对表及表间关系进行管理的。3.2.1数据库的创建3.2.2数据库表的设置3.2.3创建表间的永久关系,3.2.1数据库的创建,1.在项目管理器中选择“数据库”,按“新建”按钮;2.“文件”“新建”,选择“数据库”。,3.2.2数据库表的设置(1),字段.显示格式:控制该字段值在浏览、表单和报表中的输出格式。参见表3.9。输入掩码:控制输入该字段数据的格式,屏蔽非法内容的输入。参见表3.10。标题:显示表的字段标题的名字例如:设置“学生表”xh字段的标题为“学号”,最多只能输入7个数字字符。,3.2.2数据库表的设置(2),字段.字段有效性规则:规定当前字段值应满足的条件信息:当字段输入的值未满足规则的条件,系统显示的提示内容。是一个字符串。默认值:设置当前字段的初始值。例如:设置“学生表”jxj字段的初始值为200,必须在0到1000之间,若输入值超过范围,则提示“奖学金应在0到1000之间。”,3.2.2数据库表的设置(3),表.记录有效性记录有效性规则检查同一个记录中有关字段之间的是否满足条件。包括验证规则的设置与出错信息的设置。例如:要求在“课程表”中每一个学分必须不少于18个课时。,3.2.3创建表间的永久关系,表间的永久关系要在数据库中建立。表间要建立永久关系,其中主动表应建立主索引(或者候选索引),被动表建立普通索引,拖动主动表中的主索引(或者候选索引)到被动表中的普通索引上,这样表与表之间就通过公共字段的索引建立了永久关系。该关系作为数据库的一部分被存放起来,只要数据库一打开就存在,直到关系被删除为止。永久关系分为一对多和一对一两种。,3.3多表操作(1),在VisualFoxPro中建立表间关系的方式有两种:一种是在工作区中建立临时关系,一种是在数据库中建立永久关系。临时关系只在当前有效,在关闭表或者VisualFoxPro程序之后,临时关系就不存在了;而永久关系作为数据库的一部分被保存于数据库中,只要一打开数据库,永久关系就建立了。在临时关系中,子表(或被动表)的记录指针将随着父表(或主动表)的记录指针的移动而移动。,3.3多表操作(2),被动表的公共字段应建立普通索引。临时关系通常在“数据工作期”中建立,或使用setrelation命令建立。例3.20建立“学生表”与“成绩表”间一对多的关系。例3.21建立“成绩表”与“学生表”间多对一的关系。,3.4表的命令操作方式,VFP的操作一般都提供两种方式,一种是通过交互式窗口操作,一种是通过命令的方式实现。在VFP中,一般可以用前四个字母表示较长的命令参数。1.表的创建与打开2.记录数据的浏览与维护3.索引4.数据库的操作5.多表操作,1.表的创建与打开,表的创建命令表的打开命令表的关闭命令,表的创建,(1)命令格式:CREATE.dbf(2)功能:在指定的位置创建一个新表。,表的打开(1),(1)命令格式:USE(2)功能:在当前工作区中打开或关闭表,表打开时,若该表有备注型或通用型字段,则将自动打开同名的.FPT文件。,表的打开(2),(3)说明:表示被打开的表的名字;缺省表示关闭当前工作区的表(工作区的概念参阅第5部分多表操作)。打开一个表时,该工作区中原来打开的表自动关闭已打开的表总有一个记录指针,指针所指的记录称为当前记录。表刚打开时,记录指针指向第一个记录。表操作结束后应及时关闭,以便将内存的数据保存到表中。,表的关闭,(1)格式:CLOSEALL功能:关闭所有的表。(2)格式:CLEARALL功能:关闭所有打开的表,释放所有的内存变量。(3)格式:USE功能:关闭当前工作区的表。,2.记录数据的浏览与维护,表记录的显示表记录的添加表记录的修改表记录的删除,表记录的显示,(1)命令格式:LIST|DISPLAYFIELDS范围FOR|WHILEOFFTOPRINTPROMPTTOFILE(2)功能:在表中按指定范围与条件筛选出记录并显示出来,或送至指定的目的地。,范围子句,范围子句:用来确定执行该命令涉及的记录,范围有种限定方法:ALL所有记录NEXT(N)从当前记录起的N个记录RECORD(N)第N个记录REST从当前记录起到最后一个记录为止的所有记录LIST缺省范围默认为ALL。DISPLAY缺省范围表示当前记录。,FOR,条件:指定执行本命令时,只有指定范围内满足条件的记录参加操作FOR:范围内使“条件”为真的记录都参加操作;WHILE:从当前记录开始,若使“条件”为真,则该记录参加操作,直至遇到不满足条件记录出现时停止。,FIELDS和OFF子句,FIELDS:只有出现在字段名表中的各字段参加操作,字段名表中的各字段之间以逗号隔开。OFF子句:若要不显示记录号,可使用参数OFF。LIST和DISPLAY命令除命令动词外格式一致,功能略有区别:前者以滚动方式输出,后者则以分屏输出。,表记录的添加(1),(1)追加记录命令格式:APPENDBLANK功能:使用BLANK子句能在表尾追加一条空白记录,留待以后填入数据。若缺省则出现记录的编辑窗口,等待用户输入数据。,表记录的添加(2),(2)插入记录命令格式:INSERTBLANKBEFORE功能:在指定的位置插入一条新记录。说明:BEFORE子句表示在当前记录之前插入新记录,缺省表示在当前记录之后插入新记录。BLANK子句表示插入一条空白记录。,表记录的修改(1),(1)编辑方式命令格式:EDITFIELDSFOR/WHILE功能:以全屏幕编辑方式,修改当前表中满足条件的记录中指定字段的数据。,表记录的修改(2),(2)浏览方式命令格式:BROWSEFIELDS功能:以全屏幕窗口方式修改当前表中的记录。,表记录的修改(3),(3)替换方式命令格式:REPLACEWITHADDITIVE,WITHADDITIVEFOR|WHILE功能:在当前表的指定记录中,将有关字段的值用相应的表达式值来替换。若参数都缺省,只对当前记录的有关字段进行替换。,表记录的修改(4),说明:ADDITIVE用于备注型字段,表示将表达式值添加到字段的原有内容后,而不是取代。,表记录的删除(1),(1)逻辑删除命令格式:DELETEFOR|WHILE功能:对当前表在指定内满足的记录加上删除标记。若可选项都缺省,表示当前记录。说明:被逻辑删除的记录前将会出现“*”号。,表记录的删除(2),(2)物理删除命令格式:PACK功能:从物理上真正删除带有删除标记的记录。,表记录的删除(3),(3)逻辑删除恢复命令格式:RECALLFOR|WHILE功能:对当前表在指定内满足的记录去掉删除标记,缺省参数则恢复当前记录。,表记录的删除(4),(4)清除命令命令格式:ZAP功能:物理删除当前表中的所有记录。,3.索引,(1)设置主控索引命令格式:SETORDERTO|功能:将指定的索引名设置为主控索引。(2)取消主控索引命令格式:SETORDERTO或SETORDERTO0功能:取消主控索引,4.数据库的操作,(1)打开数据库格式:OPENDATABASE数据库名(2)关闭数据库格式:CLOSEDATABASEALL,5.多表操作(1),1.工作区的概念要打开多个表,就要使用多个工作区。VFP可以同时打开32767个工作区。工作区通常有三种表示方式:(1)工作区名:A,B,C,D,E,F,G,H,I,J共十个。(2)工作区号:1,2,3,。(3)别名:也就是表的另外一个名称,通常用表文件名来表示。,5.多表操作(2),2.工作区的选择格式:SELECT|0功能:选择某个工作区打开一个表。说明:(1)VFP打开时默认1号工作区为当前工作区;(2)在命令“USEALIAS”中指定,若没有指定,就是;(3)“SELECT0”表示选定当前尚未使用的编号最小的工作区。,5.多表操作(3),3.非当前工作区字段的引用访问当前工作区中打开表的字段时,可以直接引用字段名,而访问非当前工作区中表的字段时,应使用如下格式:|.或者:|-,5.多表操作(4),4.建立表间的临时关系格式:SETRELATIONTOINTO,INTOADDITIVE功能:把当前工作区上的表(主动表)与被动表通过关联字段建立指针联动关系,使得当前工作区上表的指针移动时,被动表的记录指针也发生相应的移动。,5.多表操作(5),使用说明被动表的公共字段必须已建立索引并被激活。要求主动表打开在当前工作区,被动表打开在其它工作区。可在一条SETRELATl0N命令中创建单个主动表与多个被动表之间的关系,各个关系之间要用逗号隔开。,5.多表操作(6),选项ADDITIVE表示保留当前工作区中所有已存在的关联并添加指定的新关联。如果命令中不包括ADDITIVE,将先断开当前工作区中已有的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论