VisualFoxPro第3章数据库与表的创建及使用.ppt_第1页
VisualFoxPro第3章数据库与表的创建及使用.ppt_第2页
VisualFoxPro第3章数据库与表的创建及使用.ppt_第3页
VisualFoxPro第3章数据库与表的创建及使用.ppt_第4页
VisualFoxPro第3章数据库与表的创建及使用.ppt_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

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

文档简介

数据库概述数据库的创建和使用表的创建和使用永久性关系与参照完整性,第3章数据库与表的创建及使用,3.1数据库概述3.1.1数据库的设计过程,第1步:确定建立数据库的目的,这有助于确定需要VFP保存哪些信息;第2步:确定需要的表;在明确了建立数据库的目的之后,就可以着手把信息分成独立的主题,例如“Student”(学生情况)或“Grade”(学生成绩)等。每个主题都可以是数据库中的一个表。第3步:确定所需字段;确定在每个表中保存哪些信息。在表中,每类信息称为一个字段,浏览表时在表中显示为一列。例如,在Student表中,可以有这样的字段:“学号”、“姓名”、“性别”等。第4步:确定关系;分析每个表,确定一个表中的数据和其它表中的数据有何关系。必要时,可以在表中加入字段或创建一个新表来明确关系。第5步:设计求精。对设计进一步分析,查找其中的错误。创建表时,在表中加入几个示例记录,看能否从表中得到所想要的结果。,1.分析数据需求,首先列出需数据库回答的问题清单。如:本学期每个人每门课的期末考试成绩是多少?有哪些人的哪些课程不及格?哪些学生的学业成绩达到了获奖学金的标准?哪些学生在考试中哪门课程舞弊了?等等。其次收集所有的表单和报表。这些表单和报表包含了应该由数据库提供的各种信息。如期末考试成绩需要录入哪些信息等。最后,期末考试成绩册如何打印等等。,2.确定需要的表,确定数据库表是数据库设计过程中技巧性最强的一步。应注意以下几个方面的问题:一个表只保存一个主题的内容;同一信息只保存一次,这将减少出错的可能性;防止删除有用信息。以建立Gxglxt数据库中的表为例:在学习成绩表中,每位学生所学的课程不属于一位学生,因而需要有一个学习课程表。同样,一个班级不只一名学生,要有一个班级主题的表等。Student表和Grade表都与学生有关,但关于学生个人情况的信息保存在Student表中,Grade表中只保存与成绩有关的信息。当一个班的学生毕业后,可能要删除这个班级,但不能删除这个专业,最好的方法是建立一个“专业(Specialty)”表。,3.确定表的字段,确定表字段的几点技巧:每个字段直接和表的主题相关;不要包含可推导得到或通过计算可以得到的字段;收集所需的全部信息;以最小的逻辑单位存储信息。使用主关键字段VFP不允许在主关键字中有重复值或null值。因此,不能选择包含有这类值的字段作为主关键字。因为要用主关键字的值来查找记录,所以它不能太长,以方便记忆和键入。主关键字可由一定长度的字母和数字组成,或是某一范围内的值。主关键字的长度直接影响数据库的操作速度,因此,在创建主关键字时,该字段值最好使用能满足存储要求的最小长度。,4.确定表之间的关系,表之间有三种关系:即一对一关系、一对多关系和多对多关系在一对一关系在实际应用中不常见,因为两个表之间如果是“一对一”关系,则通常可以将他们合并成一个表。在一对多关系中要建立这样的关系,就要把关系中“一方”的主关键字字段添加到“多方”的表中。在关系中,“一方”用主关键字或候选索引关键字,而“多方”使用普通索引关键字。在多对多关系中向VFP正确指定关系之前,需要改变数据库的设计,即创建第三个表,把多对多关系分解为二个一对多关系。这第三个表称作“纽带表”,纽带表可能只包含这两个表的主关键字,也可能包含其它信息。,5.设计的优化,对所设计的表分析,查找是否存在如下问题:表中是否带有大量的并不属于这个主题的字段?表中是否有些字段由于对很多记录不适用而始终保持空白?是否有大量的表包含了同样的字段?是否遗忘了字段?是否有需要的信息没包括进去?如果有,它们是否属于已创建的表?如果不包含在已创建的表中,那就需要另外创建一个表。是否为每个表选择了合适的主关键字?在使用这个主关键字查找具体记录时,它是否很容易记忆和键入?是否有字段很多、记录却很少的表,而且许多记录中的字段值为空?查找到存在的问题后,就要修改表的结构,以改进设计方案。,3.1.2数据库的组成,从项目管理器窗口中可以看出VFP数据库包含5个项目:表、本地视图、连接和存储过程。,1.表(Table),表式存放数据的容器,而数据库又是表的容器,VFP中表可以分为:数据库表和自由表。表与数据库之间的相关性是通过表文件和库文件之间的双向链表实现的。,数据库文件,前链,前链,前链,前链,后链,表文件,后链,表文件,后链,表文件,后链,表文件,2.视图,所谓视图是由一个或多个表组合成的一个“虚表”,VFP中的视图分为本地视图和远程视图。特点:(1)使用查询语句从一个或多个表中获得数据,与查询相似(2)虽然是虚表,但可以对其内容进行更行。,连接连接是保存在数据库中的一个定义,指定了数据源的名称,用于连接远程数据库,来创建远程视图。存储过程存储过程是在数据库数据上执行特定操作并存储在数据库文件中的程序代码,并在打开数据库时加载到内存中。,3.1.3数据字典,数据字典是指存储在数据库中用于描述所管理的表和对象的数据,即描述数据的数据,称之为“元数据”。VFP中,每一个数据库都带有一个数据字典,其数据存放在数据库文件中,可用于创建和制定以下内容:(1)表中的字段的标题、注释、默认值、输入掩码和显示格式等。(2)表的索引关键字(3)长表名和表注释(4)字段级和记录级有效性规则(5)存储过程(6)插入、更新和删除事件的触发器,3.2数据库的创建、打开和使用,3.2.1数据库的创建VFP中为数据库设计提供了两个工具:数据库向导和数据库设计器。1.界面操作创建数据库,文件,新建,2.命令方式创建数据库格式:CREATEDATABASE|?功能:创建由数据库名指定的数据库,若选?或不带任何参数,执行此命令时打开创建对话框,然后输入数据库名VFP中每创建一个新的数据库都将在磁盘上保存三个文件:数据库文件(.DBC)、关联的数据库备注文件(.DCT)和数据库索引文件(.DCX)。,3.2.2数据的打开和关闭(1)用界面打开数据库(2)用命令打开数据库格式:OPENDATABASE|?EXCLUSIVE|SHAREDNOUPDATEVALIDATE功能:打开由数据库名指定的数据库,说明:1)EXCLUSIVE以独占方式打开数据库,所谓独占方式是指在同一时刻不允许其他用户使用数据库2)SHARED以共享方式打开数据库,所谓共享方式是指在同一时刻允许其他用户使用数据库3)NOUPDATE以只读方式打开数据库。选此子句不能对数据库作任何修改,但不影响对表的存取,若让数据库表也为只读,在用USE打开表时加NOUPDATE参数4)VALIDATE是检验数据库中的引用对象是否有效,如检查数据库表和索引是否可用,被引用的字段和索引表是否存在表和索引中,可以同时打开多个数据库,但只有一个是当前数据库,默认为最后一个打开的数据库,可以使用命令:setdatabaseto来制定当前数据库,3.关闭数据库格式:CLOSEDATABASEALL功能:关闭当前数据库,及所有表。若选ALL子句,关闭所有打开的数据库和表关闭指定的数据库setdatabasetojxsjclosedatabase,4.删除数据库格式:DELETEDATABASE|?DELETETABLESRECYCLE功能:删除由数据库名指定的数据库,从磁盘上删除数据库,要求数据库必须是关闭状态说明:1)选DELETETABLES子句是在删除数据库同时也从磁盘上将数据库表删除2)选RECYCLE子句是将删除的数据库与表放入回收站中,3.3表的创建与使用,3.3.1表结构概述在VFP中,建立表的步骤是:(1)先设计表的结构,保存。(2)再向表中添加数据表结构:表的字段、数据类型、宽度(最大字节数)等。空值:用来指示记录中的一个字段”有或没有”的数据标识。,3.3.2利用表设计器创建表,VFP中创建表后,系统以扩展名.DBF保存表文件。如果表中有备注型字段或通用型字段,则自动产生一个与表同名但扩展名为.FPT的备注文件。1.利用表设计器创建表结构第一步创建一个项目第二步在项目管理器中创建的自由表第三步为表中添加记录2.创建数据库表及修改表的结构,3.3.3字段属性与表属性,1.字段的扩展属性数据库表的每个字段除具有字段名、类型、宽度等基本属性外,还可以设置标题、注释、格式、输入掩码、默认值等扩展属性。(1)字段的标题和注释注意:标题只是一些界面中代表字段的标签,在引用字段时必须使用段名,如给xm字段,添加标题”姓名”,select*fromxswhere姓名=张三&错的select*fromxswherexm=张三&正确,(2)字段的显示属性字段的显示属性用来指定输入和显示字段时的格式,包括格式和输入掩码。字段的格式:用于指定字段显示时的格式,包括浏览窗口、表单或报表中显示时的大小写和样式。输入掩码:用于指定字段中输入数据的格式。(3)默认值向表中添加新纪录时,为字段所指定的最初的值称为该字段的默认值。如给xs表中的xb字段设置默认值为”男”。,(4)字段的有效性规则和有效性信息字段的有效性规则:用来控制输入到字段中的数据的取值范围。有效性信息:用于指定在不满足规则要求时所显示的消息框中的说明信息。例如,设置学生表中成绩字段为0100之间,使用逻辑表达式”cj=0.and.Cj“打开”在数据库工作期窗口中单击“打开”在项目管理器窗口中选择需要打开的表,然后单击“修改”或“浏览”,(2)使用命令打开表在命令窗口中,可以使用USE命令打开一个表。该命令的基本语法格式:USETableNameINnWorkArea|cTableAlias1AGAINALIAScTableAlias2NOUPDATE,IN:指定在哪个工作区中打开,缺省在当前工作区中打开AGAIN:用于说明表再次被打开ALIAS:子句用于定义表的别名NOUPADTE:指定表打开后不允许修改结构和数据。例如:USExs&在当前工作区中打开xs表,别名为xsUSEjsALIASjiaoshiIN4USEcjIN0NOUPDATEUSExsAGAININ5USExsAGAININ15,注意:如果以个表同时在多个工作区中开开并且均未指定别名,则在第一次打开的工作区中,别名与表名相同,其他工作区中用AJ以及W11W32747。,4.表的关闭如果在以个工作区中已经打开了一个表,则在该工作区中打开另一个表,先前的表自动关闭。(1)通过界面操作:在数据工作期中(2)使用命令USEINnWorkArea|cTableAlias关闭所有打开的表CLOSETABLEALL,5.表的独占与共享在默认状态下,表是以独占方式打开的,可以使用setexclusive命令来设置:setexclusiveoff&设置“共享”为默认打开方式setexclusiveon&设置“独占”为默认打开方式或者在打开表的时候设置USExsSHAREDUSEjsEXCLUSE,3.3.5记录的处理,1.记录的输入表记录的输入可以在创建完表结构后进行。(1)表结构创建后立即输入记录(2)在浏览窗口中追加记录利用菜单“显示”-”浏览”在“数据工作期”中选择“表”单击浏览在项目管理器中浏览,(3)使用INSERT命令追加记录该命令的格式为:INSERTINTOTableName(FieldName,FieldName2,)values(eExpresion1,eExpression2,)例如INSERTINTOxs(xh,xm,xb,xzydm)values(“050503017”,”高山”,”男”,“050301”),(4)APPEND与APPENDFROM命令追加记录使用APPEND命令可以向表中追加空记录APPENDBLANKINnWorkArea|cTableAlias使用APPENDFROM命令可以将其他文件(表文件、文本文件、Excell文件等)中的数据导入当前工作区的表中。该命令的格式:APPENDFROMFileNameFIELDSFieldListFORlExpressionDELIMITED|XLS,DELIMITED:用于说明追加文件为文本文件XLS:用于说明追加文件为Excel文件缺省时追加文件为表文件(5)备注和通用字段的数据输入“浏览”-“添加新纪录”-“双击”,2.浏览窗口,可以使用BROWS命令来浏览表文件。格式:BROWSEFIELDSFiedListFORlExpressionFREEZEFieldNameNOAPPENDNODELETENOMODIFYTITLEcExpressionFIELDS:指定在浏览窗口中出现的字段FOR:用于筛选记录FREEZE:用于指定可以修改的字段NOAPPEND:指定不可以追加记录,3.记录的筛选,如果用户只想查看和处理满足一定条件的一部分记录,可以对表记录进行筛选。(1)通过界面“数据工作期”-“表”-“属性”,(2)通过命令SETFILTER命令,该命令的格式为:setfiltertolExpression例如,CLOSETABLEALLUSExsSETFILTERTOxb=女BROWSEFIELDSxh,xmNOMODIFYTITLE女学生,4.限制对字段的访问,可以通过设置字段筛选来限制对某些字段的访问。格式如下:SETFIELDTOFieldList例如,CLOSETABLEALLUSEXSSETFIELDTOXH,XMBROWSEFORXB=女NOMODIFYTITLE“女学生”,5.记录的定位,当一个表被打开后,系统自动地为该表生成三个控制标志:记录开始标志、记录指针标志、记录结束标志。,记录指针,指针相关函数(1)RECNO():返回记录的指针的当前位置(2)BOF():当指针在记录开始标志时返回true(3)EOF():当指针在记录结束标志时返回true,(2)记录的定位记录的定位,按其方式分可以分为:记录指针的绝对定位、记录指针的相对定位和条件定位采用界面进行记录定位当表处于浏览状态时,记录的定位可以利用菜单命令“表”-”转到记录”,条件定位,采用命令进行记录定位绝对定位命令:GOTO相对定位命令:SKIP条件定位命令:LOCATEFOR格式:GOTOnRecordNumberINnWorkArea|INcTableAlias|TOP|BOTTOMSKIPnRecordsINnWorkArea|cTableAliasLOCATEFORlExpressionScope,注意:如果从第一条记录向上移一条记录,记录指针就指向开始标志。如果从最后一条记录向下移动一条记录,记录指针就指向结束标志。,6.记录的修改用户可以通过界面或命令对记录进行修改(1)界面方式通过浏览窗口或编辑窗口通过菜单“表”-”替换字段”可以进行对记录的批量修改,(2)使用命令修改记录修改记录字段值的命令有两个:UPDATE-SQL命令和REPLACE命令。区别:REPLACE命令只能修改当前工作区打开的表,而执行UPDATE-SQL命令前不需要打开表格式:UPDATETableNameSETFieldName1=eExpression1,FieldName1=eExpression1,WHERElExpressionREPLACEFieldName1WITHeExpression1ADDITIVE,FieldName2WITHeExpression2ADDITIVEScopFORlExpression,7.记录的删除与恢复在VFP中,要彻底地删除表中的记录,需要两步:首先标志要删除的记录,然后彻底删除带有删除标记的记录。(1)逻辑删除使用界面删除,点击“记录删除列”,或使用菜单“表”-“删除记录”,打开“删除”对话框,进行条件删除。使用命令DELETE命令或DELETE-SQL命令。格式:DELETESopeFORlExpressionINnWorkArea|cTableAliasDELETE-SQL命令:DELETEFROMTableNameWHERElExpression,例子:closetablesallusejsdeletefor(year(date()-year(csrq)60下列命令功能同上:deletefromjswhere(year(date()-year(csrq)60,(2)恢复带删除标记的记录恢复带删除标记的记录,即取消记录的删除标记采用界面的方式在浏览状态下点击删除标记使用菜单“表”-“恢复记录”打开恢复对话框进行条件恢复。采用命令RECALLScopeFORlExpression如:recall&恢复当前记录recallallforxb=“男”&恢复所有性别为“男”的记录recallall&恢复所有记录,(3)彻底删除对于在当前工作区打开的表,若记录加注了删除标记,则可以将具有删除标记的记录彻底删除。也成为“物理删除”。使用界面,“表”-“彻底删除”pack使用命令如:closetablesallusexsdeleteforleft(xh,2)=04pack,(4)对带有删除标记的记录的访问可以使用命令SETDELETE命令来制定vfp是否处理带有删除标记的记录。SETDELETEON|OFFON忽略标有删除标记的记录,OFF则允许访问标有删除标记的记录。,8.数据复制利用COPYTO命令可以将当前工作区中表的数据复制到其他表文件或其他类型的文件中。格式:COPYTOFileNameFIELDSFieldListScopeFORlExpression1SDF|XLS|DELIMITEDWITHDelimiter|BLANK|TABFileName指定COPYTO要创建的新文件名。FIELDSFieldList指定要复制到新文件的字段。Scope指定要复制到新文件的记录范围。,FORlExpression指定要复制逻辑条件lExpression为.T.的记录到文件中。SDF创建SDF(系统格式)文件。XLS创建Excel电子表格文件DELIMITED创建“分隔文件”DELIMITEDWITHBLANK创建用空格代替分隔字符型字段的分隔文件DELIMITEDWITHTAB创建用制表符代替逗号分隔字符型字段的分隔文件,例子:closetablesallusexscopytoxs01forxb=女&生成一个xs01.dbf文件,仅包含女学生copytoxs01FIELDSxh,xmSDF&生成一个xs01.txt文件,仅包含学号和姓名copytoxs01XLS&生成一个xs01.xls文件,3.3.6索引的创建与使用,1.索引概述表中的记录通常是按其输入的时间顺序存放的,这种顺序称为记录的物理顺序。为了便于查找,通常将表按照某一个字段排序,这种顺序称为逻辑顺序。对有序表进行查找可以使用快速查找方法。,排序有两种方法:一是把表记录按某种逻辑顺序排序后重新写到一个新的表文件中;,记录号xhxmxb1005吴宏伟男002秦卫女004孔建男4003王兰女,记录号xhxmxb1002吴宏伟男2003秦卫女004孔建男4005王兰女,对记录进行排序,排序前的文件,排序后产生的新的文件,二是建立一个逻辑顺序号与原表物理顺序的记录号的对照表,并把记录表保存到一个文件中。,Index#TableRead#KeyValue20024003300441005,逻辑顺序和物理的顺序的对照表,后一种方法称为索引法。优点:生成对照表的速度快对照表所需的空间小可疑根据表中的多个字段生成多个索引。,2.索引文件类型VFP中支持三种不同的索引文件:结构复合索引文件、非结构复合索引文件和独立索引文件。结构复合索引文件结构复合索引文件时将一个表的一个或多个索引的索引信息存储在以一个索引文件中,且索引文件的名称与表名相同,扩展名为.CDX。非结构复合索引文件非结构复合索引文件是将一个表的一个或多个索引的索引信息存储在以一个索引文件中,索引文件的扩展名为.CDX,但其文件名与表名不同。,独立索引文件独立索引文件是只存储一种索引的索引文件,其扩展名为.IDX,文件名有用户给定。独立索引文件一般作为临时索引文件,其特点是查找的速度快。3.使用表设计器创建结构复合索引(1)排序可以指定索引是升序还是降序(2)索引标识(Tag)区别一个表中的多个索引,(3)索引类型在VFP中,数据库表可以创建4种类型的索引:主索引、候选索引、唯一索引和普通索引。普通索引用于决定记录的处理顺序,其索引表达式的值允许出现重复。唯一索引索引表达式的值可以重复,但在索引文件中重复的值只存在一次。候选索引候选索引是以表的候选关键字为索引表达式而创建的索引,指定的索引表达式的值不可以重复。,主索引对于数据库表来说,可以从候选索引中选取一个作为该表的主索引。每一个数据库表只能有一个主索引。(4)索引表达式索引表达式是建立索引的依据,它通常是一个字段或由多个字段组成的表达式,注意索引表达式不能基于备注型字段和通用型字段。,若索引表达式是基于多个字段的,系统根据表达式的值进行排序。如果索引表达式为字符型表达式,则各个字段在索引表达式中的前后顺序将影响索引的结果。如,yxzydm+xb作为索引表达式,则是先按yxzydm字段排序,在yxzydm字段的值相同的情况下,才按xb字段的值进行排序。,如果索引表达式为算术表达式,则按表达式的运算结果进行排序。如,索引表达式kss+xf,kss和xf都为值类型,则按照他们的和为依据进行排序。不同的数据类型的字段构成一个索引表达式时,必须转换为同一数据类型(通常转换为字符型),如,在教师表中,要求先按xb字段排序,xb相同则按pyrq字段进行排序,则应该使用索引表达式“xb+DTOC(pyrq,1)”,4.索引的使用(1)设置主控索引一个表可以有多个索引,在使用索引时必须显式的制定某个索引为“主控索引”。在使用USE命令打开表时,可通过ORDER子句指定主控索引。如,USExsORDERxh&主控索引为xhUSExsIN0ALIASxs2AGAINORDERxb&主控索引为xb,使用界面设置主控索引如果表处于浏览状态,则通过菜单“表”-“属性”,打开“工作区属性”对话框,然后在“索引顺序”下拉列表框中选择一个索引作为主控索引。如果表没有处于浏览状态,则在“数据工作期”窗口中选择要设置的表,点击属性。,如果表已经打开,也可以使用SETORDER命令设置表的主控索引。该命令的基本语法格式为:SETORDERTOTagNameINnWorkArea|cTableAliasASCENDING|DESCENDINGTagName:用于指定主控索引ASCENDING:为升序排序DESCENDING:为降序排序,(2)利用索引快速定位记录表建立了索引后,可以基于索引关键字使用SEEK命令进行记录的快速定位,用于搜索表达式值首次出现的记录。格式如下:SEEKeExpressionORDERTagNameASCENDING|DESCENDINGINnWorkArea|cTableAlias注意:SEEK命令只能在索引过的表中使用只能基于索引关键字进行搜索,例如,USExsORDERxhSEEK“040701004”如果SEEK函数找到与索引关键字相匹配的关键字,则RECNO()返回匹配记录的记录号,FOUND()函数返回.T.,EOF()函数返回.F.,否则RECNO()将返回表中记录的个数加1,FOUND()返回.F.,EOF()返回T。,3.3.7自由表,所谓自由表,就是不属于任何数据库的表。自由表没有数据库表具有的扩展属性,如:显示格式、输入掩码、默认值,标题等,也不能创建主索引。,3.3.8利用命令创建和修改表结构,1.使用CREATETABLE-SQL命令创建表结构,创建数据库表时,数据库必须打开,格式为:CREATETABLETableNameNAMELongTableNameFREE(FieldName1FieldType(nFieldWidth,nPrecision)NULL|NOTNULL,例如,创建学生表结构createtablexs(xhC(12),xmC(8),xbC(2),zydhC(6),xzydmC(4),2.使用ALTERTABLESQL命令修改表结构第一种格式:ALTERTABLETableName1ADDCOLUMNFieldName1FieldType(nFieldWith,nPrecision)NULL|NOTNULLCHECKlExpression1ERRORcMessageTex1DEFAULTeExpressionPRIMARYKEY|UNIQUE,例如,ALTERTABLEjsADDCOLUMNFaxC(20)NULL&增加一个fax字段类型为字符型,长度为20ALTERTABLEjsADDPRIMARYKEYjybhtagjybh,第二种格式:ALTERTABLETableName1ALTERCOLUMNFieldName2null|notnullSETDEFAULTeExpres

温馨提示

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

评论

0/150

提交评论