




已阅读5页,还剩109页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
新编Visual FoxPro 教程,江南大学太湖学院机电系计算机教研室 2011年2月,江苏省普通高校计算机等级考试指定教材,江南大学太湖学院机电系计算机教研室,第3章 数据库与表的创建和使用,3.1 数据库概述 3.2 数据库的创建、打开和使用 3.3 表的创建和使用 3.4 永久性关系与参照完整性 3.5有关数据库及其对象的常用函数,第3章 数据库与表的创建和使用,3.1 数据库概述,数据库是一个容器,是许多相关的数据库表及其关系的集合。 例如,一个教学管理信息系统中将涉及到教师、课程、任课、学生、成绩、系以及专业等实体,可分别用二维表来表示(如图所示)。 数据库中的表并不是彼此独立的,借助于一个公共的字段可以将两张表联系起来,这就建立了一种“关系”。,3.1 数据库概述,一、数据库设计的步骤: 1、确定建立数据库的目的,进行数据的需求分析 2、确定需要的各种表 3、确定表的字段 4、确定表之间的关系 5、设计的优化,二、 VFP数据库的组成,数据库表 视图 连接 存储过程,3.1 数据库概述,二、 VFP数据库的组成 1、数据库表 数据库表与数据库之间的相关性是通过它们之间的双向链接实现的。 前链 保存在数据库文件中 存储有关表文件的路径和文件名信息 指向库表 后链 存放在一张表的表头中 存储有关库文件的路径和文件信息 指向拥有该表的数据库,3.1 数据库概述,二、 VFP数据库的组成 2、视图(View) 视图是一种“虚表”类型,其数据来源于一张或多张表。 视图兼有表和查询的特点。 视图可以分为本地视图和远程视图。详细内容将在下一章介绍。,3.1 数据库概述,二、 VFP数据库的组成 3、连接(Connection) 连接是保存在数据库中的一个定义,它制定了数据源的名称。 ODBC:开放式数据互连 连接远程数据源的方法 直接访问在机器上注册的ODBC数据源 用“连接设计器”设计自定义连接,3.1 数据库概述,二、 VFP数据库的组成 4、存储过程 存储过程是保存在数据库中的过程代码的地方 保存用户自定义函数和过程。 保存参照完整性代码。 打开数据库时,它们便被加载到内存中。 创建、修改或移去存储过程的方法: “项目管理器” “数据库设计器” MODIFY PROCEDURE,3.1 数据库概述,三、 VFP数据字典概述,数据字典是指存储在数据库中用于描述所管理的表和对象的数据,即关于数据的数据。这些数据称为元数据。 每个数据库都带有一个数据库字典。 数据库表可以享受到数据字典的各种功能。 使用数据字典,可以创建字段级规则和记录级规则,保证主关键字字段内容的唯一性。 如果不用数据字典,也可通过编程实现上述功能。,3.1 数据库概述,数据字典可创建、指定的内容 表中字段的标题、注释、默认值、输入掩码和显示格式,以及表单中使用的默认控件类等。 表的主索引关键字。 数据库表之间的永久性关系。 长表名和表注释。 字段级和记录级有效性规则。 存储过程。 插入、更新和删除事件的触发器。,3.1 数据库概述,一、数据库的创建 每创建一个新的数据库都将生成三个文件: 数据库文件(.dbc) 关联的数据库备注文件(.dct) 关联的数据库索引文件(.dcx) 数据库文件并不在物理上包含任何附属对象,仅存储指向表文件的路径指针。,3.2 数据库的创建、打开和使用,一、 数据库的创建 创建数据库可以采用下述方法之一 。 使用“项目管理器” 使用“文件”菜单中的“新建”命令 使用命令 CREATE DATABASE 数据库|?,3.2 数据库的创建、打开和使用,二、 数据库的使用,1、打开数据库 2、设置当前数据库 3、检查数据库的有效性 4、关闭数据库 5、删除数据库,3.2 数据库的创建、打开和使用,1、打开数据库 使用菜单 “文件”/“打开”/指定数据库文件名 使用Open Database命令 格式:Open Database Databasename Exclusive | Shared Noupdate 说明: Exclusive:指定以独占方式打开数据库。 Shared:指定以共享方式打开数据库。 Noupdate:以只读方式打开数据库。,3.2 数据库的创建、打开和使用,1、打开数据库 数据库可以同时打开多个 OPEN DATABASE db1 OPEN DATABASE db2 OPEN DATABASE db3,3.2 数据库的创建、打开和使用,2、设置当前数据库 所有打开的数据库中,只有一个是当前数据库。 在打开数据库时,最后一个打开的数据库是当前数据库。 将其他数据库设置为当前数据库 “常用”工具栏的数据库下拉列表 SET DATABASE TO 数据库名,3.2 数据库的创建、打开和使用,3、检查数据库的有效性 如果数据库和表文件的双向链接被破坏后,可重新链接,更新相对路径信息以反映文件的新位置。 重建链接 用VALID DATABASE RECOVER命令 打开表,系统显示“打开”对话框进行重新定位,只能处理以独占方式打开的当前数据库,3.2 数据库的创建、打开和使用,4、关闭数据库 从“项目管理器”窗口中,选定要关闭的数据库并选择“关闭”按钮。,3.2 数据库的创建、打开和使用,4、关闭数据库 使用命令 CLOSE DATABASE:关闭当前数据库 CLOSE DATABASE ALL:关闭所有数据库 CLOSE ALL:关闭所有数据库、表、索引及设计器 关闭已打开的数据库jxsj SET DATABASE TO jxsj CLOSE DATABASE,3.2 数据库的创建、打开和使用,5、删除数据库 删除数据库意味着将删除存储在该数据库中的一切信息。如:存储过程、视图、表之间的关系、数据库表的扩展属性等。 使用“项目管理器” 删除一个数据库的方法 在“项目管理器”中选择待删除的数据库名; 单击“项目管理器”窗口的“移去”按钮,在接下去的提示中选择删除。,3.2 数据库的创建、打开和使用,表:是指存储在磁盘文件中的二维表,一张二维 表保存为13个表文件。 ( .DBF/.FPT/.CDX)(表、表备注、复合索引) 在VFP中表分为两种类型: 属于某一数据库的表称为“数据库表” ; 不属于任何数据库而独立存在的表称为“自由表”。,3.3 表的创建与使用,字段(Field):表中的一列,规定了数据的特征。每张表最多可以有255个字段。 记录(Record):表的一行,多个字段的集合。 注意:表文件名除必须遵守Windows系统对文件名的约定外,不可用AJ中的单个字母作文件名。,3.3 表的创建与使用,一、表结构概述,1、表结构(Structure):存储表记录的一个公共结构,主要指表的字段及其属性。 2、字段名:用以标识一个字段的名字。字段名一般要与其对应的实体的属性名相同或相近,以便于记忆。字段名可以是以字母开头的字母数字串,也可以是汉字。 3、字段的数据类型:说明字段是什么类型的数据。 不同数据类型的表示和运算的方法不一样。 见下表:,3.3 表的创建与使用,表字段的基本数据类型,3.3 表的创建与使用,3、字段宽度: 指该字段所能容纳数据的最大字节数。 货币型、日期型、日期时间型和双精度型为8字节。 整型、备注型、和通用型为4字节。 逻辑型为1字节。,3.3 表的创建与使用,3、字段宽度: 对于包含备注型字段或通用型字段的表,系统会自动生成和管理一个相应的备注文件,用于存储备注内容。备注型的文件主名与表文件的主名相同,其扩展名为.FPT。 在表的备注字段中,仅存储引用信息,指向备注文件中的备注内容。同样,对于通用型字段,字段中也仅保存引用信息,指向所管理的数据对象。,3.3 表的创建与使用,4、小数位数: 数值型、浮点型、双精度型的字段需指定小数据位。 字段宽度=整数部分宽度+小数点1位+小数位宽度 小数位至少比整个字段宽度小1。,3.3 表的创建与使用,5、空值(NULL) 用来指示一个字段有或没有数据的标识。NULL不是一种数据类型,它用来指示数据存在或不存在的一种属性。,3.3 表的创建与使用,1、用“表设计器”创建表结构,二、 表结构创建,3.3 表的创建与使用,2、用CREATE TABLE-SQL命令创建表结构 基本语法格式: CREATE TABLE|DBF 表文件名(字段名1 字段类型(字段宽度,小数位数),字段名2 字段类型(字段宽度,小数位数)) CREATE TABLE xs (xh c(6),xm c(8),xb c(2),csrq D NULL),二、 表结构创建,命令字,表文件名,字段名,类型和宽度,使用NULL值,对于一些宽度固定的字段类型,宽度不用标出。,注意:当设置表的字段可以接受NULL值时,该表最多只能有254个字段。,3.3 表的创建与使用,1、用表设计器修改表的结构 在“项目管理器”中使用“修改”按钮 MODIFY STRUCTURE命令,三、表结构的修改,3.3 表的创建与使用,2、ALTER TABLE-SQL命令修改表的结构 基本语法格式: ALTER TABLE 表文件名 ADD | ALTER COLUMN字段名 字段类型 (字段宽度,小数位数) ALTER TABLE 表文件名 DROP COLUMN 字段名 ALTER TABLE 表文件名RENAME COLUMN 字段名1 TO 字段名2,三、表结构的修改,3.3 表的创建与使用,ADD COLUMN:添加字段。 ALTER TABLE xs ADD COLUMN bjmc C(12) RENAME COLUMN:字段改名。 ALTER TABLE xs RENAME COLUMN bjmc TO bj DROP COLUMN:删除字段。 ALTER TABLE xs DROP COLUMN bj ALTER COLUMN:修改字段。 ALTER TABLE xs ALTER COLUMN bjmc C(15) 注意:修改字段类型和宽度时,数据会溢出,3.3 表的创建与使用,四、 表的打开与关闭,1、 工作区 工作区用以标识一个打开表的区域。 每个工作区有一个编号,称为工作区号。其编号范围为132767(前10个工作区号也可以用字母AJ表示)。 在某一时刻,一个工作区中只能打开一个表。若要打开新表,则先前打开的表自动关闭。 一个表可以在多个工作区中被多次打开。,3.3 表的创建与使用,工作区中表的别名 表的别名是对工作区中打开的表的一个临时标识。 定义表的别名 打开表时指定别名,用USE命令。 USE xs ALIAS student 如果在打开表时没有指定别名,则系统默认用表文件名作为别名。 SELECT 2 USE js,3.3 表的创建与使用,当前工作区 VFP正在使用的工作区称为当前工作区。使用SELECT命令选择某工作区号为当前工作区号。 命令格式: SELECT 工作区号 | 表别名 SELECT 1 SELECT js 用函数SELECT(0)(0 可省略)测试当前工作区号打开当前最小的工作区。 用ALIAS( )函数测试当前指定工作区中表的别名。 ALIAS(2) 状态栏中可显示当前工作区中表的别名。,3.3 表的创建与使用,选用工作区 在“数据工作期”窗口中设置。 使用命令: SELECT 工作区号 | 表别名 SELECT 2 SELECT JS 操作非当前工作区中的表 将所在工作区设置为当前工作区 在命令中用IN指定工作区 格式: IN 工作区|别名 USE CJ IN 3 SELECT 0:选择未使用最小编号的工作区,内存,3.3 表的创建与使用,四、 表的打开与关闭 2、 “数据工作期”窗口 数据工作期是当前数据动态工作环境的一种表示。 VFP系统启动后,系统自动生成一个数据工作期。称为 “默认”数据工作期。 每一个表单、表单集或报表在运行过程中,为了管理自己所用的数据,可以形成自己的数据工作期。 每一个数据工作期包含有自己的一组工作期,这些工作区含有打开的表、表索引和关系。,3.3 表的创建与使用,四、 表的打开与关闭 2、 “数据工作期”窗口 通过菜单命令“窗口/数据工作期”或常用工具栏上的“数据工作期”按钮打开。,3.3 表的创建与使用,四、 表的打开与关闭 3、 表的打开 界面方式: 1.用菜单 “文件打开”,打开表在当前工作区中。 2. 在 “数据工作期”窗口中打开,则指定的表在当前未被使用的最小工作区中打开,且当前工作区不变。 3. 在“项目管理器”窗口中打开,表在当前未被使用的最小工作区中打开,且该工作区为当前工作区。,注意三种界面方式打开的工作区不同。,3.3 表的创建与使用,命令方式: USE 表名 IN 工作区号|表别名 AGAIN ALIAS 表别名 NOUPDATE,3.3 表的创建与使用,四、 表的打开与关闭 3、 表的打开,USE xs USE js ALIAS jiaoshi IN 4 USE cj IN 0 NOUPDATE USE xs AGAIN IN 5 USE xs AGAIN IN 15,3.3 表的创建与使用,四、 表的打开与关闭 3、 表的打开,例: CLOSE TABLES ALL USE xs ? SELECT(0) ? ALIAS(1) SELECT 2 USE cj ? SELECT(0) USE js ALIAS teacher IN 6 ? SELECT(0) ? SELECT(“teacher” ) ? ALIAS(6 ) USE xs IN 0 AGAIN NOUPDATE ? SELECT( ) ? SELECT(“C”) ? ALIAS(3),在打开表时如果未利用ALIAS子句指定别名,则别名与表名相同,但如果一张表同时在多个工作区中打开且均未指定别名,则在第一次打开的工作区中,别名与表相同,其他工作区中用: AJ以及W11W32767,USE xs AGAIN IN 15 ? ALIAS(15) ? SELECT( ),3.3 表的创建与使用,四、 表的打开与关闭 4、表的关闭 “数据工作期”窗口中关闭 关闭指定工作区中的表:USE IN 工作区号|别名,3.3 表的创建与使用,四、 表的打开与关闭 4、表的关闭 CLOSE TABLES ALL USE xs USE cj IN 2 USE &关闭当前工作区中的表 USE IN 2 &关闭2号工作区中的表 关闭所有工作区中的表: CLOSE ALL、CLOSE DATABASE、 CLOSE TABLES、QUIT,3.3 表的创建与使用,四、 表的打开与关闭 5、表的独占与共享,独占打开:一张表只能被一个用户打开。 共享打开:一张表可被多个用户同时打开。 USE xs SHARED:以共享方式打开表XS。 USE JS EXCLUSIVE:以独占方式打开表JS。 设定默认打开方式: 通过系统选项对话框来设置 SET EXCLUSIVE ON|OFF,一张表同时被打开多次时,只以第一次打开的方式为准。uj,3.3 表的创建与使用,五、记录的处理 1、记录的输入,记录的追加 (1)立即输入记录 (2)“浏览”状态下追加记录 (3)用INSERT-SQL命令追加记录 命令格式: INSERT INTO 表名 (字段1,字段2); VALUES (表达式1,表达式2) INSERT INTO xs (XH,XM,XB,XIMING); VALUE (“01706101”,”曹晓燕“,”女”,”人口”),追加到表的记录,总在表的最后一条。,3.3 表的创建与使用,(4) 用APPEND命令追加记录 命令格式: APPEND BLANK IN 工作区号|表别名 APPEND BLANK & 向表中追加一条空记录 用APPEND FROM命令从其他表或文件中导入数据,命令格式: APPEND FROM 文件名 DELIMITED| XLS 例:CLOSE TABLES ALL USE XS1 SELECT 2 USE XS2 APPEND FROM XS1,USE XS APPEND FROM XS XLS,DELIMITED:追加文本文件 XLS:追加Excel文件 缺省:追加表文件,3.3 表的创建与使用,(5)备注型字段和通用型字段的数据输入 通用型字段显示“gen”(表示无内容) 或“Gen”(表示有内容); 备注型字段输入数据的操作步骤: 将光标移动到相应的通用型字段,按下ctrl+home组合键获双击该字段,在出现的编辑窗口后利用菜单命令 “编辑” “插入对象”插入其内容,结束时关闭编辑窗口。,3.3 表的创建与使用,(5)备注型字段和通用型字段的数据输入 当备注字段显示“memo”(表示无内容) 或“Memo”(表示有内容); 备注型字段输入数据的操作步骤: 将光标移动到相应的备注型字段,按下ctrl+home组合键获双击该字段,在出现的编辑窗口中输入备注,结束时关闭编辑窗口。,3.3 表的创建与使用,五、记录的处理 2、表的浏览与定制,浏览窗口 BROWSE命令 命令格式: BROWSE FIELDS 字段列表 FOR 条件表达式 FREEZE 字段名 NOAPPEND NODELETENOMODIFYTITLE 标题 FOR:四种类型的条件,3.3 表的创建与使用,五、记录的处理 2、表的浏览与定制,(1)字符型 浏览教师表中“男”教师的信息。 USE js Browse for xb=“男”,3.3 表的创建与使用,(2)数值型 浏览教师表中工龄超过5年的教师信息。 USE js Browse for gl5 (3)日期型 浏览教师表中1971年以后出生的教师信息。 USE js Browse for csrqctod(“1971/12/31”) 或 Browse for year(csrq)1971 (4)逻辑型 浏览课程表中所有必修课的课程信息。 USE kc Browse for bxk,注意括号中字符串的表示法。,3.3 表的创建与使用,浏览课程表中所有非必修课的课程信息。 USE kc Browse for .not. bxk 用FIELDS 子句指定在浏览窗口中出现的字段。 例:浏览XS表中所有男同学的xh,xm,xb信息,并指定不修改记录,浏览窗口的标题为“男学生”。,USE XS BROWSE FIELDS xh,xm,xb FOR xb=男 ; NOMODIFY TITLE “男学生”,3.3 表的创建与使用,五、记录的处理 3、记录的定位,记录的指针:每个记录都按顺序有个“记录号” 系统在打开一个表文件后将自动生成三个控制标志: 记录开始标志、记录指针标志、记录结束标志。,记录开始标志,记录指针,记录结束标志,当前记录,BOF( ),RECNO( ),EOF( ),3.3 表的创建与使用,记录指针是VFP系统内部的一个指示器,在表中指向记录。每当打开一个表文件时,指针总是指向第1条记录。 测试当前记录用函数RECNO( )。其最小值为1,最大值为RECCOUNT( )+1, RECCOUNT( ) 是表记录总数。 打开表时记录指针情况: 表中无记录: BOF( )=.T. EOF( )=.T. RECNO( )=1 表中有记录: BOF( )=.F. EOF( )=.F. RECNO( )=1,3.3 表的创建与使用,记录的定位 (非当前工作区用:IN) 记录指针的绝对定位: 把指针移动到指定的位置。 GO/GOTO n:当n大于记录总数时将拒绝移动。 GO TOP &记录指针移动到第一条记录 GO BOTTOM &记录指针移动到最后一条记录 GOTO 6 &记录指针移动到记录号为6的记录上 记录指针的相对定位: 把指针从当前位置开始,相对于当前记录向前或向后移动若干条记录。 SKIP n:n0向文件尾方向;n0向文件头方向。 SKIP 2 &记录指针下移2条记录(当前的记录号被改变) SKIP-2 &记录指针上移2条记录(当前的记录号被改变),3.3 表的创建与使用,记录的条件定位:按照一定的条件自动地在整张表(或某个指定范围)中查找符合该条件的记录。如果找到符合该条件的记录,则把指针定位到该记录上,否则,指针将定位到整张表(或表的指定范围)的未尾。 LOCATE 范围 FOR 条件表达式 LOCATE FOR xm= “王一平 ” &记录指针指向到姓名为“王一平”的记录或表的结尾 通过界面操作方式定位 当表处于浏览状态时,记录定位可以利用菜单命令“表/转到记录/”进行,也可以直接在浏览窗口中通过鼠标操作或键盘上的光标移动键操作。,3.3 表的创建与使用,“记录定位”对话框一些子项的含义 范围 ALL:全部记录 Next n:从当前记录开始的N个记录 Record n:指定的第n个记录 Rest:从当前记录及其后的所有记录 条件 FOR:在整个表中对所有满足条件的记录操作 注意:若要继续定位用:continue,3.3 表的创建与使用,例:,Use xs ? BOF( ) ? EOF( ) ? RECNO( ) Go 3 ? RECNO( ) SKIP 4 ? RECNO( ),Go 20 ? BOF( ) ? EOF( ) ? RECNO( ),SKIP-1 ? BOF( ) ? RECNO( ) SKIP-1,SKIP ? EOF( ) ? RECNO( ) SKIP,已知XS表中的总记录数为20。,SKIP-20 ? BOF( ) ? RECNO( ),出现系统提示已到文件尾,出现系统提示已到文件头,? reccount( ),3.3 表的创建与使用,一个表只要不是只读方式打开,就可以对其记录进行编辑和修改。 对少量的记录直接在浏览窗口中修改。 批量记录的修改,五、记录的处理 4、 记录的修改,3.3 表的创建与使用,使用“表”菜单中的“替换字段”命令项 REPLACE命令 REPLACE 字段名1 WITH 表达式1 ADDITIVE , 字段名2 WITH 表达式2 ADDITIVE 范围 FOR 条件表达式,五、记录的处理 4、 记录的修改,3.3 表的创建与使用,例:将gzb表中职称为“教授”的所有教师的基本工资加500。 USE gzb REPLACE jbgz WITH JBGZ+500; FOR ZC=“教授” 注:此命令无范围和条件时仅修改当前记录,3.3 表的创建与使用,UPDATE-SQL命令 UPDATE 表名 SET 字段1=表达式1,字段2=表达式2 WHERE条件表达式 例:将gzb表中所有工龄满30年(假设不考虑月日)的教师的基本工资加300。 UPDATE gzb SET JBGZ=JBGZ+300; WHERE YEAR(DATE()-YEAR(gzrq)29,用SQL命令时,不需要先用USE命令打开表。,3.3 表的创建与使用,删除记录分两步 做删除标记 彻底删除带标记的记录,五、记录的处理 5、 记录的删除,3.3 表的创建与使用,界面方式删除 对少量的记录直接在浏览窗口中删除 在某一范围内删除一组符合特定条件的记录 “表”菜单中的“删除记录”命令项 “表”“恢复记录” “表”“彻底删除”,五、记录的处理 5、 记录的删除,3.3 表的创建与使用,用命令方式删除 DELETE命令(加注删除标记) DELETE 范围 FOR 条件表达式IN 工作区|别名 例:为js表中所有年龄超过60岁的教师的记录加注删除标记。 USE JS DELETE FOR YEAR(DATE()-YEAR(csrq)60 注:此命令无范围和条件时仅修改当前记录 DELETE-SQL(加注删除标记) DELETE FROM 表名 WHERE 条件表达式 DELETE FROM JS WHERE ; (DATE()-csrq)/36560,3.3 表的创建与使用,恢复删除: RECALL 范围 FOR 条件表达式 RECALL &恢复当前记录 RECALL ALL &恢复当前所有记录 RECALL ALL FOR XB=“男” &恢复所有性别为 “男”的记录 彻底删除: PACK &删除有删除标记的记录 CLOSE TABLES ALL USE xs DELETE FOR SUBSTR(XH,1,2)=“04” PACK,3.3 表的创建与使用,删除所有记录: ZAP &不管记录是否有删除标记,表中所有的记录都删除,只留下表结构。 使用DELETE( )函数可测试当前记录是否有删除标记,该函数无参数。 对带有删除标记的记录的访问 SET DELETE ON|OFF ON:不允许访问有删除标记的记录 OFF:(系统默认值)允许访问标有删除标记的记录。 USE XS DELETE NEXT 3 SET DELETE ON BROWSE ? RECCOUNT(),已知XS表中的记录数为10,3.3 表的创建与使用,利用COPY TO命令可以将(在当前工作区中已打开)中的数据复制到其他表文件或其他类型的文件中。 COPY TO 文件名 FIELDS 字段列表 范围 FOR 条件表达式TYPE SDF | XLS |DELIMITED WITH 字符 | WITH BLANK |WITH TAB | WITH CHARACTER 字符 ,五、记录的处理 6、数据的复制,3.3 表的创建与使用,例:CLOSE TABLES ALL USE xs COPY TO XS01 FOR XB=“女” COPY TO XS01 FLELDS xh,xm SDF COPY TO XS01 XLS,五、记录的处理 6、数据的复制,3.3 表的创建与使用,利用COUNT、SUM、AVERAGE命令可以对表数据进行统计。 COUNT 范围FOR 条件表达式TO 内存变量名 SUM数值表达式 范围FOR条件表达式TO内存变量名 AVER数值表达式 范围FOR条件表达式TO内存变量名,五、记录的处理 7、 数据的统计,3.3 表的创建与使用,例: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、 数据的统计,指从表中选出满足指定条件的记录,不满足条件的记录则被“隐藏”。 界面方式:在“工作区属性”对话框中“数据过滤器”文本框中输入条件。,五、记录的处理 8 、筛选记录,3.3 表的创建与使用,命令方式:SET FILTER TO 条件表达式 USE xs SET FILTER TO xb=“女” 取消筛选:SET FILTER TO,SET FILTER TO 命令设置的过滤器不会对SELECT-SQL、DELETE-SQL和UPDATE-SQL命令起作用。,3.3 表的创建与使用,五、记录的处理 8 、筛选记录,筛选字段是选取表的部分列。 “工作区属性”对话框中打开“字段筛选器” 命令: SET FIELDS TO 字段列表:指定可访问字段名称 CLOSE TABLES ALL USE xs SET FIELDS TO xh,xm,xb SET FIELDS TO ALL : 用于列出所有的字段,筛选字段,3.3 表的创建与使用,六、 表的索引,1、 记录的顺序 物理顺序: 表中记录的存储顺序。 按记录输入的时间顺序存放。 逻辑顺序: 记录的处理顺序。 对记录按某个(些)字段的值进行排序。,3.3 表的创建与使用,索引的功能 根据“索引表达式”的值进行记录的逻辑排序。索引 并不改变表中记录的物理顺序。 索引机制 建立一个逻辑顺序号与原表物理顺序记录号的对照 表,并把对照表保存到一个文件中。 索引文件 对照表存放的文件。一个索引文件中可存放该表的 多个索引。,3.3 表的创建与使用,索引标识(TAG) 又叫索引名,标记一个索引的名称。 索引关键字(Index Key) 是建立索引的依据,通常是一个字段或多个字段组成的表达式。 例 系名表(xim.dbf)输入时的物理顺序; 以xdh为索引关键字,按升序建立索引,索引文件的情况。,2、索引概述,3.3 表的创建与使用,系名表,索引文件,索引表,3.3 表的创建与使用,多个字段建立索引 注意 不能基于备注型字段和通用型字段建立索引。 如果索引表达式为字符型表达式,则各个字段在索引表达式中的前后顺序将影响索引的结果。,3.3 表的创建与使用,多个字段建立索引 注意 例:索引表达式:“xdh+xb”,先按xdh字段的值排序,在“xdh”字段的值相同的情况下,才按“xb”字段的值排序; 例:索引表达式:“xb+xdh”,先按“xb”字段的值排序,在“xb”字段的值相同的情况下,才按“xdh”字段的值排序。,3.3 表的创建与使用,如果索引表达式为算术表达式,则按照表达式的运算结果进行排序。 思考: KC表建立的索引表达式:“kss+xf” 和“STR(kss)+STR(xf)”的排序情况。有何不同?,3.3 表的创建与使用,不同类型字段构成一个表达式时,必须转换为同一类型,通常转换为字符型。 例:xdh+STR(jbgz) 先按“xdh”字段的值排序,在“xdh”字段的值相同的情况下,才按“jbgz”字段的值排序。 xb+DTOC(csrq,1) 先按“xb”字段的值排序,在“xb”字段的值相同的情况下,才按“csrq”字段的值排序。,3.3 表的创建与使用,索引类型 主索引、候选索引、普通索引 、唯一索引,3.3 表的创建与使用,主索引(Primary Indexes) 每张表只能创建一个,索引表达式的值不能重复。 只适用于数据库表的结构复合索引。 候选索引(Candidate Indexes) 索引表达式值不可重复。候选索引可用于数据库表 和自由表,且一张表可以建立多个候选索引。,3.3 表的创建与使用,普通索引(Regular Indexes) 索引表达式的值允许出现重复,一张表可以建立多 个普通索引。 唯一索引(Unique Indexes) 索引表达式的值可以重复,但在索引文件中重复的值(记录号)仅存储一次。一张表可以建立多个唯一索引。,3.3 表的创建与使用,索引文件的种类 结构复合索引文件(.CDX) 文件名与表文件名相同,在创建时系统自动给定,结构复合索引文件自动地与表同步打开、更新和关闭。一个文件可存放多个索引。 非结构复合索引(.CDX) 文件名与表名不同。不随着表的打开而自动打开,要用专门的命令打开。一个文件可存放多个索引。 独立索引文件(.IDX) 文件名用户自定,不随着表的打开而打开。一个文件只存一种索引,查找速度快,一般为临时索引文件,3.3 表的创建与使用,在“表设计器”中创建 用命令创建 INDEX ON 索引表达式 TAG 索引标识名 FOR 条件表达式 ASCENDING|DESCENDING UNIQUE|CANDIDATE 例:USE XS INDEX ON jg TAG jg UNIQUE INDEX ON zydh+DTOC(csrq,1) TAG zydhcsrq INDEX ON xh TAG xh FOR xb=“男”,3、 创建结构复合索引,3.3 表的创建与使用,在“表设计器”中修改和删除索引。 用INDEX命令修改。 如果不修改索引标识 ,可以再用INDEX命令建立 同标识名的索引,把原索引覆盖了。 用DELETE TAG命令删除索引 DELETE TAG 标识名1 ,标识名2 DELETE TAG xh DELETE TAG ALL,如果要删除的是主索引或侯选索引, 且SET SAFETY ON时,系统会发出警告。,4、 索引修改和删除,3.3 表的创建与使用,主控索引:某一时刻对表正在起作用的索引。 设置主控索引 在“数据工作期”中打开“工作区属性”对话框设置; USE 表文件名 ORDER TAG 标识名 USE XS ORDER XH SET ORDER TO索引标识名 IN 工作区号| 表别名ASCENDING | DESCENDING SET ORDER TO XH SET ORDER TO 取消主控索引,5、索引的使用,3.3 表的创建与使用,建立索引的目的就是为了快速查找。 可以用SEEK、SEEK( )进行查找, 仅适用于对已建索引表的快速查找,查找首次出现的纪录。 SEEK 索引表达式 order 索引名 asce|desc 用FOUND()函数测试查找是否成功。,6、利用索引快速定位记录,3.3 表的创建与使用,例: USE xs ORDER xh SEEK “030506” ?FOUND() SEEK() 例:USE xs ORDER xh SEEK (“030506”) ?FOUNT() ?RECNO(),6、利用索引快速定位记录,3.3 表的创建与使用,SELECT(0|1|表别名) 用来测试工作区号。 ? SELECT(0) & 注意与命令SELECT 0 不同。 ? SELECT(1) ? SELECT(“xs”),七、 有关表操作的常用函数,3.3 表的创建与使用,USED(工作区号|表别名) 用于测试一张表的别名是否已使用,或在指定工作区中是否有表打开。 ? USED(“JS”) ? USED(2) ALIAS(工作区号) 用于返回当前或指定工作区中表的别名。 ? ALIAS() ? ALIAS(1),七、 有关表操作的常用函数,3.3 表的创建与使用,FIELD(字段序号,工作区号|表别名) 用于返回已打开表的指定序号的字段名。 ? FIELD(5,”XS”) FCOUNT(工作区号|表别名) 用于返回已打开表的字段个数。 ? FCOUNT() ? FCOUNT(2) ? FCOUNT(“XS”),七、 有关表操作的常用函数,3.3 表的创建与使用,DELETE() 用于测试表的当前记录是否带删除标记。 USE XS LOCAT FOR XS=“030201” ? DELETE(),七、 有关表操作的常用函数,3.3 表的创建与使用,表之间的关系 表之间的永久关系 参照完整性 VFP参照完整性综述,3.4 永久关系与参照完整性,一、表之间的关系 关系的种类 分析并确定表之间的关系,3.4 永久关系与参照完整性,1、关系的种类 一对一关系(1:1) 设有甲乙两张表,如果甲表的一个记录在乙表中有且只有一个记录与之对应,则这两张表之间的关系为“一对一关系”。 这种关系在实际应
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肺真菌考试题及答案
- 太空趣味考试题及答案
- 中药事业编考试试题及答案
- 数字农业面试题及答案
- 青州幼儿面试题及答案
- 企业钳工试题及答案
- 2025年广州协和学校教师招聘考试笔试试题(含答案)
- 2025年福建福州文教职业中专学校招聘考试笔试试题(含答案)
- 2025年教师编制考试义务教育法教师法知识考试题及答案
- 医疗器械岗前培训考试试题及答案
- 矿山用电安全知识培训课件
- 《落实主体责任》课件
- 收到美因基因检测报告痛风
- 2016届年第二届天津市大学生化学竞赛理论知识个人赛试卷
- 通勤车租赁投标方案(技术标)
- 一人一档安全管理资料
- 东峰煤矿煤层资源储量估算分析
- 2022年临沧市市级单位遴选(选调)考试真题
- 评估量表模板
- 河北省医疗保险诊疗项目目录
- 三相异步电动机正反转说课课件
评论
0/150
提交评论