VFP第章数据库与表的创建及使用

上传人:新** 文档编号:593587701 上传时间:2024-09-26 格式:PPT 页数:61 大小:916.50KB
返回 下载 相关 举报
VFP第章数据库与表的创建及使用_第1页
第1页 / 共61页
VFP第章数据库与表的创建及使用_第2页
第2页 / 共61页
VFP第章数据库与表的创建及使用_第3页
第3页 / 共61页
VFP第章数据库与表的创建及使用_第4页
第4页 / 共61页
VFP第章数据库与表的创建及使用_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《VFP第章数据库与表的创建及使用》由会员分享,可在线阅读,更多相关《VFP第章数据库与表的创建及使用(61页珍藏版)》请在金锄头文库上搜索。

1、1主讲:王学军主讲:王学军 :移动校园网:移动校园网电邮:电邮:办公地点:系部办公楼办公地点:系部办公楼( (原学生原学生1 1号宿舍楼号宿舍楼)507)507第第3 3章章 数据数据库与表的与表的创立和使用立和使用 信息系统的根底是数据库。设计一个完善、高效、结构优化的数据库,是创立信息系统过程中必不可少的重要环节。在VFP中,表是数据的容器,系统使用表以行和列的形式存储数据,这些行和列就是记录和字段;数据库是表的容器,它联合、组织以及使用表和视图提供的结构和操作环境。 在VFP中,构建数据库也包含创立表。但要注意的是,数据库和表均以文件形式存储在磁盘上,其中数据库文件扩展名为.dbc、表文

2、件扩展名为.dbf,只是表可以属于数据库管理。本章要点本章要点数据库概述数据库的创立、翻开与使用表的创立与使用永久性关系与参照完整性有关数据库及其对象的常用函数3.1 3.1 数据数据库概述概述确定建立数据库的目的,进行数据需求分析。确定需要的各种表,即将信息分为假设干个独立的主题,每个主题都将是数据库中的一个表。确定所需字段,也就是将在表中保存的信息。确定表之间的关系,形象而又直观地反映现实世界中各实体间的真正关系。改进设计、优化设计。3.1.1 数据库设计的过程 数据库的概念设计数据库的概念设计数据库的逻辑设计数据库的逻辑设计3.1 3.1 数据数据库概述概述3.1.2 数据库的组成 1.

3、 表Table 属于某一数据库的表称为“数据库表。与自由表相比,数据库表具有许多扩展功能和管理特性。 表与数据库之间的相关性是通过表文件与库文件之间的双向链接前链和后链实现的。前链是保存在数据库文件中的表文件的路径和文件名信息;后链是存放在表文件中的数据库文件的路径和文件名信息。数据库文件数据库文件数据库文件数据库文件前链前链前链前链前链前链前链前链后链后链表文件表文件后链后链表文件表文件后链后链表文件表文件后链后链表文件表文件2. 视图View 视图是从分散在相关表中的数据通过链接条件收集在一起的“虚表。视图兼有表和查询的特点。3. 连接Connection 连接是保存在数据库中的一个定义,

4、它指定了数据源的名称。这里所说的数据源是指远程数据源,一个远程数据源通常是一个远程数据库效劳器或文件,并且已为它在本地安装了ODBC驱动程序和设置了ODBC数据源名称。4. 存储过程Stored Procedure 存储过程是在数据库数据上执行特定操作并储存在数据库文件中的程序代码。在数据库翻开时会自动加载到内存中。表中字段的标题、注释、默认值、输入掩码和显示格式,以及字段在表单中使用的默认控件类。表的主索引关键字数据库表之间的永久性关系长表名和表注释字段级和记录级有效性规那么存储过程插入、更新和删除事件的触发器3.1 3.1 数据数据库概述概述3.1.3 数据字典 数据字典是指存储在数据库中

5、用于描述所管理的表和对象的数据,即关于数据的数据元数据。 数据字典可创立和指定如下内容:界面操作方式创立数据库用工程管理器创立用菜单命令或工具栏创立命令方式创立数据库CREATE DATABASE DatabaseName|?数据库设计器与“数据库菜单3.2 3.2 数据数据库的的创立、翻开与使用立、翻开与使用 在VFP中,每创立一个数据库都将在磁盘上产生三个文件:数据库文件.dbc、关联的数据库备注文件.dct、关联的数据库索引文件.dcx。3.2.1 数据库的创立新建的数据库,保存后自动以独占方式翻开;翻开数据库中的表,系统会自动翻开相应的数据库;在工程管理器中选择一个数据库并单击“修改按

6、钮;OPEN DATABASE DatabaseName EXCLUSIVE|SHAREDNOUPDATEVALIDATE翻开多个数据库可重复进行数据库翻开操作即可,系统默认最后一个翻开的数据库为当前数据库。根据需要可用SET DATABASE TO命令将另一个被翻开的数据库设为当前数据库或在“常用工具栏“数据库下拉列表中选择一个已翻开的数据库作为当前数据库。3.2.2 数据库的翻开与关闭1.翻开数据库使用数据库前必须翻开数据库2.检查数据库的有效性 在使用命令翻开数据库时假设使用了VALIDATE关键字,那么系统会检查数据库的有效性;也可在翻开数据库后用VALIDATE DATABASE命令

7、检查数据库的有效性和更新链接。 VALIDATE DATABASE RECOVER TO PRINTER|TO FILE FileName【注】RECOVER用于说明更新链接,缺省时仅检查数据库的有效性TO FILE用于说明检查结果信息的去向,缺省时在VFP主窗口显示;VALIDATE DATABASE命令只能处理以独占方式翻开的当前数据库。在工程管理器中选择要关闭的数据库后单击“关闭按钮;使用CLOSE DATABASE命令关闭当前数据库;使用CLOSE DATABASE ALL关闭所有翻开的数据库;关闭退出Visual FoxPro系统。3.关闭数据库【注】在关闭数据库时,附属于该数据库的

8、表同时被关闭如果表已被翻开; 使用CLOSE DATABASE命令可关闭当前数据库和表,假设没有翻开的数据库,那么关闭所有工作区内所有翻开的自由表、索引,并将当前工作区设为1。用Windows操作系统删除;非正常删除用DELETE FILE命令删除; 非正常删除在工程管理器中通过“移去操作进行删除。 正常删除,这样才能删除数据库中所包含的表的链接信息,数据库表将自动变成自由表。否那么,只能用命令FREE TABLE 强行解除数据库与表间的链接,将表变成自由表。4.删除数据库 删除数据库意味着删除存储在数据库中的一切数据,包括存储过程、视图、表之间的关系、数据字典等。VFP中的表Table是指存

9、放在磁盘文件中的一张二维表,通常用来描述一个实体。表中的一列称为字段Field,字段规定了数据的特征。表中的一行称为记录Record,记录是字段值的集合。表的记录必须用一个公共结构来存储,这个结构就是表结构。表分为数据库表简称“表与自由表两种类型。表文件名队要遵守Windows中的约定外,不可使用AJ中的单个字母作为文件名,且最好不要包含空格字符。3.3 3.3 表的表的创立与使用立与使用字段名:用以在表中字段名:用以在表中标识该字段。字段。 字段的数据字段的数据类型:表中每个字段都有特定的数据型:表中每个字段都有特定的数据类型参型参见课本本P.76P.76表表3-13-1 字段的字段的宽度:

10、是指度:是指该字段所能容字段所能容纳数据的最大字数据的最大字节数。有一些数据数。有一些数据类型的型的宽度是固定的。度是固定的。 小数位数:小数位数:对于数于数值型、浮点型和双精度型的字段,型、浮点型和双精度型的字段,可以指定其小数的位数。如数据的整数局部不可以指定其小数的位数。如数据的整数局部不为0 0,那么整个,那么整个宽度至少度至少应比小数位数大比小数位数大2 2,如是,如是纯小小数,那么整个数,那么整个宽度只要比小数位数大度只要比小数位数大1 1。 空空值支持支持NULLNULL:通:通过使用空使用空值NULLNULL,就有,就有了一个判定某个字段是否具有一个了一个判定某个字段是否具有一

11、个值的方法。的方法。3.3.1 表结构概述3.3 3.3 表的表的创立与使用立与使用用“表设计器创立表结构工程中的表: 工程自由表新建新表保存(表向导另存为保存)非工程中的表: 新建新建文件保存(向导另存为保存)3.3.2 创立和修改表结构【注】在【注】在“ “表设计器中创立结构完成后,会出现一对表设计器中创立结构完成后,会出现一对话框,问你是否立即输入数据。如果要立即输入数据,话框,问你是否立即输入数据。如果要立即输入数据,可单击可单击“ “是按钮,否那么单击是按钮,否那么单击“ “否按钮。创立表结否按钮。创立表结构后,在磁盘上会生成扩展名为构后,在磁盘上会生成扩展名为.DBF.DBF和和.

12、FPT.FPT的两个文的两个文件。件。用“表设计器修改表结构工程表修改或用命令MODIFY STRUCTURE表设计器字段的标题和注释标题:浏览表时代表字段的标签,但引用字段时必须使用其字段名。注释:字段的说明信息,在工程管理器中选择一个字段时,在窗口下部将显示该注释。字段的显示属性格式Format:用于指定输入和显示时的格式对输入字段值的整体约束。P.79表3-2输入掩码InputMask:用于指定字段中输入数据的格式对输入字段的每位约束。 P.79表3-33.3.3 字段属性与表属性1. 字段的扩展属性默认值为字段所指定的最初的值。设定默认值时必须是一个与字段类型相同的表达式。如果字段设置

13、为允许Null,那么字段默认值可设置为“Null,否那么字段的默认值不可设置为“Null。如果用户未指定字段的默认值且字段不允许为空值,那么系统按下表所述的方式设置字段的默认值。字段数据类型默认值字符型长度与字段宽度相等的空串数值型、整型、双精度型、浮点型、货币型0逻辑型.F.备注型、通用型(无)日期型、日期时间型空的日期2024/9/2617字段的有效性规那么和有效性信息字段有效性规那么:用来控制输入到字段中的数据的取值范围。该规那么是一个包含当前字段的逻辑表达式,如果输入的值不满足规那么要求即逻辑表达式的值为.F.那么拒绝该字段值并显示一个消息框。字段有效性信息:也称字段有效性说明,是一个

14、字符型表达式,通常与字段的有效性规那么配合使用,用于指定在不满足规那么要求时所显示的消息框中的说明信息。字段的默认控件类作用是指定使用“表单向导生成表单或从数据环境中将字段拖放到表单上时,与该字段相应的控件类。显示翻开示翻开 用菜用菜单等界面操作方法或等界面操作方法或USEUSE命令直接命令直接翻开表翻开表隐式翻开式翻开 指在指在执行某些操作行某些操作时系系统会自会自动翻开翻开相相应的表。如在工程管理器窗口中的表。如在工程管理器窗口中选择一个表后一个表后单击“ “修改或修改或“ “浏览按按钮时,会自,会自动翻开表;翻开表;在在执行行SELECT-SQLSELECT-SQL语句句进行行查询时,也

15、会自,也会自动翻开数据源表等。翻开数据源表等。3.3.4 表的翻开与关闭 在VFP中,表使用前必须翻开。表的翻开可以是显式翻开,也可以是隐式翻开。概念 在翻开一张表时,必须为该表指定一个“工作区。它是用以标志一张翻开的表的区域。 编号132767,前10个也可用AJ工作区中表的别名USE 表文件名 ALIAS 别名函数ALIAS(工作区号)可得到指定工作区的表别名。函数SELECT(别名)可测试指定表别名的工作区号。当前工作区 在“数据工作期中设置当前工作区命令:SELECT 工作区号|别名3.3.4 表的翻开与关闭1. 工作区【注】操作非当前工作区中的表的方法:一是把非当前工作区的表选为当前

16、工作区用SELECT命令;二是在命令中强行指定工作区用IN 工作区号|别名如:GO TOP IN js。SELECT 0 指将未被使用的编号最小的工作区设为当前工作区2. 数据工作期窗口 数据工作期窗口是当前数据动态工作环境的一种数据工作期窗口是当前数据动态工作环境的一种表示。表示。VFPVFP启动后,系统自动生成一个数据工作期,启动后,系统自动生成一个数据工作期,称为称为“ “默认工作期。数据工作期窗口的翻开方法:默认工作期。数据工作期窗口的翻开方法:窗口窗口数据工作期数据工作期常用工具栏上的常用工具栏上的“ “数据工作期窗口按钮数据工作期窗口按钮界面方式文件翻开 数据工作期翻开工程管理器修

17、改或浏览在命令窗口中用命令USE ? 翻开“使用窗口命令方式USE 表名 IN 别名|区号AGAINALIAS 表别名 ;NOUPDATE3. 表的翻开【注注】如如一一张张表表同同时时在在多多个个工工作作区区中中翻翻开开且且均均未未指指定定别别名名,那那么么在在第第一一次次翻翻开开的的工工作作区区中中,别别名名与与表表名相同,其他工作区中用名相同,其他工作区中用AJAJ以及以及W11W32767W11W32767表示。表示。界面方式在数据工作期中关闭命令方式USE IN 别名|工作区关闭所有的表 CLOSE TABLES ALLCLOSE DATABASE ALLCLOSE ALL4. 表的翻

18、开【注注注注】在在在在退退退退出出出出Visual Visual Visual Visual FoxProFoxProFoxProFoxPro系系系系统统统统时时时时,所所所所有有有有的的的的表表表表都都都都将将将将被关闭。被关闭。被关闭。被关闭。设置独占与共享翻开表的默认状态 工具选项数据 SET EXCLUSIVE ON默认“共享翻开 SET EXCLUSIVE OFF默认“独占翻开强行用一种方式翻开表 在“翻开窗口中设置 USE 表名 SHARED|EXCLUSIVE5. 表的独占与共享【注注】当当一一个个表表被被屡屡次次翻翻开开时时,只只能能以以第第一一次次翻翻开开方方式式为为准准。S

19、ET SET EXCLUSIVEEXCLUSIVE的的设设置置并并不不能能改改变变已已经经翻开表的状态。翻开表的状态。表结构创立后立即输入记录在浏览窗口中追加记录菜单命令“表“追加新记录菜单命令“显示 “追加方式使用INSERT-SQL命令追加记录INSERT INTO 表名(字段名1,字段名2,); VALUES(表达式1,表达式2,)举例:INSERT INTO xs(xh,xm,xb,xzydm); VALUES(050503017,高山,男,050301)3.3.5 记录的处理1. 记录的输入【注注】VALUESVALUES后后面面括括号号中中的的具具体体记记录录的的值值要要和和INS

20、ERT INSERT INTOINTO后面的字段名列表保持位置和类型上的一致。后面的字段名列表保持位置和类型上的一致。使用使用APPEND与与APPEND FROM命令追加命令追加记录APPEND BLANKIN 工作区号工作区号|别名名APPEND FROM 文件名文件名FIELDS 字段列表字段列表FOR 条件条件; DELIMITED|XLS 其中,其中,DELIMITED用于用于说明追加文件明追加文件为文本文文本文件;件;XLS用于用于说明追加文件明追加文件为Excel文件,缺省文件,缺省时追加文件追加文件为表文件。表文件。该命令也可通命令也可通过界面完成:界面完成:“表表“追加追加记

21、录备注型字段与通用型字段的数据注型字段与通用型字段的数据输入入备注型:注型:浏览窗口中,窗口中,备注型字段上注型字段上显示示memo表表示无内容;示无内容;Memo表示有内容。表示有内容。备注型字段内容注型字段内容输入方法是光入方法是光标定位到定位到该字段上,按字段上,按+或双或双击通用型:通用型:浏览窗口中,通用型字段上窗口中,通用型字段上显示示gen表示表示无内容;无内容;Gen表示有内容。通用型字段内容表示有内容。通用型字段内容输入方入方法同上,然后再用菜法同上,然后再用菜单命令命令“编辑 “插入插入对象象插入其内容。插入其内容。界面菜单命令“显示“浏览编辑命令BROWSE FIELDS

22、 字段列表FOR 条件; RREEZE 字段名NOAPPEND;NODELETE NOMODIFYTITLE 表达式例:CLOSE TABLES ALL USE xs BROWSE FIELDS xh,xm FOR xb=女 ; NOMODIFY TITLE 女学生2. 浏览窗口3. 记录的筛选横向筛选界面 菜单命令“表“属性 “数据过滤器命令SET FILTER TO 条件界面菜单命令“表“属性 “字段筛选命令SET FIELD TO 字段列表SET FIELD TO ALL列出所有字段取消筛选4. 限制对字段的访问纵向筛选5. 记录定位1记录指针表被翻开后,有三个控制记录表被翻开后,有三个

23、控制记录的标志:开始标志、指针标志、的标志:开始标志、指针标志、结束标志。每当翻开表文件时,结束标志。每当翻开表文件时,指针总是指向第一个记录。指针总是指向第一个记录。文件头文件头(包含(包含表结构表结构等信息)等信息)第第1 1条记录条记录第第2 2条记录条记录第第n n条记录条记录录开始标录开始标志志记录结束记录结束标志标志记录指记录指针针【注】RECNO()测试当前记录指针的位置,开始标志用BOF()测试,结束标志用EOF()测试。翻开表时记录指针情况如下表:表中记录情况表中记录情况BOF()BOF()值值RECNO()RECNO()值值EOF()EOF()值值无记录无记录.T.T.1

24、1.T.T.有记录有记录.F.F.1 1.F.F.记录指针的初始值总是1,不可能为0或负数,最大值是表中记录总数+1。界面操作表转到记录 在浏览窗口移动光标 “记录号:绝对定位“定位:条件定位 范围选项有ALL、NEXT、RECORD n、REST5. 记录定位2记录定位的实现【注】假设定位时未找到相应记录,那么指针【注】假设定位时未找到相应记录,那么指针【注】假设定位时未找到相应记录,那么指针【注】假设定位时未找到相应记录,那么指针指向指定范围的结尾。指向指定范围的结尾。指向指定范围的结尾。指向指定范围的结尾。首记录首记录当前记录当前记录末记录末记录ALLNEXT nRESTRECORD n

25、nn 使用命令n 绝对定位:GOTO 记录号 | TOP | BOTTOM IN 区号|别名n 相对定位:SKIP nRecordsn 条件定位:LOCATE FOR 条件表达式 范围2记录定位的实现【注】假设从第一条记录向上移动一条记录,记录指针指向开始标志,BOF()函数值为.T.,RECNO()值仍为1。假设再执行SKIP -1命令,系统将显示出错信息“已到文件头,此时记录指针仍然指向记录开始标志。假设从最后一条记录向下移动一条记录,记录指针指向结束标志,EOF()函数值为.T.,RECNO()值为表记录数加1。假设再执行SKIP命令,系统将显示出错信息“已到文件尾,此时记录指针仍然指向

26、记录结束标志。如果表有一个主控索引,SKIP命令将使记录指针移动到索引顺序决定的记录上。对于条件定位来说,可使用CONTINUE命令从当前记录继续进行条件定位到下一条满足条件的记录。界面方式的记录修改对于当前工作区中的表,可在浏览窗口中修改记录批量修改:在浏览表状态下,用菜单“表“替换字段6. 记录的修改使用命令修改记录UPDATE命令 UPDATE 表名 SET 字段名1=表达式1;,字段名2=表达式2WHERE 条件REPLACE命令REPLACE 字段名1 WITH 表达式1 ADDITIVE;,字段名2 WITH 表达式2 ADDITIVE范围FOR 条件6. 记录的修改【注】【注】【

27、注】【注】REPLACEREPLACEREPLACEREPLACE命令只能用于修改当前工作区翻开的命令只能用于修改当前工作区翻开的命令只能用于修改当前工作区翻开的命令只能用于修改当前工作区翻开的表,而表,而表,而表,而UPDATEUPDATEUPDATEUPDATE命令在执行时不需事先翻开表,系统会命令在执行时不需事先翻开表,系统会命令在执行时不需事先翻开表,系统会命令在执行时不需事先翻开表,系统会自动在最小未使用的工作区中翻开表;自动在最小未使用的工作区中翻开表;自动在最小未使用的工作区中翻开表;自动在最小未使用的工作区中翻开表;ADDITIVEADDITIVEADDITIVEADDITIV

28、E仅对备注型字段有效,使用时表示替换的仅对备注型字段有效,使用时表示替换的仅对备注型字段有效,使用时表示替换的仅对备注型字段有效,使用时表示替换的内容追加到原备注中,否那么替换原内容;内容追加到原备注中,否那么替换原内容;内容追加到原备注中,否那么替换原内容;内容追加到原备注中,否那么替换原内容;UPDATEUPDATE命令中没有命令中没有“范围选项;缺省范围选项;缺省WHEREWHERE选项时选项时更新所有记录,执行完记录指针指向最后一条记录;更新所有记录,执行完记录指针指向最后一条记录;带有带有WHEREWHERE选项时更新满足条件的所有记录,执行完记选项时更新满足条件的所有记录,执行完记

29、录指针指向满足条件的最后一条记录上。录指针指向满足条件的最后一条记录上。REPLACEREPLACE命令中有命令中有“范围选项和范围选项和FORFOR条件条件“选项,选项,用法比较复杂:两者都有时,说明更新指定范围内满用法比较复杂:两者都有时,说明更新指定范围内满足条件的记录,执行完指针指向指定范围的末尾记录;足条件的记录,执行完指针指向指定范围的末尾记录;两者均缺省时,仅对当前记录一条记录进行替换;两者均缺省时,仅对当前记录一条记录进行替换;只有只有“范围选项,替换指定范围内所有记录,执行范围选项,替换指定范围内所有记录,执行完指针指向指定范围的末尾记录;只有完指针指向指定范围的末尾记录;只

30、有FORFOR子句,那么子句,那么替换表中所有满足条件的记录,执行完指针指向表中替换表中所有满足条件的记录,执行完指针指向表中最后一条记录。最后一条记录。UPDATEUPDATE命令执行时虽然可自动翻开要更新的表,但命令执行时虽然可自动翻开要更新的表,但不会改变当前工作区。不会改变当前工作区。标记要删除的记录逻辑删除浏览表时,手动删除浏览表时,用菜单“表“删除记录 翻开“删除对话框进行删除DELETE-SQL命令删除:DELETE FROM 表名 WHERE 条件DELETE命令删除:DELETE 范围FOR 条件IN 工作区|别名7. 记录的删除与恢复【注】【注】【注】【注】DELETE-S

31、QLDELETE-SQLDELETE-SQLDELETE-SQL命令执行时不需事先翻开表,系命令执行时不需事先翻开表,系命令执行时不需事先翻开表,系命令执行时不需事先翻开表,系统会自动在最小未使用的工作区中翻开表,但不改变统会自动在最小未使用的工作区中翻开表,但不改变统会自动在最小未使用的工作区中翻开表,但不改变统会自动在最小未使用的工作区中翻开表,但不改变当前工作区;其当前工作区;其当前工作区;其当前工作区;其WHEREWHEREWHEREWHERE选项的使用情况同选项的使用情况同选项的使用情况同选项的使用情况同UPDATEUPDATEUPDATEUPDATE命令。命令。命令。命令。DELE

32、TEDELETEDELETEDELETE命令执行时必须先翻开表,其命令执行时必须先翻开表,其命令执行时必须先翻开表,其命令执行时必须先翻开表,其“范围和范围和范围和范围和“FOR“FOR“FOR“FOR子句的使用同子句的使用同子句的使用同子句的使用同REPLACEREPLACEREPLACEREPLACE命令。命令。命令。命令。恢复带删除标记的记录RECALL 范围FOR 条件两个可选项的使用同DELETE命令彻底删除记录物理删除在表浏览状态,用菜单“表“彻底删除对当前工作区中的表,用命令PACK用ZAP命令物理删除当前工作区中翻开表的所有记录而不管记录是否有删除标记对带有删除标记的记录的访问

33、对带有删除标记的记录,在默认情况下有些命令仍然可以对其进行操作,而有些命令那么忽略这些记录。可用SET DELETED ON|OFF来指定VFP是否处理带有删除标记的记录,但该设置也不是对所有命令或函数起作用。DELETE()函数可用于测试记录是否被删除。该命令只能用于当前工作区中翻开的表的数据复制缺省FIELDS子句那么复制表中所有字段,但如果复制产生的文件不是默认的表文件,那么即使备注字段包含在字段列表中,也不把备注字段复制到新文件中SDF选项指明产生的新文件类型为文本文件(.TXT)而XLS选项指明产生文件为电子表格文件.XLS8. 数据的复制COPY TOCOPY TO 文件名 FIE

34、LDS FIELDS 字段列表范围; FORFOR 条件SDFSDF|XLSXLS例: USEUSE xs xsCOPY TOCOPY TO xs01 xs01 FORFOR xb= xb=女女 COPY TOCOPY TO xs01 xs01 FIELDFIELD xh,xm xh,xm SDFSDFCOPY TOCOPY TO xs01 xs01 XLSXLS记录的物理顺序按输入记录时间顺序实际存放的顺序,用记录号来标识不同的记录,函数RECNO()可测试当前记录号。记录的逻辑顺序为实现对表记录的快速查询,可根据需要对表文件中的记录按某个字段单字段索引或某些字段多字段索引值排序,这就是逻辑

35、顺序。3.3.6 索引的创立与使用1. 索引概述【注注】索引排序并没有真正更改表记录的物理顺序,索引排序并没有真正更改表记录的物理顺序,只是建立了一个逻辑顺序与原表物理顺序的记录号之只是建立了一个逻辑顺序与原表物理顺序的记录号之间的对照表,并把对照表保存到一个索引文件中。间的对照表,并把对照表保存到一个索引文件中。字符+字符:数值+字符:数值+数值:日期+字符:其它:逻辑型、物理顺序等一升序一降序问题:2. 索引表达式 索引表达式也叫索引关键字,它是建立一个索引的排序依据,通常是一个字段或由多个字段组成的表达式。需注意需注意:不能基于备注字段或通用字段建立索不能基于备注字段或通用字段建立索引引

36、。如索引表达式是基于多个字段的,系统将根据整个表达式的值进行排序。书写表达式时要注意:普通索引:索引表达式的值允许重复,即在普通索引上查找的记录不具有唯一性。一个表可以创立多个普通索引。唯一索引:索引表达式的值可以重复,但在索引文件中重复的值仅存储一次。一个表可以创立多个唯一索引。3. 索引类型 在VFP中,表的索引类型总共有4种:主索引、候选索引、唯一索引、普通索引。其中,主索引只能在数据库表中创立。当数据库表移出数据库变成自由表时,索引仍然有效,只是主索引将自动变成候选索引。候选索引:以表的候选关键字为索引表达式而创立的索引,所以,对于表中记录来说,指定的索引表达式的值不可重复。如果在任何

37、已经含有重复数据的字段中指定候选索引,系统将产生错误信息;如果表已经建立了候选索引,在追加新记录或修改记录时,系统会检测索引表达式的值是否有重复,如有重复那么拒绝接收数据的输入或修改。一个表可以建立多个候选索引。主索引:对于数据库表来说,可以从候选索引中选取一个作为主索引。每个数据库表只能创立一个主索引,且主索引的索引表达式在表的所有记录中不允许有重复的值,也不允许NULL值。注:在实际应用中,一个表一般创立一个主索引,注:在实际应用中,一个表一般创立一个主索引,根据需要可创立多个普通索引。根据需要可创立多个普通索引。结构复合索引文件将表的一个或多个索引的索引信息存储在一个索引文件中,且索引文

38、件名与表名相同,扩展名为.CDX。结构复合索引能自动地与表同步翻开、更新和关闭。不要建立无用的索引,过多索引将会降低系统性能。非结构复合索引文件与结构复合索引文件一样,索引文件扩展名为.CDX,但其文件名不与表同名,非结构复合索引也不会随表的翻开而自动翻开。独立索引文件只存储一种索引的索引文件,其扩展名为.IDX,文件名由用户指定。与非结构复合索引一样,独立索引也不会随表的翻开而自动翻开。4. 索引文件的类型排序:对索引表达式值的整体升序或降序,默认为升序。索引名:也叫索引标识Tag,其长度最多10个。筛选:指定仅有符合条件的记录参加索引。5. 使用表设计器创立结构复合索引使用USE命令翻开表

39、时,通过ORDER子句指定主控索引。如:USE xs ORDER xh &主控索引为xh界面方式:表浏览状态,菜单“表“属性 “工作区属性 “索引顺序如果表已经翻开,用SET ORDER TO命令设置主控索引: SET ORDER TO 索引标识名IN 工作区|别名ASCENDING|DESCENDING 6. 索引的使用起作用的索引起作用的索引1设置主控索引SEEK 表达式表达式 ORDER 索引索引标识标识名名IN 工作区工作区|别别名名ASCENDING|DESCENDING 如:如:USE xs ORDER xh SEEK “0407010042利用索引快速定位【注】 SEEK命令可在

40、表中搜索指定表达式的值首次出现的记录,这个记录的索引关键字必须与指定表达式类型匹配。 SEEK命令只能在索引过的表中使用,且只能基于索引关键字进行搜索。如果找到与索引关键字相匹配的记录,那么RECNO()返回定位的记录号,FOUND()函数返回.T.,EOF()函数返回.F.;否那么RECNO()函数返回表中记录数加1,FOUND()函数返回.F.,EOF()函数返回.T.。3.3.7 自由表 自由表就是不隶属于任何一个数据库的表。自由表的创立与数据库表的创立相似,但自由表不能创立数据库表的那些扩展属性,也不能创立主索引,不能建立表间的永久性关系与设置参照完整性等。 自由表可以添加到数据库中,

41、使之成为一个数据库表此时该表可以设置数据库表的一切属性;反之,可以将一个数据库表从数据库中移出,使之成为一个自由表。注意:一个数据库表变成自由表后,一切扩展属性均自动丧失,索引仍然保存,如果有主索引将自动变成候选索引。用CREATE-SQL命令创立表结构CREATE TABLE 表文件名(字段名1 字段类型; (字段宽度, 小数位数) NULL | NOT NULL; , 字段名2 ,)例:学生表结构的创立用命令实现。Create Table xs(xh C(8),xm C(8),xb C(2),zydh C(6)Create Table js(gh C(5),xm C(8),gzrq D,j

42、bgz N(7,2),jl M)【注】上面建立的表结构是针对“自由表而言,而“数据库表是属于某一数据库的,所以要在工程列表中先选择已存在的数据库,然后再点“新建,后面方法同上。 “数据表还可以通过添加已有的“自由表而产生。3.3.8 利用命令创立和修改表结构用ALTER TABLE-SQL命令更改表的结构添加字段添加字段 ALTER TABLE xs ADD COLUMN bjmc c(12) 重命名字段重命名字段 ALTER TABLE xs RENAME COLUMN bjmc TO bj删除字段删除字段 ALTER TABLE xs DROP COLUMN bj修改字段修改字段ALTER

43、 TABLE xs ALTER COLUMN xh c(6)3.3.8 利用命令创立和修改表结构一一对一关系一关系 设A A、B B两两张表,表,A A表中的一个表中的一个记录在在B B表中只有一表中只有一个个记录与之与之对应,B B表中的一个表中的一个记录在在A A表中也只有表中也只有一个一个记录与之与之对应。在很多情况下,两。在很多情况下,两张表可以表可以简单地合并成一个表。地合并成一个表。 一一对多关系多关系 如如A A表中的任意一个表中的任意一个记录在在B B表中可有多个表中可有多个记录与之与之对应,而,而B B表中的每个表中的每个记录,在,在A A表中表中仅有一个有一个记录与之与之对

44、应,那么称两表之,那么称两表之间存在一存在一对多关系。多关系。A A为主表,主表,B B为子表。子表。3.4 3.4 永久性关系与参照完整性永久性关系与参照完整性3.4.1 表之间的永久性关系1. 表之间关系的类型多多对多关系多关系 假假设A A表的一个表的一个记录在在B B表中可表中可对应多个多个记录,而,而B B表中的一个表中的一个记录在在A A表中也表中也对应多个多个记录,那么称那么称为多多对多关系。多关系。 遇到多遇到多对多关系多关系时,必,必须建立第三建立第三张表,把多表,把多对多关系分解成两个一多关系分解成两个一对多关系。第三多关系。第三张表就称作表就称作“ “纽带表。把两表。把两

45、张表的主关表的主关键字都放在字都放在这个个纽带表中。表中。 对于于纽带表,除了包含两个外部关表,除了包含两个外部关键字外,字外,还可以有其他字段。可以有其他字段。纽带表的主关表的主关键字可以由两个外字可以由两个外部关部关键字字组成。成。 它是库表之间的一种关系,不仅在运行时存在,而且一直保存,拥有永久关系的表必须的数据库中。 表间的永久关系是通过索引建立的,永久关系的类型决定了所使用的索引的类型:在一对多中,主表必用主索引关键字或侯选索引关键字,子表那么用普通索引关键字;一对一中,两张表都用主索引关键字或侯选索引关键字。2. 表之间的永久关系1 1永久关系的作用永久关系的作用永久关系的作用永久

46、关系的作用 在在在在“ “查询视图设计器中,自动作为默认联接条件;查询视图设计器中,自动作为默认联接条件;查询视图设计器中,自动作为默认联接条件;查询视图设计器中,自动作为默认联接条件; 作为表单和报表的默认临时关系,在作为表单和报表的默认临时关系,在作为表单和报表的默认临时关系,在作为表单和报表的默认临时关系,在“ “数据环境设计器数据环境设计器数据环境设计器数据环境设计器中显示中显示中显示中显示 用来存储参照完整性信息。用来存储参照完整性信息。用来存储参照完整性信息。用来存储参照完整性信息。2 2永久关系的建立永久关系的建立确定两确定两张具有一具有一对多或一多或一对一关系的表一关系的表建立

47、主表的主索引或侯建立主表的主索引或侯选索引索引如如是是一一对多多,在在子子表表中中以以外外部部关关键字字建建立立普普通通索索引引 ; ;如如是是一一对一一,在在子子表表中中以以与与主主表表相相同同的的关关键字字建建立立主主索索引引或或侯侯选索索引引。建建立立主主表表与与子子表表的的永永久久关关系系,即即在在数数据据库设计窗窗口口中中,将将主主表表的的主主索索引引或或候候选索索引引标识拖拖放放到到子子表表相相应的索引的索引标识上。上。3 3删除、除、编辑永久关系永久关系 在在“数数据据库设计器器中中单击关关系系连线后后这时连线变粗粗,按按键;编辑关关系系时,可可双双击连线翻开翻开“编辑关系关系对

48、话框框进行行编辑修改。修改。 “参照完整性是用来控制数据的一致性,尤其是控制数据库相关表之间的主关键字和外部关键字之间数据一致性的规那么。1.参照完整性的一般要求一对多或一对一子表的每一个记录在对应的父表中有一个父记录。在父表中修改记录时,如改了主关键字的值,那么子表中相关记录的外部关键字值必须同时改。在子表中插入记录时,其外部关键字必须是主表主关键字值中的一个。在父表中删除记录,与该记录相关的子表中的记录必须全部删除。3.4.2 参照完整性 用“参照完整性生成器完成。参照完整性规那么包括更新规那么、删除规那么、插入规那么。2. 参照完整性的设置更新规则更新规则删除规则删除规则插入规则插入规则

49、(当父表中记录的关键字被更新时触发)(当父表中记录被删除时触发)(当父表中插入或更新记录时触发)级联用新的关键字值更新子表中所有相关记录删除子表中所有相关记录限制若子表中有相关记录,则禁止更新若子表中有相关记录,则禁止删除若父表中不存在匹配的关键字,则禁止插入忽略允许更新,不管子表中的相关记录允许删除,不管子表中的相关记录允许插入2024/9/2655父表:显示一个关系中的父表名子表:显示一个关系中的子表名更新:可取“级联、“限制、“忽略删除:可取“级联、“限制、“忽略插入:可取“限制、“忽略父标记:建立该永久性关系的父表的主索引或候选索引标识名子标记:建立该永久性关系的子表的索引标识名【注】

50、在利用【注】在利用“参照完整性生成器对话框设置参照完参照完整性生成器对话框设置参照完整性规那么时,系统会自动地生成完成该规那么的程整性规那么时,系统会自动地生成完成该规那么的程序代码。规那么的代码被保存在数据库的存储过程中,序代码。规那么的代码被保存在数据库的存储过程中,而规那么的实施由主表和子表的触发器完成系统会而规那么的实施由主表和子表的触发器完成系统会自动地设置表的触发器。自动地设置表的触发器。 完整性包括:实体完整性、参照完整性和用户自定义完整性。 实体完整性包括两级:通过对应的有效性规那么实现 字段的数据完整性:输入到字段的数据的类型或值必须符合某个特定的要求。 记录的数据完整性:为

51、记录赋予数据完整性规那么。 参照完整性:指相关表之间的数据一致性。 用户自定义完整性:指由用户通过编程实现对数据完整性的约束。3.4.3 Visual FoxPro数据完整性综述n SELECT (0|1|别名):测试工作区号n 0当前工作区号。n 1当前未被使用最大工作区号。n 别名表别名所在的工作区号,别名必加引号。n USED(区号|别名):测试指定表或工作区是否翻开。n ALIAS(区号):测试指定工作区中的表别名。n FIELD(字段顺序号,区号|别名):返回已翻开表的指定序号的字段名。n FCOUNT(区号|别名):返回已翻开表的字段数。n DELETE():测试表的当前记录是否带

52、删除标记。3.5 3.5 有关数据有关数据库及其及其对象的常用函数象的常用函数DBC( )与与DBUSED( )函数函数DBC( ): 返回当前翻开的数据返回当前翻开的数据库库的完整文件名的完整文件名 字符型字符型 DBUSED( ): 返回指定数据返回指定数据库库文件是否已翻开文件是否已翻开 逻辑逻辑型型 DBGETPROP( )函数函数 返回当前数据返回当前数据库库或数据或数据库库中字段、表、中字段、表、视图视图的属性。的属性。 语语法:法:DBGETPROP(cName,cType,cProperty)cName:指定数据:指定数据库库、字段、表或、字段、表或视图视图的名称的名称cTyp

53、e:指定:指定cName是否是否为为当前数据当前数据库库,或当前数据,或当前数据库库中的一个字段、表或中的一个字段、表或视图视图cProperty:指定属性名称:指定属性名称例如例如: ?DBGETPROP(Cj.cj,FIELD,Caption) 查查看看Cj表的表的cj字段的字段的标题标题,字段名前面的表名不要,字段名前面的表名不要省。省。n n DBSETPROP( )DBSETPROP( )函数函数函数函数 给当前数据库或当前数据库中的一个字段、表或视图设置属性。在主窗口中显示.T. 或 . F.。n 语法语法: DBSETPROP(cName,cType,cProperty,ePro

54、pertyValue)n ePropertyValue: 指定cProperty的设定值n 例如例如: ?DBSETPROP(“Xs.xh,FIELD,Caption,学号)【注】DBGETPROP()DBGETPROP()函数的类型允许值有函数的类型允许值有DATEBASEDATEBASE、TABLETABLE、FIELDFIELD、VIEWVIEW; DBSETPROP()DBSETPROP()函数的常用属性名有函数的常用属性名有CaptionCaption、DefaultValueDefaultValue、PrimaryKeyPrimaryKey、RuleExpressionRuleExpression、RuleTextRuleText2024/9/2660

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 模板/表格 > 财务表格

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号