《第三章 有关数据库及其对象的常用函数.ppt》由会员分享,可在线阅读,更多相关《第三章 有关数据库及其对象的常用函数.ppt(114页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、新编Visual FoxPro 教程江南大学太湖学院机电系计算机教研室江南大学太湖学院机电系计算机教研室 20112011年年2 2月月江苏省普通高校江苏省普通高校计算机计算机等级考试指定教材等级考试指定教材江南大学太湖学院机电系计算机教研室江南大学太湖学院机电系计算机教研室 第第3章章 数据库与表的创建和使用数据库与表的创建和使用3.1 数据库概述数据库概述3.2 数据库的创建、打开和使用数据库的创建、打开和使用3.3 表的创建和使用表的创建和使用3.4 永久性关系与参照完整性永久性关系与参照完整性3.5有关数据库及其对象的常用函数有关数据库及其对象的常用函数第第3章章 数据库与表的创建和使
2、用数据库与表的创建和使用3.1 数据库概述数据库概述n数据库是一个容器,是许多相关的数据库表及数据库是一个容器,是许多相关的数据库表及其关系的集合。其关系的集合。n例如,一个教学管理信息系统中将涉及到教师、例如,一个教学管理信息系统中将涉及到教师、课程、任课、学生、成绩、系以及专业等实体,课程、任课、学生、成绩、系以及专业等实体,可分别用二维表来表示(可分别用二维表来表示(如图所示如图所示)。)。n数据库中的表并不是彼此独立的,借助于一个数据库中的表并不是彼此独立的,借助于一个公共的字段可以将两张表联系起来,这就建立公共的字段可以将两张表联系起来,这就建立了一种了一种“关系关系”。3.1 数据
3、库概述数据库概述n一、数据库设计的步骤:一、数据库设计的步骤:n1、确定建立数据库的目的,进行数据的需求分析、确定建立数据库的目的,进行数据的需求分析n2、确定需要的各种表、确定需要的各种表n3、确定表的字段、确定表的字段n4、确定表之间的关系、确定表之间的关系n5、设计的优化、设计的优化二、二、VFP数据库的组成数据库的组成数据库表数据库表视图视图连接连接存储过程存储过程3.1 数据库概述数据库概述二、二、VFP数据库的组成数据库的组成1、数据库表、数据库表 数据库表与数据库之间的相关性是通过它们之间的数据库表与数据库之间的相关性是通过它们之间的双向链接双向链接实现的。实现的。n前链前链保存
4、在数据库文件中保存在数据库文件中 存储有关表文件的路径和文件名信息存储有关表文件的路径和文件名信息 指向库表指向库表 n后链后链存放在一张表的表头中存放在一张表的表头中 存储有关库文件的路径和文件信息存储有关库文件的路径和文件信息 指向拥有该表的数据库指向拥有该表的数据库 3.1 数据库概述数据库概述二、二、VFP数据库的组成数据库的组成2、视图(、视图(View)n视图是一种视图是一种“虚表虚表”类型,其数据来源于一类型,其数据来源于一张或多张表。张或多张表。n视图兼有表和查询的特点。视图兼有表和查询的特点。n视图可以分为本地视图和远程视图。详细内视图可以分为本地视图和远程视图。详细内容将在
5、下一章介绍。容将在下一章介绍。3.1 数据库概述数据库概述二、二、VFP数据库的组成数据库的组成3、连接(、连接(Connection)n连接是保存在数据库中的一个定义,它制定连接是保存在数据库中的一个定义,它制定了数据源的名称。了数据源的名称。nODBC:开放式数据互连开放式数据互连n连接远程数据源的方法连接远程数据源的方法直接访问在机器上注册的直接访问在机器上注册的ODBC数据源数据源用用“连接设计器连接设计器”设计自定义连接设计自定义连接3.1 数据库概述数据库概述二、二、VFP数据库的组成数据库的组成4、存储过程、存储过程 n存储过程是保存在数据库中的过程代码的地方存储过程是保存在数据
6、库中的过程代码的地方n保存用户自定义函数和过程。保存用户自定义函数和过程。n保存保存参照完整性代码。参照完整性代码。n打开数据库时,它们便被加载到内存中打开数据库时,它们便被加载到内存中。n创创建、修改或移去存建、修改或移去存储过储过程的方法:程的方法:“项项目管理器目管理器”“数据数据库设计库设计器器”MODIFY PROCEDUREMODIFY PROCEDURE 3.1 数据库概述数据库概述三、三、VFP数据字典概述数据字典概述n数据字典是指存储在数据库中用于描述所管理数据字典是指存储在数据库中用于描述所管理的表和对象的数据,即关于数据的数据。这些的表和对象的数据,即关于数据的数据。这些
7、数据称为数据称为元数据元数据。n每个数据库都带有一个数据库字典。每个数据库都带有一个数据库字典。n数据库表可以享受到数据字典的各种功能。数据库表可以享受到数据字典的各种功能。n使用数据字典,可以创建字段级规则和记录级使用数据字典,可以创建字段级规则和记录级规则,保证主关键字字段内容的唯一性。规则,保证主关键字字段内容的唯一性。n如果不用数据字典,也可通过编程实现上述功如果不用数据字典,也可通过编程实现上述功能。能。3.1 数据库概述数据库概述数据字典可创建、指定的内容数据字典可创建、指定的内容n表中字段的标题、注释、默认值、输入掩码和显示表中字段的标题、注释、默认值、输入掩码和显示格式,以及表
8、单中使用的默认控件类等。格式,以及表单中使用的默认控件类等。n表的主索引关键字。表的主索引关键字。n数据库表之间的永久性关系。数据库表之间的永久性关系。n长表名和表注释。长表名和表注释。n字段级和记录级有效性规则。字段级和记录级有效性规则。n存储过程。存储过程。n插入、更新和删除事件的触发器。插入、更新和删除事件的触发器。3.1 数据库概述数据库概述n一、数据库的创建一、数据库的创建n每创建一个新的数据库都将生成三个文件:每创建一个新的数据库都将生成三个文件:数据库文件(数据库文件(.dbc)关联的数据库备注文件(关联的数据库备注文件(.dct)关联的数据库索引文件(关联的数据库索引文件(.d
9、cx)n数据库文件并不在物理上包含任何附属对象,数据库文件并不在物理上包含任何附属对象,仅存储指向表文件的仅存储指向表文件的路径指针路径指针。3.2 数据库的创建、打开和使用数据库的创建、打开和使用一、一、数据库的创建数据库的创建n创建创建数据库数据库可以采用下述方法之一可以采用下述方法之一。使用使用“项目管理器项目管理器”使用使用“文件文件”菜单中的菜单中的“新建新建”命令命令使用命令使用命令 CREATE DATABASE 数据库数据库|?3.2 数据库的创建、打开和使用数据库的创建、打开和使用二、二、数据库的使用数据库的使用1、打开数据库打开数据库2、设置当前数据库设置当前数据库3、检查
10、数据库的有效性检查数据库的有效性4、关闭数据库关闭数据库5、删除数据库删除数据库3.2 数据库的创建、打开和使用数据库的创建、打开和使用1、打开数据库、打开数据库 使用菜单使用菜单n “文件文件”/“打开打开”/指定数据库文件名指定数据库文件名使用使用Open Database命令命令 n格式:格式:Open Database Databasename Exclusive|Shared Noupdate n说明说明:Exclusive:指定以指定以独占方式独占方式打开数据库。打开数据库。Shared:指定以共享方式打开数据库。指定以共享方式打开数据库。Noupdate:以只读方式打开数据库以只
11、读方式打开数据库。3.2 数据库的创建、打开和使用数据库的创建、打开和使用1、打开数据库、打开数据库 n数据库可以同时打开多个数据库可以同时打开多个OPEN DATABASE db1OPEN DATABASE db1OPEN DATABASE db2OPEN DATABASE db2OPEN DATABASE db3OPEN DATABASE db33.2 数据库的创建、打开和使用数据库的创建、打开和使用2、设置当前数据库、设置当前数据库 n所有打开的数据库中,只有一个是所有打开的数据库中,只有一个是当前数据当前数据库库。n在打开数据库时,在打开数据库时,最后一个打开最后一个打开的数据库是的数
12、据库是当前数据库。当前数据库。n将其他数据库设置为当前数据库将其他数据库设置为当前数据库“常用常用”工具栏的数据库下拉列表工具栏的数据库下拉列表SET DATABASE TOSET DATABASE TO 数据库名数据库名 3.2 数据库的创建、打开和使用数据库的创建、打开和使用3、检查数据库的有效性、检查数据库的有效性 n如果数据库和表文件的双向链接被破坏后,如果数据库和表文件的双向链接被破坏后,可重新链接,更新相对路径信息以反映文件可重新链接,更新相对路径信息以反映文件的新位置。的新位置。n重建链接重建链接用用VALID DATABASE RECOVERVALID DATABASE REC
13、OVER命令命令打开表,系统显示打开表,系统显示“打开打开”对话框进行重对话框进行重新定位新定位只能处理以独占只能处理以独占方式打开的当前方式打开的当前数据库数据库3.2 数据库的创建、打开和使用数据库的创建、打开和使用4、关闭数据库、关闭数据库 n从从“项目管理器项目管理器”窗口中,选定要关闭的数窗口中,选定要关闭的数据库并选择据库并选择“关闭关闭”按钮。按钮。3.2 数据库的创建、打开和使用数据库的创建、打开和使用4、关闭数据库、关闭数据库 n使用命令使用命令CLOSE DATABASECLOSE DATABASE:关闭当前数据库关闭当前数据库CLOSE DATABASE ALLCLOSE
14、 DATABASE ALL:关闭所有数据库关闭所有数据库CLOSE ALLCLOSE ALL:关闭所有数据库、表、索引及设计关闭所有数据库、表、索引及设计器器关关闭闭已打开的数据已打开的数据库库jxsjjxsjSET DATABASE TO SET DATABASE TO jxsjjxsjCLOSE DATABASECLOSE DATABASE3.2 数据库的创建、打开和使用数据库的创建、打开和使用5、删除数据库、删除数据库 n删除数据库意味着将删除存储在该数据库中删除数据库意味着将删除存储在该数据库中的一切信息。如:的一切信息。如:存储过程、视图、表之间存储过程、视图、表之间的关系、数据库表
15、的扩展属性等。的关系、数据库表的扩展属性等。n使用使用“项目管理器项目管理器”删除一个数据库的方法删除一个数据库的方法在在“项目管理器项目管理器”中选择待删除的数据库名;中选择待删除的数据库名;单击单击“项目管理器项目管理器”窗口的窗口的“移去移去”按钮,在接按钮,在接下去的提示中选择删除。下去的提示中选择删除。3.2 数据库的创建、打开和使用数据库的创建、打开和使用n表表:是指存储在磁盘文件中的二维表,一张二维:是指存储在磁盘文件中的二维表,一张二维 表保存为表保存为13个个表文件。表文件。(.DBF/.FPT/.CDX)(表、表备注、复合索引)(表、表备注、复合索引)n在在VFP中表分为两
16、种类型:中表分为两种类型:属于某一数据库的表称为属于某一数据库的表称为“数据库表数据库表”;不属于任何数据库而独立存在的表称为不属于任何数据库而独立存在的表称为“自由表自由表”。3.3 表的创建与使用表的创建与使用n字段(字段(Field):表中的一列,规定了数据的特征。表中的一列,规定了数据的特征。每张表最多可以有每张表最多可以有255个字段。个字段。n记录记录(Record):表的一行,多个字段的集合。表的一行,多个字段的集合。注意:注意:表文件名除必须遵守表文件名除必须遵守Windows系统对文件名系统对文件名的约定外,不可用的约定外,不可用AJ中的单个字母作文件名。中的单个字母作文件名
17、。3.3 表的创建与使用表的创建与使用一、表结构概述一、表结构概述n1、表结构(、表结构(Structure):存储表记录的一个公存储表记录的一个公共结构,主要指表的字段及其属性。共结构,主要指表的字段及其属性。n2、字段名:字段名:用以标识一个字段的名字。字段名用以标识一个字段的名字。字段名一般要与其对应的实体的属性名相同或相近,以一般要与其对应的实体的属性名相同或相近,以便于记忆。便于记忆。字段名可以是以字母开头的字母数字字段名可以是以字母开头的字母数字串,也可以是汉字。串,也可以是汉字。n3、字段的数据类型:字段的数据类型:说明字段是什么类型的数说明字段是什么类型的数据。据。不同数据类型
18、的表示和运算的方法不一样。不同数据类型的表示和运算的方法不一样。见下表:见下表:3.3 表的创建与使用表的创建与使用 数据类型数据类型字母字母表示表示宽度宽度 说说 明明示示 例例字符型字符型(Character)C254字母、汉字、符号字母、汉字、符号XH、XM货币型货币型(Currency)Y8货币单位货币单位教师的工资教师的工资数值型数值型(Numeric)N20整数或小数整数或小数考试成绩考试成绩浮点型浮点型(Float)F5(3)(3)日期型日期型 浏览教师表中浏览教师表中1971年以后出生的教师信息。年以后出生的教师信息。USE js Browse for csrqctod(“19
19、71/12/31”)或或 Browse for year(csrq)1971(4)逻辑型逻辑型 浏览课程表中所有必修课的课程信息。浏览课程表中所有必修课的课程信息。USE kc Browse for bxk 注意括号中字注意括号中字注意括号中字注意括号中字符串的表示法。符串的表示法。符串的表示法。符串的表示法。3.3 表的创建与使用表的创建与使用 浏览课程表中所有非必修课的课程信息。浏览课程表中所有非必修课的课程信息。USE kc Browse for .not.bxk 用用FIELDS 子句指定在浏览窗口中出现的字段。子句指定在浏览窗口中出现的字段。例:例:浏览浏览XS表中所有男同学的表中所
20、有男同学的xh,xm,xb信息,并信息,并指定不修改记录,浏览窗口的标题为指定不修改记录,浏览窗口的标题为“男学生男学生”。USE XS BROWSE FIELDS xh,xm,xb FOR xb=男男;NOMODIFY TITLE“男学生男学生”3.3 表的创建与使用表的创建与使用五、记录的处理五、记录的处理 3 3、记录的定位、记录的定位、记录的定位、记录的定位n记录的指针记录的指针:每个记录都按顺序有个每个记录都按顺序有个“记录号记录号”系统在打开一个表文件后将自动生成三个控制标志:系统在打开一个表文件后将自动生成三个控制标志:记录开始标志记录开始标志、记录指针标志记录指针标志、记录结束
21、标志记录结束标志。记录开始标志记录开始标志记录开始标志记录开始标志 记录指针记录指针记录结束标志记录结束标志记录结束标志记录结束标志文件头(含表结构等信息)第1号记录第2号记录第n号记录当前记录当前记录当前记录当前记录 BOF()RECNO()EOF()3.3 表的创建与使用表的创建与使用n记录指针是记录指针是VFP系统内部的一个指示器,在表中系统内部的一个指示器,在表中指向记录。每当打开一个表文件时,指针总是指指向记录。每当打开一个表文件时,指针总是指向向第第1条记录条记录。n测试当前记录用函数测试当前记录用函数RECNO()。其最小值为其最小值为1,最大值最大值为为RECCOUNT()+1
22、,RECCOUNT()是表是表记录总数。记录总数。n打开表时记录指针情况:打开表时记录指针情况:表中无记录:表中无记录:BOF()=.T.EOF()=.T.RECNO()=1表中有记录:表中有记录:BOF()=.F.EOF()=.F.RECNO()=1 3.3 表的创建与使用表的创建与使用n记录的定位记录的定位 (非当前工作区用非当前工作区用:IN)记录指针的记录指针的绝对定位绝对定位:把指针移动到指定的位置。把指针移动到指定的位置。GO/GOTO n:当当n大于记录总数时将拒绝移动。大于记录总数时将拒绝移动。GO TOP&记录指针移动到第一条记录记录指针移动到第一条记录GO BOTTOM&记
23、录指针移动到最后一条记录记录指针移动到最后一条记录GOTO 6&记录指针移动到记录号为记录指针移动到记录号为6的记录上的记录上记录指针的记录指针的相对定位相对定位:把指针从当前位置开始,相对把指针从当前位置开始,相对于当前记录向前或向后移动若干条记录。于当前记录向前或向后移动若干条记录。SKIP n:n0向文件尾方向;向文件尾方向;n29用用SQL命令命令时,不需要时,不需要先用先用USE命命令打开表。令打开表。3.3 表的创建与使用表的创建与使用n删除记录分两步删除记录分两步n做删除标记做删除标记n彻底删除带标记的记录彻底删除带标记的记录五、记录的处理五、记录的处理 5 5、记录的删除记录的
24、删除记录的删除记录的删除3.3 表的创建与使用表的创建与使用n界面方式删除界面方式删除n对少量的记录直接在浏览窗口中删除对少量的记录直接在浏览窗口中删除n在某一范围内删除一组符合特定条件的记录在某一范围内删除一组符合特定条件的记录“表表”菜单中的菜单中的“删除记录删除记录”命令项命令项n“表表”“恢复记录恢复记录”n“表表”“彻底删除彻底删除”五、记录的处理五、记录的处理 5 5、记录的删除记录的删除记录的删除记录的删除3.3 表的创建与使用表的创建与使用n用命令方式删除用命令方式删除nDELETE命令命令(加注删除标记(加注删除标记)DELETE 范围范围 FOR 条件表达式条件表达式IN
25、工作区工作区|别名别名 例:为例:为js表中所有年龄超过表中所有年龄超过60岁的教师的记录加注删岁的教师的记录加注删除标记。除标记。USE JS DELETE FOR YEAR(DATE()-YEAR(csrq)60 注注:此命令无范围和条件时仅修改当前记录此命令无范围和条件时仅修改当前记录nDELETE-SQL(加注删除标记)加注删除标记)DELETE FROM 表名表名 WHERE 条件表达式条件表达式 DELETE FROM JS WHERE;(DATE()-csrq)/365603.3 表的创建与使用表的创建与使用n恢复删除:恢复删除:nRECALL 范围范围 FOR 条件表达式条件表
26、达式 RECALL&恢复当前记录恢复当前记录 RECALL ALL&恢复当前所有记录恢复当前所有记录 RECALL ALL FOR XB=“男男”&恢复所有性别为恢复所有性别为 “男男”的记录的记录n彻底删除:彻底删除:nPACK&删除有删除标记的记录删除有删除标记的记录 CLOSE TABLES ALL USE xs DELETE FOR SUBSTR(XH,1,2)=“04”PACK3.3 表的创建与使用表的创建与使用n删除所有记录:删除所有记录:nZAP&不管记录是否有删除标记,表中所有的记录都不管记录是否有删除标记,表中所有的记录都删除,只留下表结构。删除,只留下表结构。n使用使用DE
27、LETE()函数可测试当前记录是否有删除标记,该函数可测试当前记录是否有删除标记,该函数无参数。函数无参数。n对带有删除标记的记录的访问对带有删除标记的记录的访问nSET DELETE ON|OFF ON:不允许访问有删除标记的记录不允许访问有删除标记的记录 OFF:(:(系统默认值)允许访问标有删除标记的记录。系统默认值)允许访问标有删除标记的记录。USE XSUSE XS DELETE NEXT 3 DELETE NEXT 3 SET DELETE ON SET DELETE ON BROWSE BROWSE?RECCOUNT()?RECCOUNT()已知已知已知已知XSXS表中表中表中表
28、中的记录数为的记录数为的记录数为的记录数为10103.3 表的创建与使用表的创建与使用n利用利用COPY TO命令可以将(在当前工作区中已打命令可以将(在当前工作区中已打开)中的数据复制到其他表文件或其他类型的文件开)中的数据复制到其他表文件或其他类型的文件中。中。COPY TO 文件名文件名 FIELDS 字段列表字段列表 范围范围 FOR 条件表达式条件表达式TYPE SDF|XLS|DELIMITED WITH 字符字符|WITH BLANK|WITH TAB|WITH CHARACTER 字符字符 五、记录的处理五、记录的处理 6、数据的复制数据的复制3.3 表的创建与使用表的创建与使
29、用n例:例:CLOSE TABLES ALL USE xs COPY TO XS01 FOR XB=“女女”COPY TO XS01 FLELDS xh,xm SDF COPY TO XS01 XLS 五、记录的处理五、记录的处理 6、数据的复制数据的复制3.3 表的创建与使用表的创建与使用n利用利用COUNT、SUM、AVERAGE命令可以对表数据命令可以对表数据进行统计。进行统计。nCOUNT 范围范围FOR 条件表达式条件表达式TO 内存变量名内存变量名nSUM数值表达式数值表达式 范围范围FOR条件表达式条件表达式TO内内存变量名存变量名nAVER数值表达式数值表达式 范围范围FOR条
30、件表达式条件表达式TO内存变量名内存变量名 五、记录的处理五、记录的处理7、数据的统计数据的统计3.3 表的创建与使用表的创建与使用n例:例:CLOSE TABLES ALL USE cj COUNT FOR cj60 TO a1 SUM cj TO a2 For xh=“010102”AVERAGE cj TO a3 For kcdh=“02”3.3 表的创建与使用表的创建与使用五、记录的处理五、记录的处理7、数据的统计数据的统计n指从表中选出满足指定条件的记录,不满足条件指从表中选出满足指定条件的记录,不满足条件的记录则被的记录则被“隐藏隐藏”。n界面方式:界面方式:在在“工作区属性工作区
31、属性”对话框中对话框中“数据过数据过滤器滤器”文本框中输入条件。文本框中输入条件。五、记录的处理五、记录的处理8 8、筛选记录、筛选记录、筛选记录、筛选记录3.3 表的创建与使用表的创建与使用n命令方式:命令方式:SET FILTER TO 条件表达式条件表达式 USE USE xsxs SET FILTER TO SET FILTER TO xbxb=“=“女女”n取消筛选:取消筛选:SET FILTER TOSET FILTER TO SET FILTER TO 命令设置的过滤器不会对命令设置的过滤器不会对SELECT-SELECT-SQLSQL、DELETE-SQLDELETE-SQL和
32、和UPDATE-SQLUPDATE-SQL命令起作用。命令起作用。3.3 表的创建与使用表的创建与使用五、记录的处理五、记录的处理8 8、筛选记录、筛选记录、筛选记录、筛选记录n筛选字段是选取表的部分列。筛选字段是选取表的部分列。n“工作区属性工作区属性”对话框中打开对话框中打开“字段筛选器字段筛选器”n命令:命令:SET FIELDS TO 字段列表字段列表:指定可访问字段名称:指定可访问字段名称 CLOSE TABLES ALLUSE xsSET FIELDS TO xh,xm,xbSET FIELDS TO ALL:用于列出所有的字段用于列出所有的字段筛选字段筛选字段 3.3 表的创建与
33、使用表的创建与使用六六、表的索引表的索引1、记录的顺序记录的顺序n物理顺序:物理顺序:表中记录的存储顺序。表中记录的存储顺序。按记录输入的时间顺序存放。按记录输入的时间顺序存放。n逻辑顺序:逻辑顺序:记录的处理顺序。记录的处理顺序。对记录按某个(些)字段的值进行排序。对记录按某个(些)字段的值进行排序。3.3 表的创建与使用表的创建与使用n索引的功能索引的功能根据根据“索引表达式索引表达式”的值进行记录的逻辑排序。索的值进行记录的逻辑排序。索引引并不改变表中记录的物理顺序。并不改变表中记录的物理顺序。n索引机制索引机制建立一个逻辑顺序号与原表物理顺序记录号的对照建立一个逻辑顺序号与原表物理顺序
34、记录号的对照表,并把对照表保存到一个文件中。表,并把对照表保存到一个文件中。n索引文件索引文件对照表存放的文件。一个索引文件中可存放该表的对照表存放的文件。一个索引文件中可存放该表的多个索引。多个索引。3.3 表的创建与使用表的创建与使用n索引标识索引标识(TAG)又叫索引名又叫索引名,标记一个索引的名称。标记一个索引的名称。n索引关键字(索引关键字(Index Key)是建立索引的依据,通常是一个字段或多个字段组是建立索引的依据,通常是一个字段或多个字段组成的表达式。成的表达式。例例 系名表(系名表(xim.dbf)输入时的物理顺序;输入时的物理顺序;以以xdh为索引关键字,按升序建立索引,
35、索引为索引关键字,按升序建立索引,索引文件的情况文件的情况。2 2、索引概述、索引概述、索引概述、索引概述3.3 表的创建与使用表的创建与使用系名表系名表索引文件索引文件记录号记录号123456789索引号索引号1 4 01 表表 的的记录号记录号关键字关键字 的的 值值2 3 023 2 034 1 045 6 056 7 067 5 078 8 089 9 09索引表索引表3.3 表的创建与使用表的创建与使用n多个字段建立索引多个字段建立索引注意注意不能基于不能基于备注型字段备注型字段和和通用型字段通用型字段建立索引。建立索引。如果索引表达式为字符型表达式,则各个字段如果索引表达式为字符型
36、表达式,则各个字段在索引表达式中的前后顺序将影响索引的结果。在索引表达式中的前后顺序将影响索引的结果。3.3 表的创建与使用表的创建与使用n多个字段建立索引多个字段建立索引注意注意例:例:索引表达式:索引表达式:“xdh+xb”,先按先按xdh字段字段的值的值排序,在排序,在“xdh”字段的值字段的值相同相同的情况下,的情况下,才按才按“xb”字段的值字段的值排序;排序;例:例:索引表达式:索引表达式:“xb+xdh”,先按先按“xb”字字段的值段的值排序,在排序,在“xb”字段的值字段的值相同相同的情况下,的情况下,才按才按“xdh”字段的值字段的值排序。排序。3.3 表的创建与使用表的创建
37、与使用如果索引表达式为算术表达式,则按照如果索引表达式为算术表达式,则按照表达式的运算结果进行排序。表达式的运算结果进行排序。思考:思考:KC表建立的索引表达式:表建立的索引表达式:“kss+xf”和和“STR(kss)+STR(xf)”的排序情况。有的排序情况。有何不同?何不同?3.3 表的创建与使用表的创建与使用不同类型字段构成一个表达式时,必须转换为同不同类型字段构成一个表达式时,必须转换为同一类型,通常转换为字符型。一类型,通常转换为字符型。例:例:xdh+STR(jbgz)先按先按“xdh”字段的值排序,在字段的值排序,在“xdh”字段的字段的值相同的情况下,才按值相同的情况下,才按
38、“jbgz”字段的值排序。字段的值排序。xb+DTOC(csrq,1)先按先按“xb”字段的值排序,在字段的值排序,在“xb”字段的值字段的值相同的情况下,才按相同的情况下,才按“csrq”字段的值排序。字段的值排序。3.3 表的创建与使用表的创建与使用n索引类型索引类型 主索引、候选索引、普通索引主索引、候选索引、普通索引、唯一索引、唯一索引3.3 表的创建与使用表的创建与使用主索引(主索引(Primary Indexes)每张表只能创建每张表只能创建一个一个,索引表达式的值不能重复。,索引表达式的值不能重复。只适用于数据库表的结构复合索引。只适用于数据库表的结构复合索引。候选索引(候选索引
39、(Candidate Indexes)索引表达式值不可重复。候选索引可用于数据库表索引表达式值不可重复。候选索引可用于数据库表和自由表,且一张表可以建立和自由表,且一张表可以建立多个多个候选索引。候选索引。3.3 表的创建与使用表的创建与使用普通索引(普通索引(Regular Indexes)索引表达式的值允许出现重复,一张表可以建立索引表达式的值允许出现重复,一张表可以建立多多 个个普通索引。普通索引。唯一索引(唯一索引(Unique Indexes)索引表达式的值可以重复,但在索引文件中重复的索引表达式的值可以重复,但在索引文件中重复的值(记录号)仅存储一次。一张表可以建立值(记录号)仅存
40、储一次。一张表可以建立多个多个唯唯一索引。一索引。3.3 表的创建与使用表的创建与使用n索引文件的种类索引文件的种类结构复合索引文件结构复合索引文件(.CDX)文件名与表文件名相同,在创建时系统自动给定,文件名与表文件名相同,在创建时系统自动给定,结构复合索引文件自动地与表同步打开、更新和关结构复合索引文件自动地与表同步打开、更新和关闭。一个文件可存放多个索引。闭。一个文件可存放多个索引。非结构复合索引非结构复合索引(.CDX)文件名与表名不同。不随着表的打开而自动打开,文件名与表名不同。不随着表的打开而自动打开,要用专门的命令打开。一个文件可存放多个索引。要用专门的命令打开。一个文件可存放多
41、个索引。独立索引文件独立索引文件(.IDX)文件名用户自定,不随着表的打开而打开。一个文文件名用户自定,不随着表的打开而打开。一个文件只存一种索引件只存一种索引,查找速度快,一般为临时索引文件查找速度快,一般为临时索引文件3.3 表的创建与使用表的创建与使用n在在“表设计器表设计器”中创建中创建n用命令创建用命令创建INDEX ON 索引表达式索引表达式 TAG 索引标识名索引标识名 FOR 条件表达式条件表达式 ASCENDING|DESCENDINGUNIQUE|CANDIDATE例:例:USE XS INDEX ON jg TAG jg UNIQUE INDEX ON zydh+DTOC
42、(csrq,1)TAG zydhcsrq INDEX ON xh TAG xh FOR xb=“男男”3、创建结构复合索引创建结构复合索引3.3 表的创建与使用表的创建与使用n在在“表设计器表设计器”中修改和删除索引。中修改和删除索引。n用用INDEX命令修改。命令修改。如果不修改索引标识如果不修改索引标识,可以再用,可以再用INDEX命令建立命令建立 同标识名的索引,把原索引覆盖了。同标识名的索引,把原索引覆盖了。n用用DELETE TAG命令删除索引命令删除索引nDELETE TAG 标识名标识名1,标识名标识名2 DELETE TAG xh DELETE TAG ALL 如果要删除的是主
43、索引或侯选索引,如果要删除的是主索引或侯选索引,且且SET SAFETY ON时,系统会发出警告。时,系统会发出警告。4、索引修改和删除索引修改和删除3.3 表的创建与使用表的创建与使用n主控索引:某一时刻对表正在起作用的索引。n设置主控索引在“数据工作期”中打开“工作区属性”对话框设置;USE 表文件名 ORDER TAG 标识名 USE XS ORDER XHSET ORDER TO索引标识名 IN 工作区号|表别名ASCENDING|DESCENDING SET ORDER TO XHSET ORDER TO 取消主控索引5、索引的使用索引的使用 3.3 表的创建与使用表的创建与使用n建
44、立索引的目的就是为了快速查找。建立索引的目的就是为了快速查找。n可以用可以用SEEK、SEEK()进行查找,进行查找,仅适用于对仅适用于对已建索引表的已建索引表的快速查找,查找首次出现的纪录快速查找,查找首次出现的纪录。nSEEK SEEK 索引表达式索引表达式 order order 索引名索引名 asceasce|descdesc n用用FOUND()FOUND()函数测试查找是否成功。函数测试查找是否成功。6、利用索引快速定位记录利用索引快速定位记录3.3 表的创建与使用表的创建与使用n例:例:USE xs ORDER xh SEEK “030506”?FOUND()SEEK()SEEK
45、()n例:例:USE xs ORDER xh SEEK (“030506”)?FOUNT()?RECNO()6、利用索引快速定位记录利用索引快速定位记录3.3 表的创建与使用表的创建与使用nSELECTSELECT(0|1|(0|1|表别名表别名)用来测试工作区号用来测试工作区号。?SELECT(0)SELECT(0)&注意与命令注意与命令SELECT 0 SELECT 0 不同。不同。?SELECT(1)?SELECT(1)?SELECT(SELECT(“xsxs”)七七、有关表操作的常用函数有关表操作的常用函数3.3 表的创建与使用表的创建与使用nUSEDUSED(工作区号工作区号|表别名
46、表别名)用于测试一张表的别名是否已使用于测试一张表的别名是否已使用,或在指定工作区中是否有表打开用,或在指定工作区中是否有表打开。?USED(“JS”)?USED(“JS”)?USED(2)?USED(2)nALIASALIAS(工作区号工作区号)用于返回当前或指定工作区中表的别名。用于返回当前或指定工作区中表的别名。?ALIAS()?ALIAS()?ALIAS(1)?ALIAS(1)七七、有关表操作的常用函数有关表操作的常用函数3.3 表的创建与使用表的创建与使用nFIELDFIELD(字段序号字段序号,工作区号工作区号|表别名表别名)用于返回已打开表用于返回已打开表的指定序号的字段名。的指
47、定序号的字段名。?FIELD(5,”XS”)?FIELD(5,”XS”)nFCOUNTFCOUNT(工作区号工作区号|表别名表别名)用于返回已打开表的字段个数。用于返回已打开表的字段个数。?FCOUNT()?FCOUNT()?FCOUNT(2)?FCOUNT(2)?FCOUNT(“XS”)?FCOUNT(“XS”)七七、有关表操作的常用函数有关表操作的常用函数3.3 表的创建与使用表的创建与使用nDELETEDELETE()()用于测试表的当前记录是否带删除标记。用于测试表的当前记录是否带删除标记。USE XSUSE XSLOCAT FOR XS=“030201”LOCAT FOR XS=“0
48、30201”?DELETE()?DELETE()七七、有关表操作的常用函数有关表操作的常用函数3.3 表的创建与使用表的创建与使用n表之间的关系表之间的关系n表之间的永久关系表之间的永久关系n参照完整性参照完整性nVFP参照完整性综述参照完整性综述3.4 永久关系与参照完整性永久关系与参照完整性一、表之间的关系一、表之间的关系n关系的种类关系的种类n分析并确定表之间的关系分析并确定表之间的关系3.4 永久关系与参照完整性永久关系与参照完整性1、关系的种类、关系的种类 n一对一关系(一对一关系(1:1)设有甲乙两张表,如果甲表的一个记设有甲乙两张表,如果甲表的一个记录在乙表中有且只有一个记录与之
49、对录在乙表中有且只有一个记录与之对应,则这两张表之间的关系为应,则这两张表之间的关系为“一对一对一关系一关系”。这种关系在实际应用中不常使用。在这种关系在实际应用中不常使用。在许多情况下,两张表的信息可以简单许多情况下,两张表的信息可以简单合并成为一张表。合并成为一张表。3.4 永久关系与参照完整性永久关系与参照完整性n一对多关系(一对多关系(1:n)设有甲乙两张表,如果甲表的任意一个记录在乙设有甲乙两张表,如果甲表的任意一个记录在乙表中都有几个记录与之对应,而乙表中的每个记表中都有几个记录与之对应,而乙表中的每个记录在甲表中仅有一个记录与之对应,则这两张表录在甲表中仅有一个记录与之对应,则这
50、两张表之间的关系为之间的关系为“一对多关系一对多关系”。甲表为甲表为“一表一表”(或(或“主表主表”、“父表父表”),乙),乙表为表为“多表多表”(或(或“子表子表”)。)。1:n3.4 永久关系与参照完整性永久关系与参照完整性n多对多关系(多对多关系(m:n)设有甲乙两张表,如果甲表的任意一个记录在乙设有甲乙两张表,如果甲表的任意一个记录在乙表中存在多个记录与之对应,而乙表中的每个记表中存在多个记录与之对应,而乙表中的每个记录在甲表中也存在多个记录与之对应,则这两张录在甲表中也存在多个记录与之对应,则这两张表之间的关系为表之间的关系为“多对多关系多对多关系”。在实际应用中,多对多关系不能直接