购买

¥30.0

加入VIP
  • 专属下载券
  • 上传内容扩展
  • 资料优先审核
  • 免费资料无限下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 第4章Visual-FoxPro数据库及其操作

第4章Visual-FoxPro数据库及其操作.ppt

第4章Visual-FoxPro数据库及其操作

烟雨梦兮
2018-10-14 0人阅读 举报 0 0 0 暂无简介

简介:本文档为《第4章Visual-FoxPro数据库及其操作ppt》,可适用于IT/计算机领域

第章VisualFoxPro数据库及其操作VisualFoxPro数据库是具有逻辑关系的表的集合表是库中的成员。关系数据库中把一个二维表定义为表表是构成数据库的基本元素之一是数据库中数据组织与存储的基本单元。把若干个关系比较固定的表集中起来放在一个数据库中管理在表间可以建立关联关系、数据有效性规则、参照完整性等在数据库的管理下各个表协调工作可解决复杂的数据处理问题实现数据库的多重功能大大地强化了数据库的使用效果。VisualFoxPro系统中的表可分为自由表和数据库表数据库表是隶属于或者说包含在某一个数据库中而自由表不属于任何数据库以独立的文件形式存在。数据库表和自由表的操作基本一致。本章将介绍VisualFoxPro数据库和相关操作包括建立和管理数据库、建立和使用表(包括数据库表和自由表)以及索引和数据完整性等方面的内容。VisualFoxPro数据库及其建立本节将首先介绍建立数据库与数据库管理有关的内容然后从第节开始陆续介绍建立数据库表、操作数据库表、索引、数据完整性、数据库表相互关联、自由表等方面的知识。VisualFoxPro数据库及其建立基本概念在VisualFoxPro中数据库是一个逻辑上的概念和手段通过一组系统文件将相互联系的数据库表及其相关的数据库对象统一组织和管理。VisualFoxPro数据库及其建立在建立VisualFoxPro数据库时相应的数据库名称实际是扩展名为dbc的文件名与之相关的还会自动建立一个扩展名为dct的数据库备注(memo)文件和一个扩展名为dcx的数据库索引文件。即建立数据库后用户可以在VisualFoxPro的默认工作目录中看到文件名相同但扩展名分别为dbc、dct和dcx的三个文件这三个文件是供VisualFoxPro数据库管理系统管理数据库使用的用户一般不能直接使用这些文件。这时建立的数据库只是定义了一个空的数据库它还没有数据也不能输入数据接着还需要建立数据库表和其他数据库对象然后才能输入数据和实施其他数据库操作。VisualFoxPro数据库及其建立建立数据库建立数据库的常用方法有以下三种:.在项目管理器中建立数据库在项目管理器的界面中首先在“数据”选项卡中选择“数据库”然后单击“新建”按钮并选择“新建数据库”接着通过创建对话框提示输入数据库的名称(扩展名为dbc的文件名)。例如输入“职工”即建立一个职工数据库在创以将当前表的全部或部分记录复制到指定的新表中命令格式:COPYTO<新表文件名><范围>FOR<条件表达式>FIELDS<字段名表>表的基本操作说明:()执行COPY命令之前必须打开要被复制的表(源表)命令执行之后复制的新表处于未打开的状态需要打开之后才能对其进行操作。()若FIELDS<字段名表>选项缺省则新表的结构与源表(当前表)的一致否则新表中仅包含由FIELDS<字段名表>指定的部分字段。()新表(目标表)的数据记录由<范围>短语和FOR<条件表达式>短语指定若缺省则默认包含全部记录。表的基本操作【例】复制职工信息表中有关职工职称的信息生成新的职工职称表。USE职工信息表打开源表COPYTO职工职称表FIELDS职工号,姓名,职称,部门编号FOR年龄<USE职工职称表打开新表BROWSE浏览结果表的基本操作.复制表的结构若只想新建一个与当前表结构相同或类似但没有任何记录的表则可以使用表结构复制命令实现命令格式:COPYSTRUCTURETO<新表文件名>FIELDS<字段名表>说明:若有FIELDS<字段名表>选项则新表中只包含<字段名表>中出现的字段若缺省该选项则新表的结构与当前表的结构完全相同。表的基本操作【例】复制职工信息表的结构生成职工表。USE职工信息表COPYSTRUTO职工表FIELDS职工号,姓名,性别,年龄USE职工表DISPSTRU查看新表的结构表的基本操作记录的定位VisualFoxPro中每打开一个表系统就为它设置一个记录指针记录指针总是指向数据表中的某一条记录、文件头(BOF)或文件尾(EOF)并可以随着命令的执行改变指向的位置。记录指针指向某一条记录时该记录就被称为当前记录。表的基本操作文件头(BOF)和文件尾(EOF)是表中的两个特殊的位置。BOF处于表中第一条记录之前记录号为可以用函数BOF()测试记录指针是否指向文件头当函数值为T时记录指针指向文件头当函数值为F时记录指针不指向文件头EOF处于表中最后一条记录之后记录号为总记录数加可以用函数EOF()测试记录指针是否指向文件尾当函数值为T时记录指针指向文件尾当函数值为F时记录指针不指向文件尾。表的基本操作在VisualFoxPro中通常使用表测试函数来表示当前表的记录信息。常用的测试函数包括:()RECNO()该函数返回当前表文件中当前记录的记录号()RECCOUNT()该函数返回当前表文件中的记录个数记录的定位实际上是指将记录指针指向需要进行操作处理或用户关心的记录上。VisualFoxPro提供了多种操作命令和操作方式用于移动记录指针实现记录的定位。表的基本操作.“浏览”窗口中记录指针的移动当一个表在“浏览”窗口中显示是其中的某一条记录的左侧会出现一个标记表示该记录为当前记录(即记录指针的位置)此时若用鼠标在其他记录上单击或按“↑”、“↓”键等移动插入点时当前记录标记亦会随之移动指向其他记录。表的基本操作.GO和GOTO命令GO和GOTO命令可以直接定位到某条记录两个命令是等价的。命令格式:GO|GOTO<记录号>|TOP|BOTTOM说明:()<记录号>指定一个物理记录号命令执行之后记录指针将移至该记录。()TOP将记录指针定位在表的第一条记录上若使用索引则是索引项排在最前面的索引对应的记录。()BOTTOM将记录指针定位在表的最后一条记录上。当不使用索引时是记录号最大的那条记录使用索引则是索引项排在最后面的索引对应的记录。表的基本操作.SKIP命令可以将记录指针向前或向后相对移动若干条记录。相对定位与当前记录有关它是把记录指针相对当前位置进行移动。命令格式:SKIP数值表达式说明:()数值表达式指定记录指针需要移动的记录数可以是正或负的整数可以缺省缺省时默认为。如果是正数则向下移动如果是负数则向上移动。SKIP是按逻辑顺序定位即如果使用索引时是按索引项的顺序来定位的。()使用SKIP命令可显式的将记录指针指向文件头(BOF)和文件尾(EOF)。表的基本操作【例】使用记录定位命令修改记录指针的指向。USE职工信息表RECNO(),BOF()结果为FSKIP记录指针上移一个指向BOFRECNO(),BOF()结果为TGORECNO(),RECCOUNT()结果为GOBOTTOMRECNO(),EOF()结果为FSKIP记录指针下移一个指向EOFRECNO(),EOF()结果为T表的基本操作.LOCATE命令使用LOCATE命令可以按照条件进行查询定位。命令格式:LOCATE范围FOR<条件表达式>说明:()LOCATE命令执行时从当前表中指定范围内的第一条记录开始按记录号的顺序依次查找符合<条件表达式>的第一条记录。范围短语如缺省系统默认为ALL。()系统提供了FOUND()函数专门用于测试LOCATE和后面将介绍的SEEK等查找命令的结果。若查找到记录则FOUND()函数的返回值为T否则为F。表的基本操作LOCATE命令只能将记录指针定位到第一个符合条件的记录上若要继续查找满足条件的其他记录可以执行继续查找命令CONTINUE。命令格式:CONTINUE说明:CONTINUE必须在LOCATE命令之后使用用来继续查找满足条件的记录并且可以多次使用直到记录指针移到文件尾或超出范围。表的基本操作【例】使用LOCATE命令定位记录。USE职工信息表LOCATEFOR性别=”女”顺序查找第一个性别为女的职工记录FOUND(),EOF()测试是否找到记录及记录指针是否指向文件尾DISPLAY显示当前记录CONTINUE继续查找下一个女职工记录DISPLAY表的基本操作记录的编辑与修改在VisualFoxPro中可以在浏览编辑窗口中交互修改记录也可以用命令将指定值直接修改记录。表的基本操作.浏览编辑窗口中修改记录VisualFoxPro中若需要修改数据记录的量不是很大且修改的数据没有规律则可在表的浏览或编辑窗口中直接编辑修改。使用节介绍的方法打开“浏览”窗口后将插入点移到要修改的字段上即可进行修改操作。修改结束后关闭窗口或按CtrlW键可以保存修改结果按Esc键或CtrlQ则放弃修改。此外还可以使用命令方式打开编辑窗口进行记录的修改。命令格式:EDIT|CHANGE<范围>FIELDS<字段名表>FOR<条件表达式>表的基本操作.用REPLACE命令直接修改针对量大且有规律的(例如全部职工的基本工资上调)数据记录修改VisualFoxPro提供了REPLACE命令进行批量的直接修改可以较大的提高数据修改效率。REPLACE命令是一个非常重要且有用的记录修改命令在程序或命令窗口中对数据记录进行修改一般都是通过REPLACE命令实现的。命令格式:REPLACE<范围><字段名>WITH<表达式>,<字段名>WITH<表达式>,…FOR<条件表达式>表的基本操作说明:()命令执行后将对当前表中指定<范围>内满足<条件表达式>的记录分别用WITH后的表达式的值替换其前面字段名指定字段原来的值。()若缺省了<范围>短语和FOR<条件表达式>短语则只对当前记录进行修改若只缺省了FOR<条件表达式>短语则对指定<范围>内的所有记录进行修改若只缺省了<范围>短语则对所有符合<条件表达式>的记录进行修改。()WITH前后的各个字段名与表达式的数据类型必须一致否则会拒绝修改并给出数据类型不匹配的错误信息。表的基本操作【例】利用REPLACE命令对职工工资表中的数据记录进行修改。USE职工工资表REPLACEALL基本工资WITH基本工资*使每位员工的基本工资赠加REPLACE岗位工资WITH岗位工资FORLEFT(职工号,)=’’使职工号以开头的岗位工资增加元REPLACEALL实发工资WITH基本工资岗位工资院龄工资职务津贴税金计算所有职工的实发工资表的基本操作删除记录在VisualFoxPro中删除记录分为逻辑删除和物理删除。逻辑删除只对记录添加删除标记并未从表中真正删除这些记录这些记录仍然保存在表中并可在必要时恢复成正常的记录物理删除是将已作过逻辑删除的记录真正从表中清除物理删除的记录将不能再恢复。表的基本操作.逻辑删除在VisualFoxPro中逻辑删除最简单的方法是在“浏览”窗口中单击要删除记录左边的小方框小方框由白变黑表示该记录打上了删除标记被逻辑删除。此外也经常使用DELETE命令进行逻辑删除。命令格式:DELETE<范围>FOR<条件表达式>表的基本操作说明:()命令执行后将对当前表中指定<范围>内满足<条件表达式>的记录进行逻辑删除。()若缺省<范围>短语和FOR<条件表达式>短语则仅删除当前记录若只缺省了FOR<条件表达式>短语则对指定<范围>内的所有记录进行删除若只缺省了<范围>短语则对所有符合<条件表达式>的记录进行删除。()命令执行后若使用LIST或DISPLAY命令显示数据记录则作了逻辑删除的记录第一个字段前会显示一个“*”号。表的基本操作【例】使用DELETE命令删除记录。USE职工信息表DELETEFOR性别=”男”AND婚否逻辑删除已婚男职工的全部记录注意:()对于逻辑删除的记录只有执行SETDELETEON命令后这些记录才会被隐藏起来不显示也不参与有关的操作。()若执行SETDELETEOFF(系统的默认状态)后被逻辑删除的记录和其他记录一样被显示参与操作。表的基本操作.恢复逻辑删除恢复逻辑删除的记录实际上是取消记录前面的逻辑删除标记。最简单的方法是在“浏览”窗口中用鼠标单击已被逻辑删除记录左边的小方框小方框由黑变白表明该记录已恢复为正常记录。此外也经常使用RECALL命令进行记录的恢复。命令格式:RECALL<范围>FOR<条件表达式>表的基本操作说明:()命令执行后将对当前表中指定<范围>内满足<条件表达式>的被逻辑删除的记录进行恢复。()若缺省<范围>短语和FOR<条件表达式>短语则仅恢复当前记录若只缺省了FOR<条件表达式>短语则对指定<范围>内所有被逻辑删除的记录进行恢复若只缺省了<范围>短语则对所有符合<条件表达式>的被逻辑删除的记录进行恢复。表的基本操作例如:USE职工信息表RECALLFOR性别=”男”恢复全部被逻辑删除的男职工记录表的基本操作.物理删除物理删除有删除标记记录的命令是PACK执行该命令后当前表中所有有删除标记的记录将从表中被物理地删除并且不可能再恢复。例如在执行完例后再执行PACK命令会将已被逻辑删除的已婚男职工全部记录从表中进行物理删除。表的基本操作.一次性物理删除表中的全部记录使用ZAP命令可以物理删除表中的全部记录不管是否有删除标记。该命令只是删除全部记录并没有删除表执行完该命令后表结构依然存在。因此执行ZAP命令等价于依次执行了DELETEALL和PACK。例如:USE职工信息表ZAP将职工信息表中的全部记录物理删除注意:由于物理删除命令删除的记录不能恢复所以要慎重使用物理删除命令。表的基本操作表中数据与数组间的数据传送表文件的数据内容是以记录的方式存储和使用的而数组是把一批数据组织在一起的数据处理方法。为了使它们之间方便地进行数据传送以利于程序的使用VisualFoxPro提供了相互之间数据传送的功能可以方便地完成表记录与内存变量之间的数据传送。表的基本操作.单个记录与数组间的传送()把数据表的记录数据传送到数组。格式:SCATTERFIELDS<字段名表>MEMOTO<数组名>BLANK格式:SCATTERFIELDSLIKE<通配符>∣FIELDSEXCEPT<通配符>MEMOTO<数组名>BLANK表的基本操作说明:格式是将当前表中当前记录的数据按FIELDS<字段名表>书写的顺序依次送入指定数组元素之中。若缺省FIELDS可选项则将除备注型M和通用型G字段外的所有字段值存入数组元素。如要处理备注型字段可加上MEMO可选项。如果选用BLANK短语则产生一个空数组各数组元素的类型大小与表中当前记录的对应字段相同。格式是用通配符指定包括或排除的字段。FIELDSLIKE<通配符>和FIELDSEXCEPT<通配符>不可以同时使用。如果命令中的数组没有建立或建立了数组但不够大SCATTER命令自动把所需的数组生成或扩大。表的基本操作()把数组数据传送到表的当前记录。格式:GATHERFROM<数组名>FIELDS<字段名表>MEMO格式:GATHERFROM<数组名>FIELDSLIKE<通配符>∣FIELDSEXCEPT<通配符>MEMO表的基本操作说明:格式是把数组中的数据依次传送到当前表的当前记录中。从第一个数组元素开始依次向字段表指定的字段填写数据。若使用可选项FIELDS则只有在<字段名表>中列出的字段才会被数组元素的值代替若要处理备注字段则应加上MEMO可选项。格式的功能是用通配符指定包括或排除的字段。FIELDSLIKE<通配符>和FIELDSEXCEPT<通配符>不可以同时使用。如果数组元素多于字段数则多出的数组元素不传送若数组元素个数少于字段数则多出的字段值不会改变。表的基本操作【例】利用数组修改表中记录的值。USE职工信息表GOSCATTERTOA把号记录传送给数组AA()=把该记录中年龄改成GATHERFROMA把数组数据传回当前记录DISP索引索引是VisualFoxPro中的一种重要排序技术索引不仅是实现表中数据快速显示与快速查询、控制数据完整性的手段而且也是创建表间关联关系的基础。根据不同应用的要求可以灵活地对同一个表创建和使用不同的索引方便按不同顺序处理记录。索引索引的基本概念VisualFoxPro索引是由指针构成的文件这些指针逻辑上按照索引关键字值进行排序。索引文件和表的dbf文件分别存储并不改变表中记录的物理顺序。实际上创建索引是创建一个由指向dbf文件记录的指针构成的文件。若要根据特定顺序处理表记录可以选择一个相应的索引使用索引还可以加速对表的查询操作。索引索引是一张数据表的检索信息一个表可以创建多个索引。数据表在建立索引之后数据记录就能按关键字段的字母排列顺序或者数值大小、或者日期排序等方式排序。索引不会改变数据表中各记录的物理位置。索引文件可以由数据表中的一个或多个字段构成也可以指定一个索引表达式。索引文件的扩展名为cdx。索引文件打开后在对表进行添加、删除、更改操作时索引文件自动维护。索引可以在表设计器中定义索引VisualFoxPro中的索引分为主索引、候选索引、唯一索引和普通索引四种任何一种索引均可以设置升序或降序。.主索引主索引是一种设定为主关键字的索引在指定字段或表达式中不允许出现重复值。它强调的“不允许出现重复值”是指建立索引的字段值不允许重复。如果在任何已含有重复数据的字段中建立主索引VisualFoxPro将产生错误信息如果一定要在这样的字段上建立主索引则必须首先删除重复的字段值。索引主索引能保证字段中输入值的唯一性并决定了处理记录的顺序。建立主索引的字段可以看作是主关键字一个表只能有一个主关键字所以一个表只能创建一个主索引。只有数据库表才能建立主索引自由表不能建立主索引。如果某个表已经有了一个主索引还可以为它添加候选索引。索引.候选索引候选索引像主索引一样要求字段值的唯一性并决定了处理记录的顺序。建立候选索引的字段可以看作是候选关键字所以一个表可以建立多个候选索引。在数据库表和自由表中均可为每个表建立多个候选索引。索引.唯一索引唯一索引是为了保持同早期版本的兼容性它的“唯一性”是指索引项的唯一而不是字段值的唯一。它以指定字段的首次出现值为基础重复的索引字段值只有第一个值作为索引项出现在索引文件中选定一组记录并对记录进行排序。在数据库表和自由表中均可以为每个表建立多个唯一索引。索引.普通索引普通索引可以决定记录的处理顺序它不仅允许字段中出现重复值并且索引项也允许出现重复值。在数据库表和自由表中均可以为每个表建立多个普通索引。从以上定义可以看出主索引和候选索引具有相同的功能除具有按升序或降序索引的功能外都还具有关键字的特性建立主索引或候选索引的字段值可以保证唯一性它拒绝重复的字段值。索引唯一索引和普通索引分别与以前版本的索引含义相同它们只起到索引排序的作用。这里特别要注意唯一索引的含义唯一索引与字段值的唯一性无关即建立了唯一索引的字段它的字段值是可以重复的它的“唯一”是指在使用相应的索引时重复的索引字段值只有唯一一个值出现在索引项中。索引在表设计器中建立索引.单项索引在表设计器界面中有“字段’、“索引”和“表”三个选项卡在“字段”选项卡中定义字段时就可以直接指定某些字段是否是索引项用鼠标单击要建立索引的字段后定义索引的下拉列表框可以看到有三个选项:无、升序和降序(默认是无)。如果选定了升序或降序则表示在该字段上建立了一个普通索引索引名与字段名同名索引表达式就是对应的字段。索引如果要将索引定义为其他类型的索引则须将界面切换到“索引”选项卡然后从“类型”下拉列表框中选择索引的类型这时可以根据需要选择主索引、候选索引、唯一索引或普通索引。.复合字段索引如果索引是基于一个字段的那么按以上办法建立索引就可以了如果索引基于多个字段则还可以按照多个字段建立索引。索引在多个字段上的索引称做复合字段索引建立复合字段索引的方法是:()在“索引”选项卡界面上用鼠标单击“插入”命令按钮这时会在界面中出现一新行。()在索引名栏目中输入索引名。()从索引类型下拉列表框选择索引类型。()单击表达式栏右侧的按钮打开表达式生成器。()在表达式生成器中输入索引表达式最后单击“确定”按钮。索引在一个表上可以建立多个普通索引、多个唯一索引、多个候选索引但只能建立一个主索引。通常主索引用于主关键字字段候选索引用于那些不作为主关键字但字段值又必须唯一的字段普通索引用于一般地提高查询速度唯一索引用于一些特殊的程序设计。虽然索引可以提高查询速度但是维护索引是要付出代价的。当对表进行插入、删除和修改等操作时系统会自动维护索引也就是说索引会降低插入、删除和修改等操作的速度。由此看来建立索引也有个策略问题并不是说索引可以提高查询速度就在每个字段上建立一个索引。索引用命令方式建立索引在VisualFoxPro中一般情况下都可以在表设计器中交互的建立索引但有时又需要在程序中建立一些索引因此需要掌握创建索引的命令并且通过创建索引命令还可以进一步帮助读者理解VisualFoxPro的索引和索引文件。索引.命令格式建立索引使用的命令是INDEX。命令格式:INDEXON<条件表达式>TO<单索引文件名>|TAG<索引名>OF<复合索引文件名>FOR<索引关键字表达式>COMPACTASCENDING|DESCENDINGUNIQUE|CANDIDATEADDITIVE索引说明:()<索引关键字表达式>是索引表达式它可以是字段名或包含字段名的表达式。()TO<单索引文件名>表示建立一个单独的索引文件。单索引文件名是扩展名为idx的文件该项是为了与以前版本兼容现在一般只是在建立一些临时索引时才使用。()TAG<索引名>表示创建一个复合索引文件。多个索引可以创建在一个索引文件中这种索引称做结构复合索引其文件名与相关的表同名并具有cdx扩展名。()如果选用OF短语则可以用复合索引文件名指定包含多个索引的复合索引文件名扩展名也是cdx称为非结构复合索引文件。索引()FOR<索引关键字表达式>给出索引过滤条件索引文件只为满足条件的记录创建索引关键字。()COMPACT当使用TO<单索引文件名>时表示建立一个压缩的idx文件。复合索引总是压缩的。()ASCENDING|DESCENDING表示建立升序或降序索引默认升序。()UNIQUE表示建立唯一索引。()CANDIDATE表示建立候选索引。()ADDITIVE与建立索引本身无关表示现在建立索引时是否关闭以前的索引默认是关闭已经使用的索引使新建立的索引成为当前索引。索引从以上命令格式可以看出使用命令可以建立普通索引、唯一索引(UNIQUE)或候选索引(CANDIDATE)但没有主索引前面提到主索引和候选索引具有相同的功能在表设计器中指定一个主索引实际就是指定了一个主关键字。索引.三类索引从索引的组织方式来讲共有三类索引:()单独的idx索引是一种非结构单索引()采用非默认名的cdx索引也是非结构复合索引()与表名同名的cdx索引是结构复合索引这也是最常用的一类索引。索引.结构复合索引文件的特性与表名同名的cdx索引是一种结构复合索引它是在VisualFoxPro数据库中最普遍也最重要的一种索引文件在前面用表设计器建立的索引都是这类索引。结构复合索引文件具有如下特性:()在打开表时自动打开()在同一索引文件中能够包含多个索引或索引关键字()在添加、更改或删除记录时自动维护索引。因此一般只使用结构复合压缩索引而非结构索引和单索引多半是为了与以前版本兼容建议在新的应用中不再使用。索引【例】使用命令方式创建索引。USE职工信息表INDEXON年龄TAGage按年龄字段值的升序建立普通索引索引名为ageBROWSEINDEXON姓名TAGnameDESCENDING按姓名字段值的降序建立普通索引索引名为nameBROWSE索引使用索引.打开索引文件打开数据表时与表名相同的结构复合索引会随着表的打开而自动打开但是对于非结构索引必须在使用之前用命令打开索引文件。命令格式:SETINDEXTO<索引文件名列表>索引说明:()索引文件名列表是用逗号分开的索引文件列表可以包含idx索引和cdx索引。()执行该命令后索引文件列表中的第一个索引文件成为主控索引文件。如果主控索引文件是idx文件(它是单索引文件)表处理的记录次序将按其索引顺序进行如果主控索引文件是cdx文件(它是复合索引文件)则默认索引项是它在创建时的第一个索引项。索引.设置当前索引虽然结构复合索引在打开表时都能够自动打开或者打开了非结构复合索引文件作为主控索引文件但使用某个特定索引项进行查询或需要记录按某个特定索引项的顺序显示时则必须用SETORDER命令指定当前索引项。命令格式:格式:SETORDERTO<索引序号>|TAG<索引标识名>ASCENDING|DESCENDING格式:USE<表名>ORDERTAG<索引标识名>索引说明:()格式是在打开了表之后再单独指定主控索引标识名格式是在打开表的同时指定主控索引标识名。()索引序号是指建立索引的先后顺序号并且按照在SETINDEXTO<索引文件名列表>命令中的总序号排列因此不容易记清建议使用索引名。()不管索引是按升序或降序建立的在使用时都可以用ASCENDING或DESCENDING重新指定升序或降序。索引()一个表可以同时打开多个索引文件但是只有一个单索引(idx)文件或一个来自复合索引(cdx)文件索引标识决定表中记录的显示和访问顺序()不带任何参数的SETORDERTO命令表示取消已设置的主控索引记录按原物理顺序显示。索引【例】设置主控索引。USE职工信息表ORDERname打开表的同时设置name为主控索引BROWSESETORDERTOage设置age为主控索引BROWSESETORDERTO取消主控索引恢复原来的物理顺序LIST索引使用索引快速定位在建立了索引并指定主控索引的情况下可以采用索引定位命令SEEK实现对表中记录的快速查找。命令格式:SEEK<表达式>索引说明:()使用SEEK命令之前必须打开相应的索引文件并指定主控索引且<表达式>的类型与含义必须和主控索引的索引关键字的类型与含义相匹配。()命令执行之后若查找到了相应的记录则FOUND()函数值为T记录指针指向与<表达式>值相匹配的第一条记录若未查找到相应的记录则FOUND()函数的值为F记录指针指向EOF。索引【例】使用SEEK命令进行快速查找。USE职工信息表SETORDERTOTAGname设置name为主控索引SEEK‘刘明明’索引查询姓名为“刘明明”的记录FOUND(),EOF()对查询结果进行测试DISPLAY显示查找到的记录索引.删除索引如果某个索引不再使用了则可以删除它删除索引的办法是在表设计器中使用“索引”选项卡选择并删除索引。也可以使用命令删除索引命令格式是:DELETETAG<索引名>其中<索引名>指出了要删除的索引名。如果要删除全部索引可以使用命令:DELETETAGALL例如当执行完例后再执行命令:DELETETAGage表示将索引age删除。数据完整性在数据库中数据完整性是指保证数据正确的特性数据完整性一般包括实体完整性、域完整性和参照完整性等项VisualFoxPro提供了实现这些完整性的方法和手段。数据完整性实体完整性与主关键字实体完整性是保证表中记录唯一的特性即在一个表中不允许有重复的记录。如果一个字段的值或几个字段的值能够唯一标识表中的一条记录则这样的字段称为候选关键字。在一个表上可能会有几个具有这种特性的字段或字段的组合这时从中选择一个作为主关键字。在VisualFoxPro中利用主关键字或候选关键字来保证表中的记录唯一即保证实体唯一性。在VisualFoxPro中将主关键字称作主索引将候选关键字称作候选索引。由上所述在VisualFoxPro中主索引和候选索引有相同的作用。数据完整性域完整性与约束规则域完整性的应用在之前的介绍中其实已经涉及到了一些表的字段数据类型的定义就属于域完整性的范畴。比如对数值型字段通过指定不同的宽度说明不同范围的数值数据类型从而可以限定字段的取值类型和取值范围。但这些对域完整性还远远不够还可以用一些域约束规则来进一步保证域完整性。域约束规则也称作字段有效性规则在插入或修改字段值时被激活主要用于检验数据输入的正确性。数据完整性建立字段有效性规则比较简单直接的方法仍然是在表设计器中建立在表设计器的“字段”选项卡中有一组定义字段有效性规则的项目它们是“规则”(字段有效性规则)、“信息”(违背字段有效性规则时的提示信息)、“默认值”(字段的默认值)三项。具体操作步骤如下:()首先单击选择要定义字段有效性规则的字段()然后分别输入和编辑规则、信息及默认值等项目。字段有效性规则的项目可以直接输入也可以单击输入框旁的按钮打开表达式生成器对话框编辑、生成相应的表达式。数据完整性【例】以“职工”数据库中的职工信息表为例设职工的性别字段取值只能为“男”或“女”当输入性别字段的值不为“男”或“女”就报错性别的默认值为“男”。则应该在“规则”框中输入表达式:性别=“男”or性别=“女”在“信息”框中输入表达式:“性别应为男或女!”在“默认值”框中输入表达式:“男”。注意:“规则”是逻辑表达式“信息”是字符串表达式“默认值”的类型则由字段的类型确定。数据完整性参照完整性与表之间的关联参照完整性是关系数据库管理系统的一个很重要的功能它与表之间的联系有关它的含义是:当插入、删除或修改一个表中的数据时通过参照引用相互关联的另一个表中的数据来检查对表的数据操作是否正确。假如一条职工记录由职工号、姓名、性别和部门编号等字段构成当插入一条职工记录时如果没有参照完整性检查则可能会使这个职工工作在一个不存在的部门中这时插入的记录肯定是错误的。因此在插入职工记录之前如能够进行参照完整性检查检查指定职工所在的部门编号在部门信息表中是否存在则可以保证插入职工记录的合法性。数据完整性在VisualFoxPro中建立参照完整性一般需要下面两个步骤:()建立表之间的“永久联系”。在数据库设计器中设计表之间的联系时首先在父表中建立主索引在子表中建立候选索引或普通索引(子表的候选索引或普通索引一定要和父表的主索引有相同的索引表达式)然后通过父标的主索引和子表的候选索引或普通索引建立两个表之间的联系。数据完整性()设置参照完整性约束。在建立“永久联系”之后可以利用参照完整性生成器分别对更新规则、删除规则和插入规则进行设置。在关系数据库中通过连接字段来体现和表示联系。连接字段在父表中一般是主关键宇在子表中是外部关键字。如果一个字段或字段的组合不是本表的关键字而是另外一个表的关键字则这样的字段称为外部关键字。数据完整性.建立表之间的永久联系两个表之间能够建立的联系类型有“一对一”和“一对多”两种它们是由子表的索引类型决定的。当子表的索引为主索引或候选索引时建立的联系为“一对一”联系当子表的索引为普通索引或唯一索引时建立的联系为“一对多”联系。接下来以建立“职工”数据库中的职工信息表、职工部门表和职工工资表之间的永久联系为例说明如何建立表间的永久联系。数据完整性首先应该考虑个表之间能够建立的联系类型。通常情况下建立表间联系的前提是需要建立联系的两个表有公共的字段并且分别在公共字段上建立索引。因此根据第章中介绍的有关实体集间联系的类型分析可以建立职工信息表和职工部门表之间的一对多联系以及职工信息表和职工工资表之间的一对一联系。然后根据能够建立的表间联系类型建立各表的索引。在职工信息表中建立以职工号字段为表达式的主索引、以部门编号字段为表达式的普通索引在部门信息表中建立以部门编号字段为表达式的主索引在职工工资表中建立以职工号字段为表达式的主索引。数据完整性最后利用建立好索引创建表间的永久联系。具体方法是在“数据库设计器”窗口中在父表中的主索引上按下鼠标左键拖至与其建立联系的子表中的相应索引项并释放鼠标这样两个表间会多出一条连线则表示两个表之间建立了永久联系。利用上述的方法就能够建立“职工”数据库中个表之间的永久联系。在建立联系时系统会自动根据索引类型来判断联系的类型。数据完整性如果要修改已建立的永久联系可以通过编辑关系进行修改。方法是用鼠标右键单击要修改的联系连线从弹出的快捷菜单中选择“编辑关系”打开“编辑关系”对话框。在“编辑关系”对话框中通过在下拉列表框中重新选择表或相关表的索引名则可以达到修改联系的目的。如果要删除表间的永久联系可以单击选中两表间的连线然后按Del键即可或者右键单击连线从弹出的快捷菜单中选择“删除关系”命令也可删除永久联系。数据完整性.设置参照完整性约束建立了表之间的永久联系后VisualFoxPro默认没有建立任何参照完整性约束。在建立参照完整性之前必须首先清理数据库所谓清理数据库是物理删除数据库各个表中所有带有删除标记的记录。具体操作步骤如下:打开数据库设计器主菜单栏上就会出现“数据库”菜单然后在“数据库”菜单下选择“清理数据库”。该操作与命令PACKDATABASE功能相同。数据完整性在清理完数据库后用鼠标右键单击表之间的联系连线并从快捷菜单中选择“编辑参照完整性”打开的参照完整性生成器界面。注意不管单击的是哪个联系的连线所有联系将都出现在参照完整性生成器中。参照完整性规则包括更新规则、删除规则和插入规则。数据完整性()更新规则更新规则规定了当更新父表中的连接字段(主关键字)值时如何处理相关的子表中的记录:如果选择“级联”则用新的连接字段值自动修改子表中的相关所有记录如果选择“限制”若子表中有相关的记录则禁止修改父表中的连接字段值如果选择“忽略”则不作参照完整性检查可以随意更新父记录的连接字段值。数据完整性()删除规则删除规则规定了当删除父表中的记录时如何处理子表中相关的记录:如果选择“级联”则自动删除子表中的相关所有记录如果选择“限制”若子表中有相关的记录则禁止删除父表中的记录如果选择“忽略”则不作参照完整性检查即删除父表的记录时与子表无关。数据完整性()插入规则插入规则规定了当插入子表中的记录时是否进行参照完整性检查:如果选择“限制”若父表中没有相匹配的连接字段值则禁止插入子记录如果选择“忽略”则不作参照完整性检查即可以随意插入子记录。自由表前面介绍的是属于数据库中的表也就是数据库表那么不属于数据库中的表就是自由表。本节主要介绍自由表的概念、创建自由表的方法、自由表添加到数据库中的方法以及将自由表移出数据库的方法。自由表数据库表与自由表所谓自由表就是那些不属于任何数据库的表所有由FoxBASE或早期版本的FoxPro创建的数据库文件(dbf)都是自由表。可以将自由表添加到数据库中使之成为数据库表也可以将数据库表从数据库中移出使之成为自由表。自由表.建立自由表的方法当没有打开数据库时建立的表就是自由表。建立自由表的方法有:()使用项目管理器创建自由表。在项目管理器中从“数据”选项卡选择“自由表”然后选择“新建”命令按钮打开“表设计器”建立自由表。()利用菜单方式创建自由表。确认当前没有打开的数据库选择“文件”菜单下的“新建”从“新建”对话框中的“文件类型”组框中选择“表”然后单击“新建文件”按钮打开“表设计器”建立自由表。自由表()利用命令方式创建自由表。确认当前没有打开的数据库使用CREATE命令打开“表设计器”建立自由表。建立自由表的表设计器界面读者可以与数据库表设计器的界面相比较二者是不同的自由表设计器没有字段级规则和约束等。自由表.数据库表的特点数据库表与自由表相比数据库表具有如下特点:()数据库表可以使用长表名在表中可以使用长字段名()可以为数据库表中的字段指定标题和添加注释()可以为数据库表的字段指定默认值和输入掩码()数据库表的字段有默认的控件类自由表()可以为数据库表规定字段级规则和记录级规则()数据库表支持主关键字、参照完整性和表之间的永久联系()在执行INSERT、UPDATE和DELETE操作时会执行参照完整性的约束规则。在VisualFoxPro中保留了自由表的概念完全是为了兼容早期的软件版本。建议尽量使用数据库表。自由表将自由表添加到数据库虽然自由表不具有数据库表的许多特性但可以将自由表添加到数据库中使之成为数据库表。把自由表添加到数据库中可以有以下种方法。()使用项目管理器添加自由表。打开项目管理器将要添加自由表的数据库展开至表并选择“表”。然后单击“添加”按钮从弹出的“打开”对话框中选择要添加到当前数据库的自由表即扩展名为dbf的文件。自由表()使用数据库设计器添加自由表。打开数据库设计器后可以从“数据库”菜单中选择“添加表”然后从“打开”对话框中选择要添加到当前数据库的自由表。()使用命令方式添加自由表。可以使用ADDTABLE命令添加一个自由表到当前数据库中。命令格式:ADDTABLE<表名>|自由表说明:参数<表名>给出了要添加到当前数据库的自由表表名如果使用“”则显示“打开”对话框从中可以选择要添加到数据库中的表。注意:一个表只能属于一个数据库当一个自由表添加到某个数据库后就不再是自由表了所以不能把已经属于某个数据库的表添加到当前数据库否则会有出错提示。自由表从数据库中移出表当数据库不再使用某个表而其他数据库要使用该表时必须将该表从当前数据库中移出使之成为自由表。将数据库表移出数据库成为自由表可以有以下种方式。()使用项目管理器将数据库表移出数据库。打开项目管理器将数据库下的“表”展开并选择所要移出的表接着单击“移去”按钮弹出提示对话框从中选择“移去”即可。自由表()使用数据库设计器将数据库表移出数据库。打开数据库设计器选择要移去的表然后从“数据库”菜单中选择“移去”或者单击鼠标右键从快捷菜单中选择“删除”也会弹出提示对话框最后从提示的对话框中选择“移去”即可。注意:以上操作是从数据库中移出表使被移出的表成为自由表所以应该选择“移去”如果选择删除则不仅从数据库中将表移出并且还从磁盘上删除该表即扩展名为dbf的文件。自由表一旦某个表从数据库中移出那么与之相关的所有主索引、默认值及有效性规则都随之消失因此将某个表移出的操作会影响到当前数据库中与该表有联系的其他表。如果移出的表在数据库中使用了长表名那么表一旦移出了数据库长表名将不可再使用。()利用命令方式移去表。可以使用REMOVETABLE命令将一个数据库表从当前数据库中移出。命令格式:REMOVETABLE<表名>|DELETERECYCLE自由表说明:参数<表名>给出了要从当前数据库中移去的表的表名如果使用“”则显示“移去”对话框从中选择要移去的表如果使用选项DELETE则在把所选表从数据库中移出之外还将其从磁盘上删除如果使用选项RECYCLE则把所选表从数据库中移出之后放到Windows的回收站中而并不立即从磁盘上删除。自由表【例】使用命令方式添加和移出自由表。OPENDATABASE职工打开职工数据库ADDTABLE联系方式表将建立的联系方式表添加进职工数据库中REMOVETABLE联系方式表再将联系方式表移出职工数据库排序和多表的同时使用在VisualFoxPro中可以利用排序方式将表中的记录按要求重新排列顺序。使用VisualFoxPro可以同时打开多个数据库在每个数据库中又可以同时打开多个表另外还可以同时打开多个自由表要同时打开多个表就涉及了工作区的概念。本节将主要介绍排序的方法、多工作区的概念、使用不同工作表的方法以及表之间的关联。排序和多表的同时使用排序所谓排序是将记录按需要的顺序重新排列产生一个新的数据表文件实现从物理上对数据记录的重新排列索引也可以使用户按照某种顺序浏览或查找表中的记录但这时的顺序是逻辑的是通过索引关键字实现的。当通过索引浏览和查找记录时VisualFoxPro是按照索引关键字进行逻辑浏览和查找的。排序和多表的同时使用VisualFoxPro提供了实现物理排序的命令SORT它可以将表中的记录物理地按顺序重新排列。命令格式:SORTTO<表名>ON<字段名>A|DC,<字段名>A|DC…ASCENDING|DESCENDINGFOR<条件表达式>FIELDS<字段名列表>说明:()<表名>为排序后新生成的表名SORT命令对当前表进行排序排序结果存放到一个新表中。排序和多表的同时使用()<字段名>、<字段名>…为排序的字段可以在多个字段上进行排序。()A|DC其中A说明按升序排序默认是升序D说明按降序排序C说明排序时不区分大小写字母默认是区分大小写可以使用AC或DC说明升序不区分大小写或降序不区分大小写。()ASCENDING|DESCENDING指出除用A或D指明了排序方式的字段外所有其他排序字段按升序或降序。排序和多表的同时使用()FOR<条件表达式>给出参加排序字段要满足的条件只有使<条件表达式>为真的记录才参加排序。()FIELDS<字段名列表>给出排序以后的表所包含的字段列表默认是原表的所有字段。【例】工资排序。对职工工资表中的所有记录先按基本工资由高到低再按岗位工资由低到高进行排序。USE职工工资表SORTTOgzON基本工资D,岗位工资A排序和多表的同时使用多表的同时使用.多工作区的概念VisualFoxPro在每次运行时可以同时打开并处理多个表文件。VisualFoxPro引入了工作区和表的别名的概念。工作区是一个带有编号的内存区域是有关表处理的工作环境。排序和多表的同时使用在每个工作区中可以打开一个表即在一个工作区中不能同时打开多个表。如果在同一时刻需要打开多个表则只需在不同的工作区中打开不同的表就可以了。系统默认总是在第个工作区中工作如果没有指定工作区实际都是在第个工作区打开表和操作表。利用命令可以选择工作区。命令格式:SELECT<工作区>|<表别名>排序和多表的同时使用说明:()参数<工作区>指定要激活的工作区是一个大于等于的数字用于指定工作区号最小的工作区号是最大的工作区号是即同一时刻最多允许打开个表。如果工作区指定为则选择编号最小的尚未使用的工作区。()参数<表别名>指定要激活的、包含打开表的工作区是已经打开表的表名或表的别名也可以用A~J中的一个字符作为<表别名>来激活前个工作区中的一个。排序和多表的同时使用【例】分别在第、、工作区打开职工信息表、职工工资表和职工部门表三个表。OPENDATABASE职工SELECTUSE职工信息表SELECTUSE职工工资表SELECTUSE职工部门表排序和多表的同时使用如果要到第l个工作区操作职工信息表则命令:SELECT职工信息表或SELECT也可以在USE命令中直接指定在哪个工作区中打开表例如:OPENDATABASE职工USE职工信息表INUSE职工工资表INUSE职工部门表IN排序和多表的同时使用每个表打开后都有两个默认的别名一个是表名自身另一个是工作区所对应的别名。在前个工作区中指定的默认别名是工作区字母A到J工作区ll到中指定的别名是W到W。另外还可以在USE命令中用ALIAS短语指定表的别名。如命令:USE职工信息表INALIASemp为职工信息表指定了别名emp。排序和多表的同时使用.使用不同工作区的表除了可以用SELECT命令切换工作区使用不同的表外VisualFoxPro也允许利用IN<工作区>|<表别名>命令在一个工作区中使用另外一个工作区中的表。例如当前使用的是第个工作区中的职工工资表现在要将第个工作区中的职工信息表定位在职工号为的记录上可以使用命令:SEEK""ORDER职工号IN职工信息表排序和多表的同时使用在一个工作区中还可以直接利用表名或表的别名引用另一个表中的数据具体方法是在别名后加上点号分隔符“”或“>”操作符然后再接字段名。例如当前使用的是第个工作区中的职工工资表现在要显示第个工作区中的职工信息表的职工号和姓名字段的值可以使用命令:职工信息表职工号,职工信息表>姓名排序和多表的同时使用.表之间的关联在介绍数据参照完整性时介绍了表之间的关联它们是基于索引建立的一种“永久联系”这种联系存储在数据库中可以在“查询设计器”或“视图设计器”中自动作为默认联系条件保持数据库表之间的联系。永久联系在“数据库设计器”中显示为表索引间的连接线。排序和多表的同时使用在VisualFoxPro系统默认的情况下一个工作区中表记录指针的移动并不会影响其他工作区中表记录指针的移动。但在多表操作中为了保证处于不同数据表中数据的对应关系希望当前表记录指针的移动能引起其他表记录指针按某种条件移动到相匹配的记录上这种情况称为记录指针的联动。永久联系在每次使用表时不需要重新建立但永久联系不能控制不同工作区中记录指针的联动。要解决这一需求常用的方法是建立表之间的临时联系。排序和多表的同时使用要建立临时联系的两个表要求有相同的字段或者能建立起相同的字段表达式。建立临时联系的两个表要有父表和子表之分父表为当前表子表为另一个工作区中打开的表。当父表记录指针移动时子表的记录指针也会相应的移动。可以使用SETRELATION命令建立表间的临时联系。命令执行后就建立了当前表(父表)与另外工作区中打开的表(子表)之间的临时联系。命令格式:SETRELATIONTO<表达式>INTO<工作区号>|<表别名>ADDITIVE排序和多表的同时使用说明:()<表达式>取的是两个表都有的公共字段且子表必须按<表达式>建立索引并指定为主控索引。()<工作区号>|<表别名>是指定子表所在的工作区号或子表的表别名。()可选项ADDITIVE使父表与子表建立关联时原先已存在的关联仍然保留缺省该选项则取消原有的关联。排序和多表的同时使用【例】通过“部门编号”索引建立职工信息表和职工部门表之间的临时联系。OPENDATABASE职工SELECTUSE职工部门表ORDER部门编号SELECTUSE职工信息表SETRELATIONTO部门编号INTO职工部门表BROWSEFIELDS职工号,姓名,部门编号,职工部门表部门名称,职工部门表办公地址排序和多表的同时使用这样当职工信息表记录的指针变动时职工部门表记录的指针也随之变动。比如当职工信息表的记录指针指向职工号为的记录时那么职工部门表的记录指针会自动指向部门编号为的记录。当临时联系不再需要时可以取消命令SETRELATIONTO将取消当前表到所有表的临时联系。如果只是取消某个具体的临时联系应该使用命令:SETRELATIONOFFINTO<工作区号>|<表别名>排序和多表的同时使用.数据工作期数据工作期是一个用于设置工作环境的交互操作窗口所设置的环境可以包括打开的表及其索引、多个表之间的关联等状态。数据工作期窗口可以用下列种方式打开。()菜单方式。选择“窗口”菜单中的“数据工作期”命令即打开数据工作期窗口。()命令方式。在命令窗口中直接执行SET命令或SETVIEWON命令都可以打开数据工作窗口。排序和多表的同时使用数据工作期窗口包括部分。左边的“别名”列表框用于显示目前已打开的表并可从中选定一个表作为当前表右边“关系”列表框用于显示表之间的关联状况中间是个按钮其功能简介如下。“属性”按钮:用于打开“工作区属性”对话框。在该对话框中可以对表进行各种设置。“浏览”按钮:为当前表打开浏览窗口用户可以浏览或编辑数据。排序和多表的同时使用“打开”按钮:显示“打开”对话框来打开表。如果数据库已打开则可打开数据库表。“关闭”按钮:关闭当前表。“关系”按钮:以当前表为父表建立关联。“一对多”按钮:如果要建立一对多关系可单击该按钮。系统默认表之间以多对一关系关联。本章小结本章主要讲解了VisualFoxPro数据库和数据表的建立、操作的基本方法介绍了通过菜单进行可视化的操作和通过命令进行的操作。本章是学习VisualFoxPro的重要章节在后面的章节中很多内容都是基于本章内容的因此要重点学习本章的内容。在数据库中要了解数据库的基本概念掌握建立数据库、使用数据库、修改数据库、删除数据库的方法。本章小结在数据表中要了解数据库表和自由表的区别对于数据库表要掌握建立表、字段名、字段类型和宽度、空值、字段有效性选项组、显示选项组、显示表结构、修改表结构的方法对于自由表要掌握建立表、将自由表添加到数据库、从数据库中移出表的方法。对于表的操作要掌握打开表与关闭表、显示数据记录、增加记录、复制数据表、定位记录、编辑与修改记录、删除记录、表中数据与数组间的数据传送的方法。本章小结在索引中要了解索引的基本概念(主索引、候选索引、唯一索引、普通索引)掌握在表设计器中建立索引(单项索引、复合字段索引)、用命令方式建立索引、使用索引的方法。在数据完整性中要熟悉实体完整性与主关键字、域完整性与约束规则掌握表之间的关联的建立和参照完整性的设置。要了解物理排序的概念熟悉多工作区的概念掌握使用不同工作区的表、建立表之间的关联、使用数据工作期的方法

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

评分:

/188

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利