




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库管理系统Visual FoxPro 6 数据库开发教程 山东大学管理学院 2002教材翁正科,Visual FoxPro6.0数据库系统开发教程,清华大学出版社,20001第一章 数据库系统概述本章重点:数据管理技术的发展数据库系统数据模型关系规范化21 人工管理阶段 (20世纪50年代中期以前)没有操作系统,没有专门管理数据的软件,用户既要定义数据的逻辑结构,还要设计数据的物理结构。面向应用组织数据,每一个应用程序对应于一组专有数据。数据不能共享,冗余度高。数据既没有物理独立性也没有逻辑独立性。42 文件管理阶段 (50年代后期至60年代中期)软件方面有了操作系统,其中包含管理数据的文
2、件管理系统。应用程序通过文件管理系统存取文件中的数据。面向应用组织数据(文件)。数据有了一定程度的共享(文件共享),冗余度仍较大(不同的文件中存在重复数据).数据和程序仍缺乏独立性53 数据库系统阶段 (20世纪60年代后期至今)有了专门管理数据的软件(数据库管理系统, DBMS),应用程序通过DBMS存取数据。面向数据组织数据。数据冗余度小,具有高度的共享性。数据和程序享有高度的独立性,既有物理独立性又有逻辑独立性。64 数据库技术的发展史1969年,美国IBM公司研制的数据库管理系统IMS作为最早的商品化软件问世,它采用的是层次结构。1969年,美国CODASYL数据库任务组提出了DBTG
3、报告,确定并建立了数据库的许多概念、方法和技术。它采用的是网状结构。1970年,美国IBM公司SanJose研究所的EFCodd发表了题为大型共享数据库数据的关系模型的论文,奠定了关系数据库的理论基础奖。71 数据库 数据库是指按一定的方式组织的、能为多个用户所共享的、与应用程序独立的数据集合。 数据库中数据的组织遵循相同的体系结构(指数据库的总体框架),这就是美国ANSI/SPARC数据库管理系统研制组提出的三级模式结构:外模式概念模式内模式92)概念模式概念模式是对数据库全局逻辑结构的描述。 一个数据库只能有一个概念模式,却可以有多个外模式。概念模式也称为DBA视图,即数据库管理员看到的数
4、据库。概念模式介于外模式与内模式之间,它独立于数据的物理存贮与具体的应用程序。114)二级映象概念模式/外模式映象:当概念模式发生变化时,通过概念模式/外模式映象变换保持外模式不变,应用程序也就不变,这就是数据库的逻辑独立性。概念模式/内模式映象: 当数据库的内模式变化时,通过概念模式/内模式映象变换保持概念模式不变。概念模式不变,外模式也就不变, 从而无需修改应用程序,这就是数据库的物理独立性。13数据库三级模式结构142 数据库管理系统 (DMBS) Database Management SystemDBMS是建立在操作系统的基础上,负责数据库的建立、使用和维护的系统软件。DBMS对数据
5、库进行统一的管理和控制。用户使用的各种数据库命令和应用程序的执行, 都要通过DBMS。DBMS还承担数据库的维护工作, 保证数据库的安全性和完整性151)数据库的定义DBMS提供数据描述语言DDL (Data Description Language)及其翻译程序负责定义数据库的结构(三级模式)。162)数据库的操纵DBMS提供数据操纵语言DML ( Data Manipulation Language) 实现对数据库的检索、插入,删除和修改等基本操作。DML分为两 类:宿主式语言和自含式语言。17自含式语言这类DML可以独立使用,它一般由一组数据操作命令和一些设计程序用的控制命令组成。现在的
6、DBMS基本上都提供自含式DML。193)数据库的控制执行对数据的安全性和完整性检查实施并发控制,这是高度集成、高度共享的数据库可靠运行的保障。201.3 数据模型 现实世界 信息世界 信息模型 数据世界 数据模型 221 信息模型1) 几个概念实体 表示客观存在并可相互区别的具体事物。属性 一个事物具有的区别于其他事物的特征。例如,学生的学号、姓名、年龄、性别23(1) 一对一联系(1:1) 实体集A中的每一个实体,实体集B中至多有一个实体与之联系,反之亦然。 (2) 一对多联系(l:n) 实体集A中的每一个实体,实体集B中有一个以上的实体与之联系,实体集B中的每一个实体,实体集A中至多有一
7、个实体与之联系。1 信息模型25(3) 多对多联系(m:n) 实体集A中的每一个实体,实体集B中有一个以上的实体与之联系,反之,实体 集B中的每个实体,实体集A中也有一以上的实体与之联系,则称实体集A与实体集B具有多对多联系。1 信息模型262) E一R模型 信息模型最常用的是实体一联系模型 (简称ER模型),有关建模原则如下:长方形代表实体集,框内写上实体名。椭圆表示属性,在椭圆内写上属性名,用线段连接实体及相关属性。菱形表示联系,框内写上联系名,用线段连接相关实体集,在线段旁标上联系类型272 数据模型数据结构数据操作完整性约束完整的数据模型包括三部分:29 层次模型 网状模型 关系模型实
8、际数据库管理系统支持的数据模型主要有三种:301)关系模型用二维表来表示实体 (记录) 及其联系由于二维表在数学上称为关系,因此这种模型称为关系模型。 定义31关系模式对关系的描述称之为关系模式。关系模式就是一个空的二维表,代表一个实体型(记录型)。可以用R(A1、A2、A3、)来描述 。一个关系模型就是由一组关系模式组成。 关系模式与关系学号姓名年级课程性质学时分数32 关系当二维表填满数据后就构成了一个完整的关系。学号姓名年级课程性质学时分数9901张三1999数学必修4959901张三1999英语选修6929902李四1999英语选修6909902李四1999数学必修49633表格的列代
9、表属性(数据项)表的每一行代表一个实体(元组,记录)整个表格代表一个实体集表中不允许有重复行行可互换列可互换 关系的性质34关系模型概念单一,结构清晰,实体及联系均由关系来表示。关系模型具有严格的数学理论为基础。因此,关系模型自提出后得到迅速发展,目前通用的DBMS几乎都是关系型的。关系模型的优点352)关系操作 关系模型提供高度非过程化关系语言,不对DBMS的语言给出具体的语法要求。 关系操作用两种方式来表示:关系代数和关系演算。 关系代数常用的几种操作: 选择 (Select) 投影 (Project) 连接 (Join) 除 (Divide) 并 (Union) 交 (Intersect
10、ion) 差 (Difference)363)关系完整性 关系模型的三类完整性: 实体完整性 参照完整性 用户定义的完整性 实体完整性和参照完整性是关系模型必须满足的完整性 ,由关系系统自动支持。37实体完整性属性A是基本关系R的关键字的组成成分(主属性),则属性A不能取空值例如,有一表示学生的关系: R(学号,姓名,性别,年龄) “学号”为关键字,则“学号”不能取空值38参照完整性若基本关系R中含有与另一个基本关系S的关键字Ks 对应的属性组F(F称为R的外部关键字,Foreign key),则对于R中每个元组在F上的值必须为:(1) 取空值(2) 或者等于S中某个元组关键字值(F的值)39
11、例如,两个基本关系: 学生:STUD(SNO,SNAME,DNO) SNO为STUD的关键字 院系:DEPT(DNO,DNAME) DNO为DEPT的关键字则STUD中每个元组在DNO上的值允许有两种可能: (1) 取空值 (2) 等于DEPT中某个元组中的DNO值。401.4 关系规范化规范化的目的设计好的关系关系模式的优劣标准按照满足要求的不同程度将关系模式划分为不同的范式 (Normal Form)411. 几个概念侯选关键字若关系R有多个属性组可为关键字,则称它们为侯选关键字。主关键字在某一时刻指定某一侯选关键字为现行关键字,则称其为主关键字。主属性能作侯选关键字的属性为主属性。42依
12、赖:属性间的相互依赖关系属性A和属性B是关系R的属性集合,当属性A确定后,属性B就唯一确定,则称B依赖于A ,记为 A B。1) 部分依赖 Y是X的真子集,当X Z, 且Y Z时, 称Z部分依赖于X。2) 传递依赖 当X (Y,Z), 且Y X,而Y Z 时, 称Z传递依赖于X。432. 第一范式(1NF)如果一个关系模式R中的所有属性都是一个不可分割的数据项,则称R为第一范式,记为 R l NF。也就是说,对应于R的二维表不能存在大表套小表,大栏套小栏的情况。1NF是关系规范化的最基本要求,任何关系模式都必须是第一范式。44学生课程分数学号姓名年级课程名性质学时9901张三1999数学必修4
13、959901张三1999英语选修6929902李四1999英语选修6909902李四1999数学必修496453. 第二范式(2NF)首先看一个关系关系R(SNO, SNA, CNA, CRE)是第一范式, (SNO, CNA) 为关键字,有部分依赖(SNO, CNA) (SNA, CRE) SNO SNASNOSNACNACRE9901张三数学959901张三英语929902李四英语9046定义如果关系模式R属于第一范式,并且所有非关键字属性都完全依赖于关键字,则称R为第二范式,记为R 2NF。规范化: 分解关系,消除部分依赖 R(SNO, SNA, CNA, CRE) R(SNO, SNA
14、) R(SNO, CNA, CRE) 3. 第二范式(2NF)474. 第三范式(3NF)首先看一个关系关系R(NAME, TITLE, SALARY)是第二范式, NAME 为关键字 ,有传递依赖。 NAME (TITLE, SALARY ) TITLE SALARYNAMETITLESALARY张三讲师1000李四讲师1000王五教授200048定义如果一个关系模式R 2NF,并且不存在非关键字属性传递依赖于关键字的情况,则称R为第三范式, 记为R 3NF。 规范化分解关系,消除传递依赖 R(NAME, TITLE, SALARY) R(NAME, TITLE) R(TITLE, SALA
15、RY)49第二章 VFP 6.0 系统概述VFP6.0数据库开发教程 1. 主流关系型DBMS 简介适用于中大型系统DB2 (IBM)ORACLE (ORACLE )SYBASE (SYBASE)MS-SQL SERVER (Microsoft) 适用于中小型系统Visual FoxPro (Microsoft) ACCESS (Microsoft)512. Xbase系列DBMS的演变dBASE家族20世纪70年代末,美国Ashton-Tate公司研制的dBASE I 开始应用于8位微机。1984和1985年,该公司又推出dBASE和dBASE ,应用于16位微机市场。以后Borland 公
16、司收购Ashton-Tate公司,推出dBASE后续产品,但逐步退出市场。FoxBASE家族1987年,美国FOX软件公司公布了与dBASE兼容的FoxBASE十,取代dBASE522. Xbase系列DBMS的演变FoxPro1989年,FOX软件公司开发了FoxBASE十的后继产品 FoxPro。但其早期版本(1.0与2.0)仍是在DOS平台上运行的。1992年,Microsoft公司收购了FOX公司,推出FoxPro for Windows(2.5)。Visual FoxPro 1995年, Microsoft公司将可视化程序设计(visual programming)引入FoxPro,
17、推出Visual FoxPro 3.0。1998年,推出Visual FoxPro 6.0。533. Visual FoxPro 6.0简介强大的查询与管理功能拥有近500条命令,200余种函数。采用Rushmore快速查询技术,极大地提高了查询的效率。提供“项目管理器”,集中管理用户开发项目中的数据、文档、源代码和类库等资源。引人数据库表的新概念VFP引入“数据库表”(database table)和“自由表“(free table)的概念,支持数据库三级模式结构。543. Visual FoxPro 6.0简介扩大了对SQL语言的支持VFP6.0 支持8种SQL命令,加强了VFP语言的功能
18、,并可存取远程SQL服务器的数据。大量使用可视化的界面操作工具 VFP6.0提供向导(wizard)、设计器(designer)、生成器(builder)等3类界面操作工具,帮助用户以简单的操作快速完成各种查询和设计任务.支持面向对象的程序设计VFP除继续使用传统的面向过程的程序设计外,还支持面向对象的程序设计。553. Visual FoxPro 6.0简介支持OLE技术 通过OLE(对象链接与嵌入, Object Linking and Embedding,简称OLE) ,VFP可与Word、Excel等微软其它应用软件共享数据。支持网络应用支持客户/服务器结构,既可访问本地计算机,也支持
19、对服务器的浏览。 VFP支持用户通过本地或远程视图访问来自本地、远程或多个数据库表的异种数据。 在多用户环境中,VFP还允许建立事务处理程序来控制对数据的共享,包括支 持用户共享数据,或限制部分用户访问某些数据等。564. Visual FoxPro 6.0 的启动与操作VFP的启动界面574. Visual FoxPro 6.0 的启动与操作VFP的操作两种操作方式: 交互方式窗口命令菜单与按钮 程序方式58第三章Visual FoxPro语言基础数据库管理系统 1. 常量 常量就是在工作过程中其值不发生变化的量。常量有四种类型: (1) 数值型常量(Numeric,简称N型) 数值型常量又
20、称常数,是由阿拉伯数字、正负号和小数点组成的可以进行算术运算的数。可用科学计数法表示。3.1 常量、变量、数据类型60(2) 字符型常量(Character,简称C型)字符型常量又称字符串,是由ASCII字符和汉字组成的一串字符。 VFP规定字符型常量最多包含254个字符(一个汉字占2个英文字符位置)。字符串须用定界符。定界符有三种:单引号()、双引号(“ ”)和方括号(、)。当字符串本身含有其中一种符号时,选用另一种符号作为定界符。比如:Fox、“123”、程序设计 3.1 常量、变量、数据类型61(3) 日期与日期时间型(Date,简称D型) 日期型常量必须用花括号括起来,例如06/30/
21、00,06/30/99,空白的日期可表示为或/。系统默认为美国格式06/30/99 代表1999年6月30日。可用SET DATE 命令设定。ANSI yy.mm.dd BRITISH dd/mm/yyMDY mm/dd/yy DMY dd/mm/yyYMD yy/mm/dd3.1 常量、变量、数据类型62可用命令 SET CENTURY ON|OFF 设置日期中是否带世纪,系统默认为OFF。 执行命令 SET CENTURY ON则 09/30/2000正确,代表2000年6月30日。日期时间型常量的写法为 9/15/99 8:45,空白的日期时间可表示为/:3.1 常量、变量、数据类型63
22、 严格的日期格式: yyyy-mm-dd,hh:mm:ssa|p符号表明该日期是严格格式. 其中的-号可用/代替VFP60默认使用严格的日期格式,可用 SET STRICTDATE TO 0|1 命令设置:1 :严格日期格式0 :普通日期格式3.1 常量、变量、数据类型64(4) 逻辑型常量(Logical,简称L型) 逻辑型常量的具体值只可能有两种:“真”和“假”VFP规定:逻辑“真” 用.T.或.Y.、.t.、.y.表示,但系统一律转换为.T.存储。逻辑“假” 用.F.或.N.、.f.、.n.表示,但系统一律转换为.F.存储。3.1 常量、变量、数据类型65(5) 货币型常量 货币型常量以
23、$符号开头,并四舍五入保留4位小数。例如货币型常量$100.12345,代表: 100.12353.1 常量、变量、数据类型66 2. 变量在命令操作和程序运行过程中其值允许变化的量称变量。 变量包括3种:内存变量简单变量数组字段变量系统变量对象变量 3.1 常量、变量、数据类型671) 内存变量 内存变量的三个属性:变量名、类型和值。 变量名以字母(也可汉字)或下划线开头,由字母、数字、下划线组成,至多128个字符的字符串。不可与系统保留字同名。变量的类型内存变量没有固定的类型,用户把什么样的常量数据存入其中,它就具有什么类型。所以,内存变量也有数值(N)型、字符(C)型、逻辑(L)型、日期
24、(D)型等类型。3.1 常量、变量、数据类型68赋值把数据存入内存变量的操作叫“赋值”,用赋值命令实现。该命令有两种格式:格式1:STORE TO 格式2:=格式1可一次给多个变量赋值,变量用逗号分隔格式2一次只能给一个变量赋值实例:s=VFPSTORE 2*4 TO n1, n2, n3date=09/30/00vl=.T.3.1 常量、变量、数据类型69输出变量格式1: ? 格式2: ? 格式1换行输出值格式2同一行输出值实例:?s? n1, n2, n3?date?vl3.1 常量、变量、数据类型702) 数组 数组是按一定顺序排列的一组内存变量,数组中的各个变量称为数组元素。数组必须先
25、定义后使用。数组的定义命令格式:DIMENSION | DECLARE (m1,n1) ,(m2,n2) 功能:定义一维或二维数组,及其下标的上界。说明:a. 系统规定各下标的下界为1。3.1 常量、变量、数据类型71 b. VFP最多可定义65000个数组,每个数 组最多可包含65000个元素。c. 实例 DIMENSION x(3), a(2,3) 数组x下标的上界为3,该数组有3个数 组元素: x(l),x(2), x(3) 数组a具有2行3列6个元素,分别为: a(1,1),a(1,2),a(1,3), a(2,1),a(2,2), a(2,3)3.1 常量、变量、数据类型72 数组的
26、赋值 数组定义后各数组元素的初值为.F. 数组的元素可取不同类型,且可改变 对数组的赋值同对普通变量的赋值 可为单个数组元素赋值 x(1)=3 a(1,1)=“fox” a(1,3)=.f. 只指定数组名为各元素赋相同值 x=1.20二维数组可按一维数组来存取 a(5)=“山大” &相当于 a(2,2)= “山大”3.1 常量、变量、数据类型73 3) 内存变量的显示命令格式: LIST | DISPLAY MEMORY LIKE TO PRINTERPROMPT TO FILE功能:显示当前已定义的内存变量名、作用范围、类型和值。说明:a. LIKE子句显示与通配符匹配的内存变 量,通配符:
27、? 代表单个任意字符 * 代表一串任意字符。3.1 常量、变量、数据类型74 b. TO PRINTER 将显示内容输出到打印机 c. TO FILE 将显示内容存人文件 实例 LIST MEMORY LIKE ? n1 Pub N (800000000) n2 Pub N (800000000) n3 Pub N (800000000)3.1 常量、变量、数据类型75 4) 内存变量的清除命令格式:RELEASE | ALL LIKE | EXCEPT功能: 从内存清除指定的内存变量。例RELEASE a,bRELEASE ALLRELEASE ALL LIKE a*RELEASE ALL
28、EXCEPT ?b*3.1 常量、变量、数据类型76 用特定的运算符把各种类型数据连接起来,这就是表达式。 根据表达式的值和运算种类的不同,表达式分为五种: 数值型 关系型 字符型 逻辑型 日期型3.2 表达式771) 数值型表达式 数值型表达式又称为算术表达式,由算术运算符把数值型运算量连接而成。运算结果为数值型。算术运算符(按运算优先级从低到高): 乘方 * 或 高 乘 * 除 / 求余 % 加 + 减 - 低3.2 表达式78 VFP算术表达式与数学中算术式书写规则的不同。用括弧改变运算次序 例如: 乘号要用*,不能用“ ”或“ ”号 数学式3ab 3*a*b 数学式xy x/y3.2
29、表达式792) 字符型表达式 字符型表达式又称字符串连接,由字符连接运算符将字符型运算量连接而成。运算结果仍为字符型。 直接连接 + 移空连接 将前一个字符串尾部的空格移到连接后的字符串尾部3.2 表达式80 例如 STORE “Data ” TO a b=“Base” ? a+b Data Base ? a-b DataBase 注意:DataBase尾部有一空格。3.2 表达式813) 日期型表达式两个日期型数据只能作减法运算,结果为两个日期相差的天数,为数值型数据。 SET STRI TO 0 ? 12/31/99-12/31/98 365日期型数据可和数值型数据作减法或加法运算,表示增
30、加或减少的天数,结果为日期型数据。 ? 06/30/98-6 06/24/983.2 表达式82两个日期时间型数据只能作减法运算,结果为两个日期相差的秒数,为数值型数据。SET STRI TO 1? 1998/09/01 12:01-1998/0901 12:00 60一个日期时间型数据可和一个数值型数据作减法或加法运算,其中的数值型数据代表增加或减少的秒数,结果为日期时间型数据。 SET STRI TO 0 ? 09/01/1998 12:00 am+60 09/01/1998 12:01:00 pm3.2 表达式834) 关系型表达式关系运算符,又称比较运算符:等于 = 不等于 或# 或!
31、=小于 小于或等于 大于或等于 =字符串精确相等 =子字符串包含 $ :左串是右串子串为真关系表达式的结果为逻辑 “真”(.T.),或逻辑 “假”(.F.)3.2 表达式84数值的比较数值型数据按照数值的大小进行比较。例如: a=4 b=5 STORE a=b TO x ? a, b, x 4 5 .F.3.2 表达式85字符串的比较单个英文字母、数字字符和标点符号等的大小顺序按照其ASCII码值排列。 汉字字符按其内码顺序确定大小(常用国标一级汉字按拼音顺序排列)。字符串比较时从左边第一个字符开始逐个比较,最先发现的不一样的字符彼此是什么关系,相应的字符串之间就是什么关系。3.2 表达式86
32、说明:当用“=”号比较两个字符型数据是否相等时,结果与SET EXACT 的状态有关: SET EXACT OFF时,只要右边那个字符串与左边字符串的首部子串相等即可;SET EXACT ON时,左右两个字符串必须完全一样才认为相等。用=号比较两个字符型数据是否相等时,结果与SET EXACT 的状态无关,左右两个字符串必须完全一样才认为相等。3.2 表达式87实例: a=FRANCIS b=FRIEND STORE a=物理 .T. .T. .F. ?AB=A,A=AB,AB=A,AB=AB.T. .F. .F. .T. SET EXACT ON ? “AB=A,A=AB,AB=A,AB=A
33、B.F. .F. .F. .T.3.2 表达式88日期的比较 两个日期型数据比较时按照日期的先后进行比较。例如:SET STRI to 0 d1=02/16/91 d2=03/25/88 ? d1d2, d2d1 .T. .F.3.2 表达式895). 逻辑型表达式由逻辑运算符将关系表达式或逻辑型数据连接而成,其运算结果仍为逻辑值。逻辑运算符逻辑非 NOT逻辑与 AND 逻辑或 OR注:FoxBASE 要求运算符两侧加园点: .OR. 、.AND. 、 .NOT.。3.2 表达式90abNOT aNOT ba AND bA OR b.T.T.F.F.T.T.F.T.T.F.F.T.T.F.F.
34、T.F.T.F.F.T.T.F.F.逻辑运算符的运算规则3.2 表达式91 说明一般而言,逻辑表达式描述一个复合条件“年龄在25岁至35岁之间”,不能写成:25=年龄=25 AND 年龄=35“年龄为19、20岁的男同学”应表示为:(年龄=19 OR 年龄=20) AND 性别=男3.2 表达式926) 表达式小结一个复杂的表达式进行运算处理时,首先分别计算各个算术表达式、字符表达式之值,然后进行关系(比较)运算,最后进行逻辑运算,从而得出一个具体的运算结果。可以用圆括弧改变运算顺序。圆括弧还可以嵌套,最内层括弧的运算最优先。书写表达式时一定要注意圆括弧必须成对使用,而且建议凡是容易混淆的地方
35、尽量采用圆括弧。3.2 表达式933.3 函数 函数是VFP的又一种运算成份,其格式为: ( )每一个函数有一个函数值。函数有数值、字符、日期、逻辑四种类型。函数象其它常量、变量一样,作为表达式一个数据元素参与进一步的处理运算。函数的自变量个数、类型和书写顺序都有规定,使用时必须按规定书写94(一) 数学运算函数自变量和得到的函数值均为数值型。 ABS(X):取绝对值函数(2) INT(X):取整函数函数值为自变量X的整数部分。 ? INT(12.6), INT(-12.6) 12 -12(3) MOD(X,Y):求模函数函数值为X除以Y所得的余数, 符号与Y相同 ? MOD(12, 5),
36、MOD(12, -5), MOD(-12,-5) 2 -3 -23.3 函数95(4) ROUND(X,Y): 四舍五入函数如果自变量Y为正整数,则函数值为对X按保留Y位小数进行四舍五入处理的结果如果Y为0,则把X四舍五入为整数如果Y为负数,则把X四舍五入到小数点以左若干位, 但舍去的位填上0,以保留原数的精度。例: ? ROUND(15.426,2),ROUND(3724.5,-2) 15.430 3700.03.3 函数96(5) SQRT(X):算术平方根函数 自变量X为正数,函数值为X的算术平方根。(6) EXP(X):指数函数 函数值为以E为底,X为指数的值。(7) LOG(X):自
37、然对数函数 自变量X为正数,函数值为X的自然对数。(8) MAX(X,Y):取最大值函数 函数值为X、Y中较大者。(9) MIN(X,Y):取最小值函数 函数值为X、Y中较小者。3.3 函数97(二) 字符处理函数此类函数用于处理字符型数据,在以下说明中如无特别指定,自变量X 均为字符型表达式。 LEN(X): 求字符串长度函数 函数值为字符表达式X的长度。 a=abcd ? LEN(A), LEN(A), 4 1 USE sb ? LEN(编号), LEN(编号) 5 4 3.3 函数98(2) LEFT(X, N):左截子串函数 函数值为对X截取其左边的N个字符而形成的子串 str=Fox
38、PRO ? LEFT(str,3) Fox(3) RIGHT(X,N): 右截子串函数 函数值为对X截取其右边的N个字符而形成的子串。str=FoxPRO ? RIGHT(str,3) PRO3.3 函数99(4) SUBSTR(X,N,M) 任意截取子串函数函数值为X的子字符串,即对X这个字符串从第N个字符开始截取M个字符而形成的新字符串。若使用时省略M,则取到X的最后一个字符。自变量N,M 自动取整。 str=中文VFP数据库系统 ? SUBSTR(str,5,3) VFP ? SUBSTR(str,8,6) 数据库3.3 函数100(5) AT(X,Y): 查子串位置函数 变量X,Y均为
39、字符型表达式。 在Y中查找X,函数值为X在Y中第一次出现的起始位置(一个正整数) 。 如果在Y中找不到X,则函数值为0。 str=中华人民共和国 ? AT(“人民”, str), AT(“中国”, str) 5 03.3 函数101(6) STUFF(X,N,M,Y): 字符串替换函数从X的第N个字符开始,删去M个字符,再把Y插入到这个位置,形成新字符串自变量X为被替换的字符串,Y为替换字符串,N为正整数,M为非负整数。 s1=ABCDEFG s2=1234 s3=“” (注:S3为空字符,其长度为0) ? STUFF(s1,3,2,s2),STUFF(s1,3,2,s3) AB1234EFG
40、 ABEFG ? STUFF(S1,3,0,S2) AB1234CDEFG3.3 函数102(7) TRIM(X)或 RTRIM(X) :删去尾部空格函数 函数值为把X尾部的空格去掉后得到的字符串。 s=Fox ? s+“PRO Fox PRO ? TRIM(S)+“PRO FoxPRO3.3 函数103(8) LTRIM(X): 删去左端空格函数 函数值为把X前部的空格去掉后得到的字符串. s1=Fox s2= BASE ? S1+S2 Fox PRO ? S1+LTRIM(S2) FoxPRO(9) ALLTRIM(X): 删去前后空格函数3.3 函数104(10) UPPER(X): 小
41、写字母转换为大写字母(11) LOWER(X): 大写字母转换为小写字母 这两个转换函数的函数值仍为字符串。 s=“Visual FoxPRO ? UPPER(s),LOWER(s) VISUAL FOXPRO visual foxpro3.3 函数105(12) SPACE(N): 生成空格字符串函数 函数值为由N个空格组成的字符串。 s = SPACE(5) ? S , LEN(s) 5(13) REPLICATE(X,N): 字符串重复函数 函数值为把X重复N次所形成的新字符串. ? REPLICATE(Very ,3)+Good! Very Very Very Good!3.3 函数1
42、06(14)TRANSFORM(X,Y):格式化输出函数自变量X可以是字符型或数值型表达式,Y是一个字符串(格式说明)。函数值为按Y格式输出的X值,为字符型。 s1=Fox n=23.456 ? TRANSFORM(S1,!),TRAN(N,$.$) FOX $23.563.3 函数107(15)字符替换函数CHRTRAN(,)在中查找与中字符相等的字符,并用中对应位置上的字符替换 ? CHRTRAN(“foxpro”,”fp”,”FP”) FoxPro3.3 函数108(16)字符串替换函数STRTRAN(,,,)在中查找,并用替换? CHRTRAN(“foxpro Programe”,”r
43、o”,”AB”) foxpAB PABgrame 3.3 函数109(三) 日期处理函数(1) CTOD(X):字符串转换为日期 自变量X为字符型表达式,其值应具有“月/日/年”的形式。 函数值则为表示同一日期的日期型数据。 dt=CTOD(“10/01/00”)(2) DATE():当前系统日期函数 本函数无自变量,但DATE后面一定要写上一对括弧以表示这是一个函数。函数值为系统的当前日期。3.3 函数110(3) YEAR(X): 取日期中的年份 自变量X为日期型表达式, 函数值为X中的年份数字(数值型)。 ? YEAR(10/01/00) 20000(4) DAY(X): 日期函数 自变
44、量X为日期型表达式。 函数值为X中的日期数 字(数值型)。 ? DAY (10/01/00) 253.3 函数111(5) MONTH(X): 月份函数 自变量X为日期型表达式。 函数值为X中的月份数字(数值型)。 ? MONTH(CTOD(10/10/95) 10(6) CMONTH(X): 月份名称函数 与MONTH(X)类似,但函数值为月份的英文名称。 ? CMONTH(CTOD(10/10/95) October3.3 函数112(7) DOW(X): 星期函数自变量X为日期型表达式。 函数值为X所指的那一天是一周中的第几天(数值型,星期日为第1天,星期一为第2天,)。 ? DOW(C
45、TOD(07/04/96) 5(8) CDOW(X): 星期名称函数 与DOW(X)类似,但函数值为星期几的英文名称. ? CDOW(CTOD(07/04/96) Thursday3.3 函数113(9) 日期转换为字符串函数格式:DTOC(X,1)自变量X为日期型表达式。 1为可选项,加1转换为“年月日”格式不加1转换为“月日年”格式。 ? DTOC(DATE(), DTOC(DATE(),1) 10/01/00 20001001格式:DTOS(X):同 DTOC(X,1)3.3 函数114( 四) 字符型与数值型数据之间转换函数(1) STR(X , N , M ): 数值转换为字符串函数
46、 将数值型表达式X转换为字符串。 N和M均为正整数且N=(M+2), 分别代表转换后字符串的总长度和小数部分的长度。 n=1234.567 ? STR(n,8,3)1234.567 如果NM比X的整数部分位数还少,则函数自动减少小数位数而保留整数部分。 ? STR(n,6,2) 1234.53.3 函数115如果N比X的整数部分位数还少,则函数值以一串*号表示“溢出”。如果不指定M值,则意味着只有整数部分。 ? STR(n,8) 1234 如果N,M均不指定,则按缺省规定转换为长度为10,且无小数部分的字符串。如果指定的总长度N小于表达式的长度,则尽管指定了小数位数M,转换时也是首先保留整数部
47、分。3.3 函数116(2) VAL(X): 字符串转为数值函数自变量X为数字形式(即只包含数字、小数点或、号)的字符串。 函数值为与该数字字符串对应的数值型数据。 ? VAL(1234.56)+200 1434.56转换中遇非数字字符终止转换 ? VAL(12.56AS789) 12.56 3.3 函数117(3) CHR(X): ASCII码转换成字符函数自变量X为0255之间的整数。函数值为以X为ASCII码(十进制)的字符。 ? CHR(7)+CHR(7) (机器发出响铃) ? CHR(65)+CHR(49) A1(4) ASC(X): 字符转为ASCII码函数函数值为X的第一个字符的
48、ASCII码。 ? ASC(FoxBASE) 703.3 函数118(五) 测试函数(1) FILE(X): 测试磁盘文件存在函数自变量X为某磁盘文件的文件名(包括扩展名,可包括路径),为字符型。 函数值为逻辑型,该文件存在,其值为.T.,否则为.F.。 ? FILE(SB.DBF) .T. (当前盘上有SB.DBF文件)3.3 函数119(2) TYPE(X): 测试表达式数据类型自变量为一字符型表达式,其内容是被测试的表达式。也就是必须把被测表达式写在一对定界符之内。函数值为该被测试表达式的值的类型(用一个大写字母表示:N, C, L, D, M, G或U表示,(其中U表示未定义) 。 n
49、um=24 ? TYPE(“num-20),TYPE(“num32) N L3.3 函数120 ? TYPE(.T.), TYPE(N) L C ? TYPE(DATE(), TYPE(“char”) D U USE sb ? TYPE(“编号”), TYPE(“备注”), TYPE(“价格”) C M N3.3 函数121(3) ISALPHA(X): 测试X的首字符是否为字母自变量X为字符型表达式。如果X的值的第一个字符是一个英文字母,则函数值为.T.,否则为.F.。(4) ISLOWER(X): 测试X的首字符是否为小写字母自变量X为字符型表达式。 如果X的值的第一个字符是一个小写字母,
50、 则函数值为.T.,否则为.F.。3.3 函数122(5) ISUPPER(X): 测试X的首字符是否为大写字母自变量X为字符型表达式。如果X的值的第一个字符是一个大写字母,则函数值为.T.,否则为.F.。 str=Fox ? ISAL(str), ISLO(str), ISUP(str) .T. .F. .T.3.3 函数123(6) IIF(X, A, B):条件判断函数自变量X为一逻辑型表达式,A与B为两个任意类型的表达式。当X为逻辑“真”时,函数值取A值;当X为逻辑假时,函数值取B值。 XB1=.T. XB2=.F. ? IIF(XB1,男,女), IIF(XB2,男,女) 男 女3.
51、3 函数124(7) BETWEEN(,):在与之间,函数值为.T. ,否则为.F. 。 ? BETWEEN(“f”,“a”,”h”) .T.3.3 函数125(8) EMPTY():为空,函数值为.T. ,否则为.F. 。 ? EMPTY(“”) .T.3.3 函数126(9) TYPE(“”):测试的类型 。 ? TYPE(“.T.”), TYPE(“123”), TYPE(”china”) L N C 3.3 函数127(10) INLIST(“, , ”)测试是否在 后面的表达式中。 country=“China” ? INLIST(country,”Canada”,”USA”,”Ch
52、ina”) .T. 3.3 函数128(六) 系统环境测试函数此类函数测试系统工作环境,多数没有自变量。(1) 测试当前系统时间函数 格式:TIME() 函数值为“时:分:秒”的形式表示的当前 系统时间 (字符型)。例如: ? 系统时间为+TIME() 系统时间为14:28:473.3 函数129(2) DISKSPACE(): 测试磁盘空间 函数值为当前工作磁盘上可用的剩余空间, 单位为字节数(数值型)。(3) ROW(): 测试光标行坐标(4) COL(): 测试光标列坐标 函数值为光标当前所在的行、列号(数值型)。(5) PROW(): 测试打印头当前行坐标(6) PCOL(): 测试打
53、印头当前列坐标 函数值为打印头当前所在的行、列号(数值型)。3.3 函数130(七) 其他函数宏代换函数: & .用变量内容替换宏代换函数与变量内容连接 a=“12+34” ? &a3.3 函数1312. 求值函数: EVALUATE()与&函数功能类似,但功能更强 ?EVAL(“12+34”) 463.3 函数1323. GETFILE(,)打开对话框,返回选择文件名4. LOCFILE(,)打开对话框,返回选择文件名5. PUTFILE(提示,,)打开“另存为”对话框,返回选择文件名3.3 函数1336. CURDIR()返回当前默认目录7. GETDIR()选择目录3.3 函数1348.
54、 MESSAGEBOX(信息文本,对话类型,对话框标题)建立操作对话框,返回按钮值P66。函数值: 1 确定 2 取消 3 放弃 4 重试 5 忽略 6 是 7 否3.3 函数135(八) 工作区状态测试函数VFP提供一组函数用于测试工作区的状况,自变量一般指工作区号,如果在使用时不指定自变量,则默认为当前工作区。(1) SELECT(): 测试工作区号函数 本函数无自变量,函数值为当前工作区号。(2) ALIAS(N): 测试工作区别名函数指定的工作区中如果有已打开的数据库文件,则函数值为该库文件的名称或别名;如果该区中尚无库文件被打开,则函数值为空字符串。3.3 函数136(3) 测试库文
55、件名函数格式:DBF(N)函数值为第N个工作区中打开的库文件名。(4) 测试记录指针是否在库文件首格式:BOF(N)函数值为逻辑型,测试第N个工作区中的记录指针是否指向BOF(文件首),若是,函数值为.T.,否则为.F.。3.3 函数137(5) 测试记录指针是否在库文件尾格式:EOF(N)函数值为逻辑型,测试第N个工作区中的记录指针是否指向EOF(文件尾)。若是,函数值为.T.,否则为.F.。(6) 测试记录个数函数格式:RECCOUNT(N)函数值为数值型,测试第N个工作区中库文件的记录个数。3.3 函数138(7) 测试记录号函数格式:RECNO(N)函数值为指定工作区中的记录指针指向的
56、那条记录的记录号。(8) 测试记录长度函数格式:RECSIZE(N)函数值为指定工作区中所使用的库文件的记录长度(字节数)。3.3 函数139(9) 测试字段数目函数格式:FCOUNT(N)函数值为指定工作区中所使用的库文件的字段数目。(10) FIELD(N,M) 字段名称自变量N为正整数,代表字段序号;M为工作区号。函数值为字符型,其值为指定工作区中所使用的库文件的第M个字段的名称。如果该工作区中并无打开的库文件,或M值超出字段个数,则函数值为空串。3.3 函数140(11) 测试记录删除标记函数格式:DELETED(N)函数值为逻辑型,当第N个工作区中库文件的当前记录带有删除标记时,其值
57、为.T.,否则为.F.。(12) 测试记录查找是否成功格式:FOUND(N)函数值为逻辑型,测试在指定的工作区中对库文件执行的记录查找操作是否成功。若查找到了满足条件的记录,其值为.T.,否则为.F.。3.3 函数141(13) 测试库文件修改日期函数格式:LUPDATE()函数值为当前工作区中打开的库文件的最后一次修改日期(日期型)。(14) 测试索引文件名称函数格式:NDX(N)函数值为当前工作区中打开的第N个索引文件的文件名称,N代表打开索引文件时的序号。3.3 函数142第四章结构化程序设计数据库管理系统 引言 VFP语言的程序设计符合结构化程序设计思想,包含三种基本结构:顺序结构选择
58、结构循环结构1444.1 顺序结构程序设计一、 程序文件的建立与执行 1. 程序文件的建立与修改方式: (1) 命令格式: MODIFY COMMAND (2) 菜单方式:功能: 打开文本编辑窗口,用来建立或修改程序文件。145说明:程序文件由VFP命令组成。由用户指定,缺省的扩展名为.PRG。按CTRL十W键将文件存盘并且退出编辑。 按Esc键放弃修改或编辑。可用文件菜单的“保存”、“另存为”、“还原”命令来关闭编辑窗口。4.1 顺序结构程序设计1462. 程序的运行 命令格式: DO 功能:执行由表示的程序。说明:DO命令默认运行.PRG程序。要运行其它程序,中须包括扩展名。VFP程序可以
59、通过编译获得目标程序,VFP只运行目标程序。.PRG程序的目标程序的扩展名为.FXP; 查询程序的目标程序的扩展名为QPX。4.1 顺序结构程序设计1473. 程序书写规则 命令分行 (1) 程序中每条命令都以回车键结尾。 (2) 一行只能写一条命令,若命令需分行 书写, 应行尾键入续行符;。 命令注释 (1) 注释行以符号“*”开头。 (2) 命令后以符号“&”开头加注释。 (3)例如: * 本程序用于修改表的指定记录 SET DATE USA &日期格式置为MM-DD-YY4.1 顺序结构程序设计148二、程序文件中的专用命令 1、程序结束的专用命令 (1) RETURN 结束程序执行,返
60、回到调用它的上级程序。若无上级程序则返回到命令窗口。 (2) CANCEL 终止程序运行,返回到命令窗口。 (3) QUIT 退出VFP系统。4.1 顺序结构程序设计149 2、输入输出专用命令(1) WAIT命令 命令格式: WAIT TO WINDOW AT, NOWAIT TIMEOUT 功能:暂停程序的运行,直到用户输入一个字符。4.1 顺序结构程序设计150 说明: (l) TO 用来保存键人的字符。 (2) 定义提示信息。 (3) WINDOW使提示信息显示在屏幕右上角, 位置也可由AT选项来指定。 (5) 使用NOWAIT选项,系统将不等用户 按键, 立即往下执行。 (6) NO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度绿色环保产业多人合伙投资合同
- 二零二五年度智能屏安装与物联网技术应用合同
- 二零二五年度桥梁维修施工人员培训及派遣合同
- 二零二五医疗纠纷赔偿协议书:医疗过错赔偿调解与司法鉴定服务合同
- 二零二五年度旅游项目贷款共同还款协议
- 二零二五年度宠物寄养押金转让与宠物看护服务协议
- 内蒙古赤峰市2025届高三下学期3·20模拟考试生物试卷(含答案)
- 二零二五年度展台搭建与展览展示合同
- 2025年度高速公路服务区道闸系统安装与综合服务协议
- 图书馆创新服务模式2024年试题及答案
- 2024-2024年上海市高考英语试题及答案
- 初中数学北师大九年级上册(2023年修订) 反比例函数教案反比例函数-k的几何意义
- GB∕T 29076-2021 航天产品质量问题归零实施要求
- 大型机械撤场记录表
- DB36T 1589-2022水土保持无人机监测技术规程_(高清版)
- 广中医方剂学2泻下剂
- 古代诗歌中常见的意象分类及作用
- 低老坏专项整治实施方案
- 正比例函数和反比例函数专项复习试题
- 园林绿化工程项目建议书范文
- 品质改善报告表
评论
0/150
提交评论