VFP60数据库及其操作课件.ppt

上传人:牧羊曲112 文档编号:4009870 上传时间:2023-04-01 格式:PPT 页数:104 大小:1.32MB
返回 下载 相关 举报
VFP60数据库及其操作课件.ppt_第1页
第1页 / 共104页
VFP60数据库及其操作课件.ppt_第2页
第2页 / 共104页
VFP60数据库及其操作课件.ppt_第3页
第3页 / 共104页
VFP60数据库及其操作课件.ppt_第4页
第4页 / 共104页
VFP60数据库及其操作课件.ppt_第5页
第5页 / 共104页
点击查看更多>>
资源描述

《VFP60数据库及其操作课件.ppt》由会员分享,可在线阅读,更多相关《VFP60数据库及其操作课件.ppt(104页珍藏版)》请在三一办公上搜索。

1、1,第四章 VFP6.0数据库及其操作,4.3 自由表4.1 Visual FoxPro数据库及其建立4.2 建立数据库表(重点)4.4 表的基本操作与相关命令(重点)4.5 索引与排序(难点)4.6 数据完整性与表间永久性关系4.7 多个表的同时使用,教学要求:,2,一、建立表1、设计表结构一个数据表由数据表名、数据表的结构、数据表的记录三要素构成。表的结构:定义数据表中的字段个数、各个字段的名称、属性、类型、宽度。,定义数据表的结构需注意的问题:数据表名及字段类型的设置(N、I、C、D、L、M、G、T、Y、B),可以是汉字、英文字母、数字与下划线,数字与下划线不能是第一个字符。小数点和正负

2、号在字段宽度中各占一位,4.3 自由表(.dbf),3,Student表结构,Why?,4,course表结构,5,scores表结构,6,2、创建表表向导表设计器:文件新建表新建文件输入表名保存打开表设计器,7,3、输入表记录在表设计器里设置完后,确定:,如果选择“是”,可以以立即方式向表中输入数据;选择“否”则结束表结构的建立。,表的记录可以通过记录编辑窗口按记录逐个字段输入:显示浏览/编辑追加方式,8,4、特殊数据的输入 逻辑型字段只接受T、Y、F、N 日期型数据必须与日期格式相符,默认为MM/DD/YY,也可自行设置:工具选项区域 备注型数据的输入:memoMemo 通用型数据的输入:

3、genGen,9,二、修改表结构表设计器,表设计器的打开:打开表后,显示表设计器 表打开后,命令窗口中输入MODIFY STRUCTURE修改完后,点击“确定”则:,10,4.1 VFP6.0数据库及其建立,一、数据库的组成结构与相关资源,在数据库开发过程中还会创建和使用查询、报表、表单等资源。,11,数据表同二维表,拥有列(字段(Field)与行(记录)。一个字段由字段名和字段值组成,所有字段名的集合构成了表的第一行(又称为表头),叫做数据表的结构。视图 视图是提取数据库记录、更新数据库数据的一种操作方式,是从一个或多个数据表中导出的“表”。它与数据表不同的是,视图中的数据还是存储在原来的数

4、据表中,因此可以把它看作是一个“虚表”。视图是不能单独存在的,它依赖于数据表而存在,只有打开与视图相关的数据库才能创建和使用视图。,12,存储过程 存储过程类似于编程时的函数,将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,那么以后要求数据库提供与已定义好的存储过程的功能相同的服务时,只需调用执行,即可自动完成命令。查询 查询是一种相对独立且功能强大、结果多样的数据库资源,利用查询可以实现对数据库中数据的浏览、筛选、排序、检索、统计和加工等操作;利用查询可以为其他数据库提供新的数据表,可以从单个表中提取有用的数据,也可以从多个表中提取综合信息。,13,报表 在对数据库进

5、行操作时,数据和文档的输出通常有两种方式:屏幕显示和打印机打印。报表就是用户使用打印机输出数据和文档的一种实用方式。表单 在Visual FoxPro系统中,表单是数据库应用系统的主要工作界面,表单为数据库信息的显示、输入和编辑提供了非常简便的方式,也可以作为系统流程控制的窗口。,14,二、数据库的创建,在Visual FoxPro中,数据库文件的扩展名是.DBC。在建立数据库时,还会自动建立一个扩展名为.DCT的数据库备注文件和一个扩展名为.DCX的数据库索引文件。这三个文件是供Visual FoxPro管理数据库使用的,用户不能直接使用这些文件。,1、默认目录的设置:要求将默认目录设置到C

6、盘下的学生成绩数据库2、数据库文件的建立:在上一目录下创建一数据库“学生成绩”:文件新建数据库输入数据库名打开数据库设计器也可在项目里创建数据库,15,图4-5数据库设计器,16,3、数据库操作命令:,1)建立数据库:格式:CREATE DATABASE 数据库名说明:其中数据库名是要创建的数据库名称,可以带有路径。,【例4-1】如果数据库Test并不存在,建立该数据库,17,创建数据库Test之前的当前数据库窗口,创建数据库Test之后的当前数据库窗口,注:此时系统将在当前目录下建立Test数据库,但系统并不同时打开Test数据库的数据库设计器。当数据库被创建后,该数据就成为当前打开的数据库

7、,在Visual FoxPro系统中,若要对数据库进行操作,必须先打开数据库。,18,2)打开数据库:格式:OPEN DATABASE 数据库文件名|?EXCLUSIVESHARED说明:如果这个数据库不在当前目录下,那么“数据库文件名”应带有路径,如果不带参数或者使用“?”号,则弹出“打开”对话框,提示用户选择要打开的数据库。如果带参数EXCLUSIVE,则以独占方式打开数据库,其他用户无法访问。如果带参数SHARED,则以共享方式打开数据库,允许其他用户同时访问,19,eg.open database e:vf学生管理 open database e:xldatadatabase TWO

8、set database to e:xldatadatabase TWO一个项目可以建立并打开多个数据库,但是当前数据库只有一个,补充:指定当前数据库set database to 数据库名,20,3)修改数据库:格式:MODIFY DATABASE 数据库文件名|?功能:该命令打开“数据库设计器”窗口,以便修改数据库中的内容,“数据库名”是要修改的数据库名称,如果使用“?”号,则弹出“打开”对话框;不带参数时,则打开当前数据库的“数据库设计器”窗口。,21,4)关闭数据库:格式:CLOSE DATABASES ALL说明:如果不带参数ALL,则关闭当前数据库以及它的所有表;如果当前没有打开的

9、数据库,则关闭所有工作区中的自由表、索引和格式文件;如果带参数ALL,则关闭所有打开的数据库和表、索引、格式文件。,22,补充:删除数据库 delete database,Delete database e:xldatadatabase TWO,dbc()函数,作用:返回当前数据库的名称和路径返回值类型:字符型,如果没有当前数据库,则返回空字符串,Open database e:vf学生管理?dbc(),23,在VFP中,表有两种:数据库表和自由表,区别数据库表与数据库相关联;自由表不属于任何数据库,联系可以相互转换,数据库表,自由表,移出,添加,24,4.2 建立数据库表(.dbf),一、在

10、数据库中建立表数据库表必须先打开数据库,然后再建表(同自由表),也可将已有的自由表变为数据库表,25,数据库表的特性:更规范的管理,长表名和表中的长字段名 表中字段的标题和注释 默认值、输入掩码和表中字段格式化 表字段的默认控件类 字段级规则和记录级规则 支持参照完整性的主关键字索引和表件关系 具有insert、update或delete事件的触发器,26,1、显示设置 显示设置用于指定输入和显示字段的格式。选中相应字段后,就可以设置该字段的显示格式了。注意这里设置的并不是数据存储在磁盘上的格式。显示设置包括“格式”、“输入掩码”和“标题”三项字段属性。格式:设置字段显示时的大小写、字体大小和

11、样式等内容。,27,例4-5,28,输入掩码:字段或控件的一种属性,用于限制或控制用户输入的格式。这样字段中的值就具有了统一的风格,从而可以减少数据输入错误,提高输入效率。,例4-6,29,“输入掩码”属性与“格式”属性间存在着实质性的差异,使用各种“输入掩码”的格式化代码,可以完成对当前字段值的一对一格式化控制;而格式的各类代码所做的是对当前字段值的全局性格式化控制。,例如:设置“Student”数据表的“民族”字段,使其可以输入任何字符,但是所有输入的英文字母都会被转换成大写。,利用“格式”属性,30,“输入掩码”属性与“格式”属性间存在着实质性的差异,使用各种“输入掩码”的格式化代码,可

12、以完成对当前字段值的一对一格式化控制;而格式的各类代码所做的是对当前字段值的全局性格式化控制。,例如:设置“Student”数据表的“民族”字段,使其可以输入任何字符,但是所有输入的英文字母都会被转换成大写。,利用“输入掩码”属性,31,标题:它是显示给用户看的字段标题。如果不设置标题,则当显示数据时,Visual FoxPro自动用字段名作为标题。标题最长可达128个字符。,32,2、字段注释:可以在“字段注释”编辑框中输入该字段的说明文字,主要是为了方便程序员编程和书写系统文档。,33,3、字段有效性:在字段级别对数据的约束,(1)规则:是对字段内容进行有效性检查,可在规则框中输入规则表达

13、式。如果输入的表达式比较复杂,可以单击文本框右端的按钮打开生成器对话框,利用生成器辅助输入表达式,注意:规则表达式的值必为逻辑型,因此应该是逻辑表达式或者关系表达式。(2)信息:当输入的数据违反有效性规则时,显示的错误提示信息。,例4-9,注意双引号的使用,34,(3)默认值:可以节省数据输入人员每次都必须重新键入的时间。要设置字段的默认值,请先选定字段,然后将光标移至“默认值”文本输入框中,直接键入默认值。注意:默认值的类型必须与该字段的数据类型相同,并且不可以和字段的有效性规则相冲突。,例4-10,注意双引号的使用,35,设置记录规则表设计器表选项卡,记录有效性:检查同一记录中不同字段之间

14、的逻辑关系,eg.规则是:left(学号,2)=“89”and year(入学年月)=1989 信息是:“不是89级学生”,可以设置记录的有效性规则及出错提示信息,还可以指定记录插入、更新及删除规则。,规则:指定记录级有效性检查规则,光标离开当前记录时进行校验。,信息:指定出错提示信息。,36,触发器:指定规则,eg.年龄10 and 年龄=50,插入触发器:指定插入记录时触发该规则,看是否满足,如不满足,则提示触发器失败信息框。如,在插入触发器中输入:,表示向表中插入或追加记录时,如果输入的年龄不在指定范围内,则当光标离开该记录时会显示触发器失败信息框.,37,eg.recno()=3,更新

15、触发器:指定一个规则,每次更新记录时触发该规则,表示从第3条记录起才符合条件,前两条记录不允许修改,38,eg.left(学号,2)#“89”,删除触发器:指定一个规则,每次在表中删除记录(添加删除标记)时触发该规则,表示89级的学生记录不能删除,只能删除非89级学生的记录,39,三、使用“浏览”窗口操作表,改变行高和列宽:拖动 两个窗口(浏览和编辑)显示数据:窗口拆分条 改变字段的显示顺序 删除记录:删除标记删除标记(逻辑删除):单击记录左侧矩形框,变成黑框,再次单击,变为白色,取消删除标记彻底删除(物理删除):加上删除标记后,菜单“表”彻底删除,例4-11,40,4.4 表的基本操作与相关

16、命令,一、打开和关闭数据表命令1、打开数据表命令:USE格式:USE 数据库名!表名|视图名 IN EXCLUSIVE|SHARED功能:所谓“打开”,就是将表文件的控制信息和具体内容读入内存的工作区中,以便程序或用户访问数据。所谓“关闭”,就是释放文件所占用的内存区域,将文件更新的内容保存到外存储器中。,例4-12,例4-13,41,工作区:编号区域,标识一个已打开的表。Visual FoxPro最多可以同时打开32767个数据表,每个打开的表都要在存储器中开辟一个存储区域,这个存储区域就叫做工作区。使用数字编号如:1-10,或用字母A-J来表示,称为工作区别名。如果命令中出现的工作区编号是

17、0,表示在当前序号最小的可用空闲工作区中打开文件。,在Visual FoxPro系统中,可以在多个工作区中多次打开一个表文件,但一个工作区中最多只能打开一个表文件。当打开表文件时,如果不人为指定工作区,Visual FoxPro将自动选择序号最小的可用工作区打开数据表文件。当我们浏览表文件时,系统将会自动打开表,该表将占据一个工作区。,42,2、选择工作区:SELECT 格式:SELECT IN 功能:工作区号用于指定工作区的编号,它是一个整数;表别名用于指定工作区中表的别名,它是一个字符串。说明:选择未被占用的最小号工作区可以使用SELECT 0 命令。,例4-14,例4-15,43,二、表

18、中记录操作命令的常用子句 1、显示指定字段内容子句:格式:FIELDS功能:用于指定需要操作的字段。说明:关键字FIELDS可省略,各个字段名称之间请使用逗号分隔,此子句用于在命令中实现投影操作,如果缺省此子句,则操作表中除备注型、通用型字段外的所有字段。,44,45,2、范围子句范围子句可以限定显示记录的范围,即确定该命令涉及的记录,该子句确定的范围共有四种限定法方法,如表所示。,缺省范围子句时默认范围通常默认为ALL,除了删除命令DELETE和显示记录命令DISPLAY在缺省范围子句时默认范围为当前记录。,46,3、FOR子句格式:FOR 功能:在指定范围内查找符合条件的记录,而且只有这些

19、符合条件记录会被命令所操作。说明:要求是一个值为逻辑型的表达式。,4、WHILE子句格式:WHILE 功能:从当前记录开始,逐一测试记录是否满足条件,命令将对包括当前记录在内的一组连续的满足条件的记录进行操作,表中其他记录将不会被操作;如果当前记录不满足条件,将没有任何记录被命令所操作。,47,三、显示记录命令,以列举的形式显示当前表的数据记录LIST|DISPLAY FIELDS FOR WHILE,功能:在表中按指定范围与条件筛选出记录并显示。LIST和DISP区别:LIST命令默认操作范围是所有数据记录(即 ALL),而DISPLAY命令的默认操作范围是当前数据记录(即 NEXT 1);

20、DISPLAY 分页方式显示,并提示用户继续,而LIST滚动显示,直到最后一行记录在屏幕上显示出来为止。,例4-17例4-23,48,命令和子句的书写规则:(重复讲一遍,重点)(1)命令动词与子句、子句与子句、子句的各部分(如NEXT与5,FOR与逻辑条件表达式)之间必须用空格隔开,但各个子句的次序允许任意排列,这对于执行结果没有影响。(2)命令动词与各子句的保留字,包括函数的名字都可以简写为前四个字母,而且对于其中出现的英文字母,使用大小写不区分。,49,(3)一条命令的长度可达8192个字符,若一行写不下,可在适当位置输入续行符“;”并回车,然后在下一行中继续键入该命令。(4)命令或函数格

21、式中以“|”分隔开的两项表示两者之中只选其一,例如EXCLUSIVE|SHARED表示要么使用独占方式,要么使用共享方式;用中括号“”括起来的部分表示可选项;用尖括号“”括起来的部分表示由用户定义的内容,但这些符号并非命令或函数的组成部分。(5)标点符号须是半角状态。,50,四、删除记录命令,逻辑删除和物理删除。,1、为记录加删除标记、执行逻辑删除格式:DELETE FOR 功能:对符合条件的记录加删除标记。相当于在“表”菜单下执行“删除记录”命令。其中子句用于指定范围,而FOR子句用于指出须符合的条件。,例4-24,例4-25,51,2、从磁盘上删除带有删除标记的记录 格式:PACK MEM

22、O DBF功能:将那些被逻辑删除的记录实际移出表,MEMO子句:从和表文件同名的.FPT备注文件中删除未使用的空间,但不从表中删除带有删除标记的记录;DBF子句,则从表中删除所有带删除标记的记录,但不影响备注文件。相当于执行“表”菜单下的“彻底删除”命令。,52,3、取消带有删除标记的记录:恢复被DELETE命令标示成删除状态的记录。格式:RECALL FOR 功能:对当前表在指定范围内满足FOR条件子句的记录去掉删除标记,若各子句都缺省,则只恢复当前记录。说明:RECALL 命令必须在还没有对表使用PACK命令以前执行,否则那些被标示为删除的记录早已被实际移出表外。,例4-26,53,4、彻

23、底删除表中所有记录ZAP命令可一次性将当前表中所有记录彻底删除。数据记录虽然被删除了,但数据表的结构仍完整地存在。相当于DELETE ALL和PACK联用,因此一定要谨慎使用。,54,五、修改记录的命令:REPLACE格式:REPLACE WITH,WITH.FOR 功能:指定用表达式的值代替字段中的数据。当然在多数程序中,REPLACE只用于对一个字段进行修改。FOR子句用于指出表中哪些记录将被修改,则指出命令修改记录的操作范围。说明:需要注意的是,这里的默认范围是当前记录。,例4-27,例4-28,55,六、查询定位命令与相关函数记录号、记录指针(移动)和当前记录(使用USE命令打开表以后

24、,记录指针指向第一条记录)。,1、GO|GOTO命令:绝对移动记录指针格式1:GO|GOTO 格式2:GO TOPBOTTOM2、RECNO()函数:测试当前记录的记录号,例4-29,56,3、SKIP 命令:相对移动记录指针格式:SKIP 功能:正数:向下移动;负数:向上移动;缺省时默认值为1。,57,4、函数BOF()确定记录指针是否已经到文件头,其返回值为逻辑型数据。,58,5、函数EOF()确定记录指针是否已经到文件尾,其返回值为逻辑型数据。,59,6、条件定位命令格式:LOCATE FOR 功能:在当前表中指定内,查找表中满足“条件表达式”的第一条记录,并将其设置为当前记录;若表中无

25、此记录,搜索后Visual FoxPro主屏幕的状态条中将显示“已到定位范围末尾”,此时记录指针指向文件尾位置。缺省范围为全部记录。按搜索条件顺序查找当前表的命令LOCATE 命令,经常和CONTINUE命令、FOUND()函数结合使用。,60,7、FOUND()函数格式:FOUND()功能:用于判断最近一次执行LOCATE、CONTINUE、FIND或SEEK命令的执行结果。查找成功则返回逻辑真值,查找失败则返回逻辑假值。8、CONTINUE命令当数据表中存在多个满足条件的记录时,我们首先使用LOCATE查找到第一条符合查找条件的记录,然后使用CONTINUE命令逐次找出后面的记录。CONT

26、INUE命令第一次执行将查找到第二条符合查找条件的记录,,例4-32,61,62,七、复制表命令1、COPY命令:复制数据表文件格式:COPY STRUCTURE TO 新建文件全名 FIELDS 字段名表 FOR 功能:导出当前表中的数据到一个新表或其他类型的文件中,假如命令包含关键字STRU则只复制数据表的结构,当使用FOR子句时表中满足逻辑表达式条件的部分记录会被复制。对于含有备注型字段的表,系统在复制扩展名为DBF的文件的同时会自动复制扩展名为FPT的文件。,例4-33,例4-34,例4-35,63,2、COPY FILE命令:复制任何文件格式:COPY FILE TO 功能:从文件复

27、制到文件;如果是对数据表进行复制,那么该数据表必须处于关闭状态;和都可以使用通配符*号和?号。,例4-36,64,八、追加记录的命令1、APPEND命令格式:APPEND BLANK IN 功能:在当前表的尾部添加一条或多条记录。如果使用BLANK子句,表示在表的最后添加一个空记录,此时并不会自动打开编辑或浏览窗口;不加此子句则会自动打开编辑或浏览窗口,并且窗口内会有空白的记录位置,使用户可以编辑新增记录。,65,2、APPEND FROM命令从各种格式的数据文件(包括其他数据处理软件的文件)中读取数据,并追加到当前表中。格式:APPEND FROM FIELDSFOR 功能:将其它文件的内容

28、追加到当前表的尾部,其中“数据文件名”用于指定要读取数据的文件名,默认扩展名是.DBF,如果要追加的数据文件的扩展名不是.DBF,则源文件必须包括扩展名。,例4-37,66,九、数据统计命令1、COUNT命令格式:COUNT FOR WHILE TO 功能:计算指定范围内满足条件的记录个数,子句用于指出范围,默认范围时是指表中的全部记录;而FOR子句则用于指出条件;若使用了TO子句,则还可以将记录数存储在内存变量中,便于以后引用,如果指定的变量不存在,系统会自动创建它。,例4-38,67,2、SUM命令格式:SUM 数值型字段名表 FOR WHILE TO 功能:数值型字段名表用于指定数据表的

29、一个或多个数值型字段或数值型表达式对其求和值。如果省略它,则对选定表的所有数值型字段分别求和。TO 将求得的和保存在变量列表中,如果指定的变量不存在,系统会自动创建它。,例4-39,68,3、AVERAGE命令格式:AVERAGE 数值型字段名表 FOR WHILE TO 功能:数值型字段名表用于指定数据表的一个或多个数值型字段或数值型表达式对其求平均值。如果省略它,则对选定表的所有数值型字段分别求和。TO 将求得的和保存在变量列表中,如果指定的变量不存在,系统会自动创建它。,例4-40,69,4、汇总命令格式:TOTAL TO ON FIELDS 数值型字段列表 FOR WHILE 功能:在

30、当前表中,分别对关键字段的值相同且相邻的记录,按数值型字段列表中的各表达式的值进行求和,并将结果存储到一个新表中,用于指出新的表文件的名字,而ON 用于指出哪个字段作分组关键字段。,例4-41,70,排序:根据表中某些字段的值重新排列记录,排序后生成一个新表,原表不变SORT TO 新文件名 ON 字段名1/A/D/C,字段名2/A/D/C范围FOR|WHILE 条件FIELDS 字段名表,注意:ON后的字段名不能是备注型或通用型的/A 升序(默认),/D降序,/C表示不区分字母的大小写,4.5 排序与索引,71,Use studentListSort to student1 on 专业,学号

31、 FIELDS 学号,姓名,性别,专业USE student1LIST,例:对student.dbf按专业升序排序,当专业相同时,则按学号升序排序,新表student1.dbf中只包含学号,姓名,性别和专业4个字段。,72,物理顺序:表中记录的存储顺序,用记录号表示。逻辑顺序:表打开后被使用时记录的处理顺序。,排序后,生成的新表的物理顺序改变;索引则不改变物理顺序,按索引关键字建立记录的逻辑顺序,生成索引文件中只包含关键字和记录号,而且当索引文件打开时,增加删除原表中的记录或修改关键字,索引文件会自动更新,比原表小,占空间,比原表小的多,索引,73,一、索引与索引文件的概念与分类1、索引的分类

32、 主索引(Primary Index)不允许出现NULL值和重复值的索引。在数据库表中,每张表只能创建一个主索引,而自由表不能创建主索引,主索引只能保存在数据库表的结构复合索引中。候选索引(Candidate Index)可用作主关键字的索引,不允许有重复值的索引。即主索引的“候选项”。候选索引可用于数据库表和自由表,并且一张表中可以建立多个候选索引。,74,唯一索引(Unique Index)允许出现重复值,但索引文件入口值是唯一的,尽量少使用唯一索引。普通索引(Regular Index)允许重复,即在普通索引上查找的记录不具有唯一性。对一张数据表可以创建多个普通索引。,75,2、索引文件

33、的分类 索引本身并不改变数据的物理顺序,只是把索引保存到另一个文件中,这一文件就是索引文件。结构复合索引文件(Structural Compound Index File)结构复合索引将一张表的一个或多个索引的索引信息存储在一个索引文件中,且索引文件的主文件名与数据表名相同,扩展名为.CDX。结构复合索引文件自动与数据表文件同步打开和关闭,并且在表修改时可以进行自动更新。,76,非结构复合索引文件(Compound Index)非结构复合索引文件将一张表的一个或多个索引的索引信息存储在一个索引文件中,扩展名为.CDX,但其文件名与表名不同,且不会自动随表的打开而打开,只有用打开索引文件命令将其

34、打开,才能起作用。独立索引文件(Independent Index File)单索引文件 包含一个索引入口的索引文件,它只存储一个索引,一般作为临时索引文件,其扩展名为“.IDX”。独立索引文件不会随表的打开自动打开。,77,索引文件存放哪些索引?结构复合索引文件:表的主索引和候选索引必须存放在其中,同时将索引的属性存储在数据库中。因为这两种索引必须和表同时打开。唯一索引和普通索引可以存储在这两种索引文件之中。,78,二、索引的创建1、在表设计器中建立索引,例4-42、4-43,79,2、用命令建立索引建立主索引和候选索引:SQL语言中的CREATE TABLE和ALTER TABLE命令建立

35、除主索引之外的各种类型的索引:用INDEX命令创建字段表达式索引。,格式:INDEX ON TO|TAG OF FOR ASCENDINGDESCENDING UNIQUECANDIDATE,例4-44、4-45,80,三、打开与设置索引,要利用索引查询,必须同时打开表和索引文件。一个表可以打开多个索引文件,同一个复合索引文件也可能包含多个索引标识,但任何时候只能有一个索引文件能起作用,在复合索引文件中也只有一个索引标识能起作用。当前起作用的索引文件称为主控索引文件,当前起作用的索引标识称为主控索引。实现索引查询必须满足以下条件:打开表;打开索引文件;确定主控索引文件或确定复合索引文件的主控索

36、引。,81,1、打开索引文件 若当前数据表仅有一个独立索引文件打开,它就成为主控索引文件,此外使用命令刚建立索引时,索引文件呈打开状态且会成为主控索引文件。需要注意的是,结构复合索引总是随数据表的打开而被打开,其他索引文件必须使用命令显式打开。(1)与数据表同时打开 格式:USE INDEX,例4-46,82,(2)使用SET INDEX命令打开索引SET INDEX命令可以用于打开当前表的索引,可以同时打开多个索引。格式:SET INDEX TO ORDER|TAG OF,例4-47,83,2、设置主控索引由于在复合索引的多个索引中,在某一时刻只有一个索引对表起作用,这个索引标志称为主控索引

37、。格式:SET ORDER TO TAG OF 说明:TAG OF 用于指定.CDX文件中的一个索引标识为主控索引标识。标识名可以来自任何打开的.CDX文件。如果在各打开的.CDX中存在相同的索引标识,则需使用OF 来指定包含此标识的.CDX文件。,例4-48,84,四、索引查询命令,与顺序查询比较:顺序查询速度较慢,只适用于记录较少的表。索引查询速度很快,但其算法要求表的记录是有序的,这就需要事先对表进行索引。,85,格式:SEEK ORDER TAG OF IN 说明:用于指定搜索的索引关键字。ORDER TAG OF 用于指定搜索关键字的索引文件或索引标识。,例4-49,86,SEEK命

38、令只能对有索引的数据表进行查询,并且只能搜索索引关键字。匹配的结果受SET EXACT设置的影响。如果找到了符合条件的记录,则RECNO()函数将返回匹配记录的记录号,FOUND()函数将返回真,EOF()函数返回假;如果没有找到了符合条件的记录,则RECNO()函数将返回表中记录的个数加1,FOUND()函数将返回假,EOF()函数返回真。,87,4.6 数据完整性与表间永久性关系定义:数据完整性是数据的准确性和一致性的测度,它是为防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。分类:实体完整性(Entity Integrity)、域完整性(Do

39、main Integrity)、参照完整性(Referential Integrity)、用户自定义的完整性。,88,一、实体完整性与关键字 实体完整性约束要求关系的主键中属性值不能为空,这是数据库完整性的最基本要求,因为主键是惟一决定元组的,如为空则其惟一性就成为不可能的了。在Visual FoxPro系统中,即是要求一个数据表中不允许出现重复记录,因此,一个数据表应该至少有一个关键字,主索引和候选索引都可以担当关键字。二、域完整性与约束规则域完整性是指对属性的取值范围作出的要求。在建立表时,各字段的数据类型的设置就属于域完整性的范畴。在表设计器中为数据表的字段设置的有效性规则,也就是一种域

40、完整性约束规则。,89,三、参照完整性,1、表间永久性关系(1)表之间的关系一对一、一对多和多对多三种关系。(2)建立关系永久关系:在数据库中建立的表与表之间的关系,将作为数据库的组成部分而被永久保存。在“数据库设计器”中,选择主表中想要关联的索引名,然后把它拖到相关表匹配的索引名上即可。前提:必须在父表中建立主索引或候选索引,例4-50,90,(3)删除关系,91,(4)编辑关系,在“编辑关系”对话框中有两个下拉列表,分别列出了两个表的索引,可以在其中选择合适的索引,Visual FoxPro会自动判断索引的类型,建立“一对一”或“一对多”的关系。其中,在父表的下拉列表中,仅列出主索引和候选

41、索引;而在子表的下拉列表中,则会列出各种索引。,92,2、参照完整性规则及其设置(1)概念 参照完整性(Referential Integrity,RI)是指在永久关系的基础上可设置的表间的参照完整性规则。它与表之间的联系有关,或者说,对一个表中的记录,不一定能随意增加、修改和删除,还必须参照别的表中的相关数据才行。(2)三个规则:更新规则、插入规则和删除规则(3)设置参照完整性:,93,参照完整性对话框,打开方法:前提打开数据库设计器后 菜单“数据库”编辑参照完整性 双击连线参照完整性 数据库设计器空白处右击编辑参照完整性,94,例4-51、4-52,95,4.7多个表的同时使用,一、多工作

42、区的概念与应用 在Visual FoxPro系统环境下,允许用户使用32767个工作区,并允许在各个工作区中打开不同的数据库表或自由表,如果用户同时使用两个或两个以上的工作区进行数据操作,那么就是使用了多重工作区。使用多重工作区应该遵循以下原则:(1)每一个工作区只能打开一个表,在某一时刻只能选择一个工作区进行操作。(2)同一个表通常不能在两个或两个以上的工作区上打开,否则要在打开表的命令中选择AGAIN选项。,96,(3)正在进行操作的工作区成为当前工作区,当前工作区上打开的表为当前表,如果要改变工作区,应该使用SELECT命令。(4)在当前工作区可以访问其他工作区表中的数据,其形式为:.或

43、-(5)允许各工作区表间建立关联。当各工作区表间没有关联时,各工作区表的记录指针是独立的;一旦不同工作表间有个关联关系,当前工作区表的记录指针移动时,与之关联的其他工作区表的记录指针也将随之移动。,例4-53,97,98,二、使用数据工作期操作不同工作区的表1、“数据工作期”与其操作窗口介绍数据工作期是用户使用的当前动态工作环境的一种表示,可以将看成一个小型的数据环境。每一个数据工作期包含有自己的一组工作区。这些工作区包含有打开的表、表索引和关系。“窗口”“数据工作期”或“常用”工具栏上的“数据工作期”按钮,就会打开“数据工作期”窗口,99,100,数据工作期设置的环境可以作为视图文件保存,以

44、便在需要的时候恢复它所保存的环境。在数据工作期未关闭时,可使用文件菜单的“另存为”命令来建立视图文件,系统默认视图文件的扩展名为.VUE。,2、数据工作期的优点 利用“数据工作期”来建立环境主要有以下优点:(1)直接使用命令来建立环境需要一定的经验,而数据工作期窗口对操作有向导作用,显得比较方便。(2)在数据工作期设置的环境可以作为视图文件保存起来,需要时将视图文件打开就能恢复它所保存的环境,若用户建立了多个视图文件,需要某个环境时只要打开相应的视图文件便可。,101,3、在数据工作期窗口建立关联前面所学永久联系不能控制不同工作区中表记录指针的移动,所以在开发VFP应用程序时,不仅要永久联系,

45、而且要控制表间记录指针关系的临时联系关联,例4-54,102,4、用命令方式建立临时性关系:格式:SET RELATION TO INTO 功能:该命令用于建立两个表之间的关系,当父表是当前表时发出此命令。说明:指定在父表和子表之间建立关系的关系表达式,通常是父表的主控索引的表达式。INTO 是子表所在的工作区号。INTO 指定子表的别名,用此访问子表所在的工作区。,103,如果要取消表间临时性关系,则应使用如下命令:语法:SET RELATION TO 功能:取消当前表(父表)与子表之间的关联。,例4-55,104,小结,数据库、表的后缀名如何创建数据库、表,如何输入记录如何设置数据库表的表设计器中的:标题、格式、输入掩码、字段级有效性规则和信息表的命令如何设置索引设置表间关系和参照完整性,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号