资源描述
第四章表与数据库,教学目的:1数据库、表的建立与查看。2数据表结构的浏览与修改。3对数据表记录的操作。教学重点(难点):对数据表记录的可视化操作和命令操作:输入和追加数据,指针定位,浏览、显示和插入、删除记录,修改和批量替换数据。,VisualFoxpro的命令格式中,经常会出现如下的符号:表示可选项。可以根据具体问题选择一个或多个选项。:表示必选项。该项必须根据具体问题选择一个确定的参数,省略时,会出现语法错误。|:用“|”隔开可选项,表示可在若干项参数中选其中之一。在具体使用命令使,这些符号不要输入。,4.1数据库,一、数据库的基本概念,一个数据库文件是一组文件,包括扩展名为.DBC的数据库主文件、扩展名为.DCT的数据库备注文件以及一个文件扩展名为.DCX的数据库索引文件。,二、创建数据库创建数据库有命令、菜单和利用项目管理器创建3种方法。1、命令格式:CreateDataBase|?命令功能:用于创建一个数据库。(1)数据库名:指定要创建的数据库的名称。(2)选择?参数或不使用任何参数,VisualFoxPro将弹出“创建”对话框,提示要指定数据库的名称。(3)数据库创建后,VisualFoxPro自动将其保存在指定目录,并以Dbc为其扩展名。(4)当用CreateDataBase命令创建数据库后,不必再用OpenDataBase命令打开即可使用。,例题:CreatDatabaseF:学生信息库CreatDatabase学生信息库CreatDatabaseCreatDatabse?,2、菜单方式菜单方式有“新建文件”和“向导”两种3、“项目管理器”方式先建立项目文件,再在其中建立数据库,项目文件的概念:我们在开发一个数据库应用系统时,往往会生成许多数据和各种类型的文件。为了能有效组织和规范管理数据库应用系统中所有的数据和文件,常常需要创建一个“项目”文件。项目文件由扩展名为.Pjx及.Pjt两个文件组成,因此,在移动、拷贝项目文件时,应当同时操作这二个文件。“项目管理器”是项目文件的窗口。“项目管理器”就是“项目”文件对一个数据库应用系统中所有的数据和文件进行组织、创建、维护和管理的工作平台,是一个有效的可视化的操作工具。,创建项目文件1命令方式CreateProject2菜单方式单击“文件”、“新建”或单击工具栏中的“新建”按钮,在“新建”对话框中,单击“项目”单选按钮。打开项目文件1命令方式modifyproject2菜单方式单击“文件”、“打开”或单击工具栏中的“打开”按钮,在“打开”对话框中。,三、数据库的基本操作1、打开数据库1)命令方式一OpenDatabase|?Exclusive|Shared参数说明::是要打开的数据库名。若用户不指定文件的扩展名,VisualFoxpro会自动的指定为DBC。若未指定文件名或为使用了问号“?”,VisualFoxpro会显示打开对话框提示用户输入数据库名。Exclusive/Shared:选择独占或共享的方式打开。选择Exclusive将以“独占方式”打开数据库,即一个用户打开数据库而其他用户则不能访问该数据库。选择Shared将以“共享方式”打开数据库,即一个用户打开数据库而其他用户也可以访问数据库。,例:打开一个名为“学生信息库”的数据库。SetDefaToF:OpenDatabase学生信息管理库Exclusive,2)命令方式二(显示打开数据库)ModifyDatabase|?该命令能显示地打开数据库,也就是说能打开“数据库设计器”窗口。例:ModifyDatabaseF:学生信息库3)菜单方式单击“文件”、“打开”或工具栏上的“打开”按钮4)使用“项目管理器”打开数据库,2关闭数据库(1)命令格式CloseDatabase参数说明:如果没有All参数,则关闭当前数据库。有All参数则关闭所有的数据库。注意:单击“数据库设计器”右上角的号或左上角的的“关闭”选项,只是关闭了“数据库设计器”,并没有关闭数据库。,4.2表一、自由表和数据库表自由表:不隶属于任何数据库数据库表:隶属于某个特定的数据库数据库表和自由表是可以相互转换的,当一个自由表被添加到某一个数据库后,就成了数据库表。当数据库表从数据库中移出后,就成了自由表。自由表和数据库表都是存放在磁盘上的独立的表文件。,二、创建数据表在VisualFoxPro中创建表分为四步:第一步:设计表的结构第二步:定义表的结构第三步:输入表记录数据第四步:保存表文件,学生档案表,1设计表的结构(1)需求分析(2)建立关系型二维数据列表模型(3)表的结构设计建立一个表最重要的一步是设计好数据库表的结构。表结构设计需要定义字段名、数据类型、字段宽度。是数值型字段,还要确定小数位数。,2创建表在VisualFoxPro中创建表的方法有命令方式、菜单方式、利用项目管理器方式、利用数据库设计器方式。在未打开数据库之前,用命令、菜单方法创建的是自由表。在打开数据库之后,用命令、菜单方法创建的是数据库表,利用项目管理器、数据库设计器创建的也是数据库表。(1)命令方式创建表1)命令方式一Create在打开有关数据库之后,创建的是数据库表。否则,创建的是自由表。创建学生档案表,2)命令方式二CreateTable表名Free(字段名1类型(宽度,小数位),字段名2类型(宽度,小数位)该方式可直接创建表文件,不会出现表结构的定义窗口“表设计器”。当使用CreateTable来建立表时:如果当前没有打开数据库。那么,不管是否选择了关键字“Free”,其所建立的表都是自由表。如果当前打开了数据库,没有选择“Free”关键字,所创建的表将会自动添加到所打开的数据库中而成为数据库表。选择该“Free”键字,所创建的表仍然为自由表。,例:按图表结构,用命令方式直接创建教师代码表。,CreateTableD:教师代码表(教师代码C(4),教师姓名C(8),教师职称C(10),性别C(2),年龄N(2,0),系别代码C(3)命令执行后,可以单击“显示”、“表设计器”来浏览教师代码表的表结构。,(2)菜单方式创建表菜单方式有“新建文件”和“向导”二种,一般使用“新建文件”方式。(3)利用“项目管理器”创建表利用“项目管理器”创建的表是一个数据库表(4)利用“数据库设计器”创建表利用“数据库设计器”创建的表是一个数据库表。单击“文件”、“打开”,在“打开”窗口中,选择要打开的数据库。在“数据库设计器”窗口的空白处,单击鼠标右键,在弹出的快捷菜单中,选择“新建表”按钮,进行新建表的工作。,1-4表的基本操作1表文件的打开与关闭要对表进行操作,必须首先打开表。在VisualFoxPro中,打开表的方法有两种:其一是命令方式,其二是菜单方式。(1)表的打开1)命令方式UseExclusive/Shared参数说明:Exclusive/Shared:指出表的打开方式。Exclusive为独占方式,打开表后,能对表的结构进行修改。Shared为共享方式。打开表后,不能对表的结构进行修改。默认方式为Shared共享方式。,2)菜单方式单击“文件”菜单中的“打开”或单击工具栏中的“打开”图标,在“打开”对话窗口中,选择驱动器与文件夹,选择表(.Dbf)文件类型,再选择要打开的表文件名以及打开文件的方式(独占、共享),单击“确定”。(2)表的关闭为防止数据遭到意外的破坏,表操作完后,应关闭表。1)命令方式Use&关闭当前表CloseAll&关闭所有的文件2)菜单方式利用“文件”菜单中的“关闭”命令可以关闭表。,2表结构的浏览与修改(1)浏览表结构1)命令方式List/DisplayStructure参数说明:List与Display的区别是当显示的内容多于一屏时,List是翻滚显示,而Display是分屏显示。注意:表结构所占的总字节数是表字段所占字节数总和加1。这一字节是用来存放记录号的。,例:显示F盘根目录下的“学生成绩表”表的结构。UseF:/学生成绩表DisplayStructureListstructure,2)菜单方式菜单方式是一种全屏幕显示方式。单击“文件”、“打开”,在“打开”对话框中选择要浏览结构的表。然后,单击“显示”、“表设计器”。如果以“独占”的方式打开后,可以对结构进行修改。而以“只读的方式”打开,则只能浏览结构。,(2)修改表的结构1)命令方式UseExclusive&如果以共享shared方式打开,能否修改表结构?ModifyStructure2)表设计器方式单击“文件”菜单中的“打开”选项,在“打开”的对话框中,以独占方式选择要打开的表文件。然后,从“显示”菜单中,选择“表设计器”,打开“表设计器”窗口修改表结构。,3)数据库设计器方式打开相应的数据库文件,在弹出的数据库设计器中鼠标右键单击要修改结构的表,在弹出的快捷菜单中选择“修改”。打开“表设计器”窗口,修改表结构。4)项目管理器方式打开相应的项目文件,在弹出的项目管理器中展开表。选中要修改结构的表,单击“修改”命令按钮。在弹出的“表设计器”对话框中,修改表结构。,3、浏览显示表记录表打开以后,需要使用显示命令,才能浏览到表中的记录。(1)命令方式BrowseScopeFieldsForListScopeFieldsForDisplayScopeFieldsFor,是用来确定参与命令操作的记录范围。它有四种选择:All:表示所有的记录RecordN:表示第n条记录NextN:表示当前记录后的n条记录(包括当前记录)Rest:表示当前记录后的所有记录(包括当前记录)其中:NextN和Rest命令需要事先用Goto定位。Fields投影Fields是一种投影操作。用来说明数据表的字段名称,每个字段名之间必须用逗号隔开。如果不选择该子句,则表示选择所有的字段。,ForFor是一种选择操作。它使命令只作用于那些逻辑表达式的值为“真”的记录。WhlieWhlie也是一种选择操作。与For子句不同的是:当遇到第一条不满足逻辑表达式为“真”的记录时,就终止命令的作用。即使后面仍然有满足逻辑表达式为“真”的记录也中断执行,并把记录指针定位在不满足逻辑表达式为“真”的第一条记录上。,Browse是全屏幕方式显示、List是以滚动方式显示、而Display则为分屏方式显示。在Browse命令的显示窗口中,可以对记录进行编辑修改。但List、Display命令显示记录后,并不能对记录进行编辑修改。例:在学生档案表.Dbf表文件中,查询显示99级或98级并且籍贯为“江西”或“浙江”籍的学生,显示内容为学号、班级、姓名、性别、年龄、籍贯等字段。注:学号的前二位表示年级。Use学生档案表ListFor(Subs(学号,1,2)=”99”.Or.Subs(学号,1,2)=”98”).And.(籍贯=”江西”.Or.籍贯=”浙江”)Fields学号,班级,姓名,性别,年龄,籍贯&注意字符串截取函数的运用Use,(2)菜单方式在VisualFoxPro系统菜单下,单击“文件”菜单中的“打开”或单击工具栏中的“打开”图标。在弹出的“打开”对话窗口中,选择要打开的表文件名以及打开文件的方式,单击“确定”。然后,单击主菜单中的“显示”、“浏览”。表的显示模式有“浏览”和“编辑”两种。表的显示模式可以相互切换,切换方法为:单击“显示”菜单中的“浏览”项就切换到“浏览”窗口,单击“显示”菜单下的“编辑”项就切换到“编辑”窗口。,(3)数据库设计器方式打开相应的数据库文件,在弹出的数据库设计器中鼠标右键单击要浏览的表,在弹出的快捷菜单中选择“浏览”。(4)项目管理器方式打开相应的项目文件,在弹出的项目管理器中展开表。选中要浏览的表,单击“浏览”命令按钮。,4追加表记录表文件记录的输入方法通常有:定义表结构后,立即输入记录用Append命令向表文件追加记录从另一个表文件中向当前表添加记录从其它类型的文件中向当前表文件传送数据把数组数据传送到表文件等(1)单条记录的追加1)命令方式AppendBlankAppend命令是一条编辑命令,用户可以从键盘上向当前表末尾连续添加任意条记录。,例:向学生档案表.Dbf表文件中,追加记录。Use学生档案表Append&在编辑状态用户输入记录数据例:向学生档案表.Dbf文件中,添加一条空记录。Use学生档案表?reccount()AppendBlank?reccount(),2)菜单方式打开表文件,单击“显示”、“浏览”。这时,会在主菜单中增加“表”选项,单击“表”、“追加新记录”,则弹出录入记录的窗口,用户可以向表追加一条记录。输入记录后,按Ctrl+W存盘退出数据输入窗口。,(2)多条记录的追加1)命令方式从其它表文件中向当前表追加有时用户需要将一个表文件的数据全部或部分追加到另一表末尾中,利用AppendFrom命令可以方便地完成这一任务。AppendFromFields字段名表For参数说明:将From中指定的记录追加到目标表末尾。允许在相同或不完全相同结构的表文件之间追加记录,但被追加字段的字段名、类型必须与目标表相同。若二表文件同名字段的宽度不同,则以目标表文件的宽度为基准。若选择Fields仅将列出的字段追加到目标表末尾。若选择For,则将满足For那些记录追加到目标表末尾。,例:将学生档案表.Dbf表文件中学号字段的数据追加到表学生成绩表.Dbf中。最后,用Browse显示操作结果。Use学生成绩表&打开目标表文件AppendFrom学生档案表Fields学号Browse&在Browse窗口中浏览学生成绩表从文本文件向当前表文件传送记录P72,5插入记录InsertBlankBefore参数说明:必须以独占的方式打开表文件,插入记录前,应用Go定位记录指针。Insert不选用Blank选项,是一条编辑命令,允许在当前记录后插入一条新记录。若选择Before选项,则在当前记录前插入一条新记录。若选用Blank选项,则不进入编辑状态,在当前表文件指针所在的记录后、前Before插入一条空记录。需要注意:Insert插入一条记录时,系统会对所有的记录重新排序,这对一个大的表来讲要花费大量的时间,所以,Insert命令在程序设计中一般很少使用。,例:在学生档案表.Dbf表文件的第五条记录前插入一条记录。Use学生档案表ExclusiveGo5InsertBefore,6记录的筛选、修改与替换(1)记录的筛选记录的筛选可以通过For和Fields选项实现,也可以通过事先预设条件过滤和预设字段表来实现。1)条件过滤SetFilterTo2)预设字段表SetFieldsTo/All,例:通过事先预设条件过滤和预设字段表,在学生档案表.DBF表文件中,查寻出生日期大于1976年并且性别是男的学生。显示学号,班级,姓名,性别,年龄,籍贯,出生日期。Use学生档案表SetFilterToYear(出生日期)1976.And.性别=“男”SetFieldsTo学号,班级,姓名,性别,年龄,籍贯,出生日期Browse,(2)记录的修改表记录的修改有手工修改方法和替换修改方法两类。手工输入修改法适用于少量数据的修改,需要用户从键盘上输入修改数据。替换法适用于成批的有规律的数据修改1)手工输入修改法命令方式EditForFieldsChangeForFieldsBrowseForFields,三条命令均具有修改记录的功能。修改结束后,按Ctrl+W存盘退出修改窗口。Edit和Change如果没有作For选择,通过Go定位或在Edit、Change后指明记录号,则可对包括当前记录后的所有记录进行修改。修改有“浏览”和“编辑”两种窗口界面,可通过“显示”菜单下的“浏览”和“编辑”来转换。修改备注型字段和通用型字段的方法与添加记录相同,即双击“Mem”和“Gen”,在弹出的编辑窗口中进行修改。,例:在学生档案表.Dbf中,将学号为“9921203”的记录的“班级”修改为“99211”,将“个人简历”添加“获2003年学院三好学生的光荣称号”内容。Use学生档案表EditFields学号,班级,个人简历For学号=”9921203”例:理解修改记录命令示例。Use学生档案表Go3Change&可对3号以后的记录进行修改,菜单方式打开表文件。单击“显示”及其下拉菜单中的“浏览”选项,表被显示。用滚动条将光标定位在需要修改的记录的有关字段处,并修改数据。修改结束后,按CTRL+W存盘并退出修改状态。,(3)记录的替换表文件的记录有时会遇到大批量的有规则的数据要修改的问题,用手工修改法很麻烦、费时。这时,可以在程序设计中使用替换法。用Replace命令中指定的表达式的值来替换字段原有的值。ReplaceWithAdditive,WithAdditiveForWhile,参数说明:用With后指定的的值来替换当前表中指定范围内满足条件的字段的原有值。表达式的数据类型必须与替换的字段数据类型一致。若命令中和等可选项都缺省时,则只对当前记录进行替换。只有在对备注字段的数据进行替换时,可能需要使用Additive可选项。选择Additive,则表达式的值会添加到备注字段中已有数据的尾部。否则,替换字段原有的数据。通用型字段不能使用替换法。对多个字段的值进行替换,字段之间用“,”分隔。,例:现以某单位的工资管理为例,说明Replace的多种用法。对选定记录字段进行替换修改。Use基本工资表Replace基本工资With基本工资*1.2,岗位津贴With岗位津贴+40For职称=”教授”Go5Replace岗位津贴With岗位津贴+60ReplaceAll奖金With奖金+20,可从记录的若干字段组成的表达式得到同一记录的某一字段值。Use基本工资表ReplaceAll实发工资With基本工资+岗位津贴+奖金-水费-电费用Replace命令在表文件尾添加一个记录的方法在程序设计中经常被使用Use基本工资表AppendBlankReplace姓名With“陈丽红”,基本工资With360,岗位津贴With400,奖金With260,职称With“讲师”,备注说明With”95年在职读博士学位”Additive,7表结构的复制(1)命令方式CopyStruToFields参数说明:若选择可选项Fields,则复制产生的新表文件的结构只包含Fields中指出的字段。同时,也决定了新表字段的排列次序。不选择Fields,则将当前表文件结构全部复制到新表文件中。,例:阅读下列命令并观察命令执行情况。Use学生档案表&打开学生档案表文件DisplayStruBrowseCopyStruToxsdaFields学号,班级,专业代码,姓名UseXsda&打开xsda表文件ListStru&可以看到xsda表文件只含学号,班级,专业代码,姓名四个字段browse&无记录数据2向导方式P66,8表的复制复制表文件是将当前表文件的结构和记录同时进行复制,以得到一个副本。这是保护表文件的安全措施之一。更重要的是,通过复制还能够方便地产生其他类型的文件,使不同的系统可以共享数据。命令格式:CopyToScopeFieldsForTypeSdf|deli|xls,参数说明:如果各选项都缺省,则复制所得的新文件为当前表文件的副本。若选择SCOPE、Fields、For,则复制指定范围、指定字段及符合条件的记录,复制所得的新文件为当前表文件的一部分。Sdf表示系统格式文件格式,是文本文件。在Sdf格式文本文件中,记录从文件头部开始存放,同一记录的各数据项之间紧密排列,没有分隔符,未部用回车键结束。各数据项的宽度等于表文件该字段的宽度。,例4-7将学生档案表.Dbf表98级的学生档案记录复制到Xsda98.Dbf,并保存在e:目录下。Use学生档案表CopyToe:Xsda98ForSubs(学号,1,2)=”98”Usee:Xsda98ListStruBrowse,9表记录的删除与恢复随着表文件的不断更新,必然会出现一些无用的记录,需要删除。表文件记录的删除有二种:逻辑删除和物理删除。(1)逻辑删除逻辑删除仅对记录作逻辑删除标记,作了逻辑删除的记录可以用Recall恢复为正常记录。1)命令方式DeleteForRecallFor,参数说明:对于Delete和Recall,若所有可选项都缺省,则操作仅对当前记录有效。作了删除标记的记录,表的各种操作能否对其起作用,是由表参数设置来决定。当SetDeleteOff时(系统默认状态),其照常参与各种运算。当SetDeleteOn时,所有的操作都不包含有删除标记的记录。作了逻辑删除标记的记录,用Browse显示时,其记录前会有“”标记,用List显示会有“*”标记。,例:对学生档案表.DBF表中98级的学生记录作逻辑删除标记。Use学生档案表DeleteForSubs(学号,1,2)=”98”BrowseListSetdeleteonBrowseList例:逻辑删除学生档案表中第6条记录。Use学生档案表DeleteRecord6recall&能实现被逻辑删除记录的恢复吗?2)菜单方式打开表选择需要作逻辑删除的记录,单击“表”,在弹出的快捷菜单中选择“删除记录”。打开表,单击“表”,在弹出的快捷菜单中选择“恢复记录”。,(2)物理删除作了物理删除的记录,则从磁盘中永久删除。要物理删除表文件记录。应分两步进行:用Delete作逻辑删除。用Pack命令才能真正删除已加删除标记的记录。1)命令方式DeleteForPack参数说明:物理删除是对表中作了逻辑删除的记录从磁盘中彻底删除,这种删除是不可恢复的。Pack命令执行后,将调整磁盘空间及记录号。但这部分磁盘空间只有在关闭表文件后,才能释放。,例:物理删除学生档案表中99级的学生记录。Use学生档案表DeleteForSubs(学号,1,2)=”99”Pack2)菜单方式打开表,单击“表”,在弹出的快捷菜单中选择“彻底删除”。,(3)一次性物理删除表中的所有记录Zap参数说明:该命令不需要先进行逻辑删除,直接使用ZAP可一次性物理删除表的全部记录,但要慎重使用。例:在命令窗口中依次输出下列命令观察、分析各条命令执行的结果。Use学生档案表CopyToXsda&建立一备份文件UseXsdaDeleteFor专业代码=“021”.Or.专业代码=“031”List,Pack&物理删除已作删除标记的记录BrowseDeleteFor出生日期=1977/10/31BrowseRecallForYear(出生日期)=1977Browse&观察运行结果,1977年出生的记录其删除标记被除掉Go3Delete&对第三号记录作删除标记Browse&观察运行结果Zap&物理删除全部记录Browse&表文件中无任何记录,全部物理删除CloseAll,10多表的操作使用Use命令方式打开一个表后,就可对该表进行浏览及各种操作。但若想再使用Use命令打开另外一个表,则先前打开的表就会关闭。这种操作方式无法满足对多表进行操作的要求。因此,我们需要了解VisualFoxPro多工作区的操作方法,实现在不同的工作区进行多表的操作。(1)工作区的概念工作区实质上是指每个打开的表所占用的内存空间,所谓打开表文件就是把它从磁盘调入内存的某一工作区。VisualFoxPro提供了32767个工作区,每个工作区都能打开一个表文件。并且,都有各自独立的记录指针。通过选择不同的工作区,打开不同的表文件,就可以实现对多表进行操作的目的,满足程序对多表进行操作的要求。,1)主(当前)工作区与非当前工作区尽管可以在不同的工作区打开多个表,但只有最后选择的工作区是处于活动的,称为主工作区或当前工作区,其它的工作区称为非主(当前)工作区。当前工作区中的表称为“当前表”,而非当前工作区的表称为“非当前表”。,(2)工作区的命名为了识别不同的工作区,工作区需要命名。VisualFoxPro对工作区的命名有阿拉伯数字编号命名和表的别名命名二种方法。1)阿拉伯数字编号命名用1到32767阿拉伯数字编号来表示工作区号。其中前十个工作区还可以依次用AJ十个字母来表示。2)表的别名命名用表的别名来表示工作区号。UseAliAs1N,例:Use学生档案表AliAsxsdaIN3指定了学生档案表文件的别名为xsda,那么3号工作区也可以用别名xsda来表示。别名可以包含多达254个字母、数字或下画线,且必须以字母或下画线开头。,(3)工作区的选择通过Select命令来选择工作区。选择工作区有两个概念,一是如何选择空闲工作区来打开新的表,二是如何选择已有表的工作区。1)选择空闲工作区Select0表示选定当前未被使用的最小工作区。2)切换工作区Select|参数说明:表文件打开后,才可在Select命令中使用别名。,(4)工作区的操作原则VisualFoxPro启动后,默认的工作区是1号工作区。0号工作区表示当前未使用的最小工作区。每个工作区只能打开一个表文件,也就是说允许同时打开最多的表文件数为32767个。而且,每个工作区的表文件都有各自独立的记录指针。只有在当前工作区打开表文件才能进行修改、添加等读写操作。其他非当前工作区的表文件,只能进行读操作。同一表文件一般不可以在不同工作区打开,除非在USE命令中加上Again选项。,(5)多工作区中表字段的引用在进行多表操作时,对于当前表在引用时,可以直接使用字段名。对于非当前表在引用时,必须用工作区号或别名来标识这些字段名。方法是在工作区与字段名之间用小数点或-来分隔。如:工作区号.字段名或别名-字段名。,例:在两个工作区中分别打开学生档案表和学生成绩表文件。Select1&选择最小工作区Use学生档案表Go4DisplaySelect0Use学生成绩表dispfields学生档案表.专业代码Select学生档案表Browse,
展开阅读全文