资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,单击此处编辑母版标题样式,Visual FoxPro,程序设计,1,目录,第,1,章 概述,第,2,章 表的操作,第,3,章 数据库的基本操作,第,4,章 查询与视图,第,5,章 程序设计基础,第,6,章 表单,第,7,章 菜单与工具栏,第,8,章 报表,第,9,章 项目管理器,第,10,章 程序设计实例,2,第,1,章,概述,计算机科学的发展使得它的应用领域逐步扩大,已进入社会的各个方面。信息化社会用计算机进行数据处理已成为日常工作的内容。数据库系统技术是用计算机进行数据处理的最简单、易学、易掌握的技术。,VFP,继承了以往传统数据库的优点,采用了面向对象的程序设计思想和可视化的编程工具,操作简单、易学,极大地方便了软件的开发。人们在使用它作为开发工具时,可以高效地开发出 全新的可视化图形界面应用程序。所开发出的软件易于推广和应用。因此,VFP,应用较为广泛。本章主要介绍相关基本知识,为后续章节的学习打下基础。,3,第,1,章,概述,1.1,数据库系统的发展与特点,1.2,数据库的基本知识,1.3,数据与数据运算,1.4,小结,4,1.1,数据库系统的发展与特点,1.1.1,数据库系统的发展,数据处理技术的形成和发展经历了早期的,人工管理,、,文件系统,、,数据库系统,这三个阶段。人工管理是最原始的数据管理方式,由于数据的不共享性,而被文件系统所代替。文件系统虽然数据具有共享性,但共享性差、独立性差、冗余度高而被数据库系统所代替。由于数据库系统具有共享性高、冗余度小、数据的独立性好的优点使它成为当今数据处理的主要工具。在,20,世纪,60,年代末,美国,IBM,公司成功地研制出第一个商品化的数据库系统,IMS (Information Management System),,以后又相继出现了,DBASE,、,FoxBASE,、,FoxPro,、,VFP,等数据库系统。,5,信息化社会的到来,使数据库系统的应用更为广泛,技术更加成熟,它与人工管理、文件系统比较有如下特点:,1,、数据结构化,在文件系统中,各个文件不存在相互联系。从单个文件来看,数据一般是有结构的;但从整个系统来说,数据又是没有结果的。数据库系统则不同,在同一数据库中的数据文件也存在联系,即在整体上服从一定的结构形式。,1.1.2,数据库系统的特点,6,2,、数据的共享,共享是数据库系统的目的,也是其重要特点。一个数据库中的数据不仅可为同一企业或机构之内的各个部门共享,也可为不同单位、地域甚至不同国家的用户共享。而在文件系统同,数据一般是由特定的用户专用的。,3,、数据的独立性,在文件应用系统中,数据结构和应用程序相互依赖,一方的改变总是要影响另一方的改变。数据库系统则力求减少这种相互依赖,实现数据的独立性。虽然目前还未能完全做到这一点,但较之文件系统已大有改善。,4,、冗余度低,数据专用时,每个用户拥有并使用自己的数据,难免有许多数据相互重复,这就是冗余。实现共享后,不必要的重复将全部消除,但为了提高查询效率,有时也保留少量重复数据,其冗余度可由设计人员控制。,7,1.2,数据库的基本知识,1.2.1,数据库系统,1.2.2,数据模型,1.2.3 VFP,启动与主界面,8,1.2.1,数据库系统,数据,(Data),是指能存储在计算机系统的物理介质上并能被计算机识别的物理符号。它包括文字、图形、图像、声音等。,数据处理,(Data Processing),是指将数据转为对用户来讲有用信息的过程。,数据库,(Database),是指存储在计算机存储器中结构化的、能为多个用户共享且又独立于应用程序的相关数据的集合。,9,数据库管理系统,(DBMS,DataBase,Management System),是指可以对数据库的建立、使用和维护管理的软件。它包括数据定义语言,DDL(Data,Define Language),、数据操纵语言,DML(Data,Manipulation Language),、管理与控制程序。,数据库应用系统,(DBAS,DataBase,Application System),是指用数据库系统资源,面向某一实际应用而开发的具体应用程序软件系统,如学籍管理系统、工资管理系统等。,数据库系统,(DBS,即,DataBase,System),是指在计算机系统中引入数据库后的系统,它由硬件系统、数据库集合、数据库管理系统、相关软件、数据库管理员、用户组成。,10,1,、数据模型的基本概念,在现实世界中,将研究对象的抽象化、形式化的描述过程称为模型。把表示客观事物及其联系的数据及结构成为数据模型。在数据管理系统中有,层次模型,、,网状模型,、,关系模型,。下面就数据模型相关的基本概念作以介绍。,1.2.2,数据模型,11,实体,:,客观存在并可以相互区别的事物称为实体。实体可以是实际的事务,如教师、职工、部门、单位等;也可以是抽象的事件,如比赛、订货、选修课程等。,属性:,实体所具有的某一特性称为属性,例如学生可以用学号、姓名、性别、出生日期等属性描述。,域:,属性的取值范围称为域,如学生的一门课成绩取值为,0,100,之间。,实体型:,若干个属性名组成的集合表示一个实体的类型成为实体型。,实体集,:,同型实体的集合称为实体集,如全班学生实体就是一个实体集。,联系:,实体联系有实体内部联系与实体外部联系。实体内部联系是指实体内部各属性之间的联系。实体外部联系也称实体之间的联系,通常是指不同实体集之间的联系。,12,一对一联系,:,实体集,A,中的一个实体与实体集,B,中至多有一个实体相对应,反之亦然,则称实体集,A,与实体集,B,有一对一联系,记为,1:1,。如旅客与车票之间的联系。,实体集之间的联系可分为三类,13,一对多联系,:,实体集,A,中的一个实体与实体集,B,中的,N,个实体相对应,反之实体集,B,中的一个实体至多与实体集,A,中的一个实体相对应,则称实体集,A,与实体集,B,有一对多联系,记为,1:N,。如班级与学生之间的联系。,14,多对多联系,(M:N),:,实体集,A,中的一个实体与实体集,B,中的,N,个实体相对应,反之实体集,B,中的一个实体与实体集,A,中的,M,个实体相对应,则称实体集,A,与实体集,B,有多对多联系,记为,M:N,。,如教师与学生之间的联系。,15,数据库管理系统常用的数据模型有下列三种:,层次模型,网状模型,关系模型,2.,数据模型,16,关系模型是以数学理论为基础构造的数据模型,它用二维表格来表示实体集中实体之间的联系。在关系模型中,操作的对象和结果都是二维表,表格与表格之间通过相同的栏目建立联系。,下表表名为学生成绩,表中一行称为一个元组,表中一列称为一个属性。如表中有,5,个属性,即学号、姓名、数学、英语、,VFP,。,关系模型,(,Relational Model,),17,学生成绩表,学号,姓名,数学,英语,VFP,1,李小明,98,85,96,2,张朋,89,87,88,3,李丽,86,98,100,18,关系模型的规范化:,1),关系的每一个分量必须是一个不可分的数据项,即表中不可含表;,2),同一关系中不能有相同的属性名;,3),关系中不允许有相同的元组;,4),在一个关系中元组的次序可任意;,5),在一个关系中列的次序可任意。,19,关系模型的表示形式:,关系名(属性,1,,属性,2,,,,属性,N,),例如:学生成绩表壳描述为如下关系:,学生成绩(学号,姓名,数学,英语,,VFP,),20,3.,关系的完整性,关系的完整性包括实体完整性、参照完整性和用户定义完整性。现在先介绍一下与完整性相关的概念。,(,1,)概念,1,),关键字,:在关系中能唯一标识元组的一个或一组属性称为关键字,如学生成绩表中的学号。,2,),候选关键字,:候选关键字也是关键字,它是具有关键字特性的一个或多个属性的统称。若学生成绩表中学号、姓名都是无重复值,那么学号与姓名就是候选关键字。若姓名有重复值,则姓名就不能是候选关键字。,3,),主关键字,:主关键字是在多个候选关键字中选出的一个关键字。一个关系中只能有一个主关键字,如在学生成绩表中学号为主关键字。,4,),外部关键字,:若在一个关系,R,中一个属性不是本关系的主关键字或候选关键字,而是另外一个关系,S,的主关键字或候选关键字,则称此属性为本关系的外部关键字,,R,为参照关系,,S,为被参照关系。,21,(,2,)关系的完整性,1,),实体完整性,:是指关系中的主关键字不能取空值。空值就是不确定的值。由于主关键字为空值,那这个元组是无意义的。如学生成绩表中学号为空值,而其他属性却有值,则该条记录无意义。,2,),参照完整性,:是用来约束关系与关系之间的关系,是指一个关系,R,的外部关键字,F,与另一个关系,S,的主关键字,K,相对应(即,F,是,S,的主关键字),则对,R,中的每一个元组在,F,上的值必须为空值或等于,S,中某一个元素的主关键字的值,如有以下两个关系(表):,学生(学号,姓名,性别,,专业代号,),专业(,专业代号,,专业名),22,3,),用户定义完整性,:是指根据用户的实际需要,属性域的完整性的规定。在,VFP,数据库表中是指字段的数据类型、宽度、精度、取值范围、是否允许空值。如学生成绩表中的数学,其数值类型可为整型,取,0,100,之间。,23,1.2.3 VFP,启动与主界面,1. VFP,的功能,VFP,是一个可视化数据库编程的开发工具,它可以建立表、数据库,对数据库中的表建立联系并进行可视化管理。项目管理器是对多种文档、多种程序进行统一集中管理与维护的工具。,VFP,运用自身的向导、设计器、生成器等实现可视化编程。,VFP,运用交互式与自动化工作方式,方便了不同层次、不同应用用户的需求。,VFP,支持多媒体、网络编程,它能高效、快捷地开发出令人满意的应用软件。,24,处理器:主频为,233MHz,的奔腾,2,以上的微机,内存储器:,64MB,以上内存,外存储器:典型安装需,85MB,的硬盘空间,最大安装需,90MB,硬盘空间,显卡:支持,800600,像素或更高分辨率显示器,操作系统:,Win95/98/me/2000/xp/NT 4.0,或更高版本的操作系统,2. VFP,系统环境,25,1,、将,VFP,系统光盘插入,CD-ROM,驱动器中,2,、通过,【,我的电脑,】,找到,setup.exe,文件,双击该文件以后按照安装向导的进一步提示完成安装即可,3,VFP,的安装,26,1,)单击开始,-,程序,-Microsoft Visual Studio 6.0 - Microsoft Visual FoxPro 6.0,2,)双击桌面上的,VFP,快捷方式图标,4,VFP,的启动,27,5. VFP,的退出,1,)按,Alt+F4,2,)在命令窗口中输入,QUIT,,然后回车,3,)从文件菜单,-,退出,4,)双击左上角的控制图标,5,)单击左上角控制图标,-,关闭,28,VFP,的主窗口包括:标题栏、菜单栏、工具栏、状态栏、命令窗口和工作区几个组成部分。,标题栏,菜单栏,常用工具栏,命令窗口,状态栏,工作区,6. VFP,的主窗口,29,VFP,工作方式主要分为两类:一类为,交互工作方式,,这包括在命令窗口执行和用菜单或工具栏按钮执行命令。另一类为,自动化工作方式,。它包括用编写的程序、各种生成器等自动生成程序后进行执行。在解决某一个问题时,两种工作方式哪一种或两种方式结合使用都可以得到同一结果。,这两种工作方式为不同层次的用户、不同软件开发的用户提供了方便的使用方式,用户可以根据自身的实际情况进行选择使用。,7. VFP,工作方式,30,8.,简单的,VFP,用户程序,例,1.1,设计一个表单,显示“欢迎您使用,VFP,,祝您成为软件开发的精英”。,例,1.2,设计一个口令系统,若口令正确,显示欢迎您进入学生成绩管理系统,否则显示非法用户。,例,1.3,设计一个两个串交换的表单。,31,1.3,数据与数据运算,VFP,重要的,作用,就是对数据进行高效的处理。,在,VFP,中按数据存储类型分为整型、浮点型、字符型、日期型等多种。按数据形式分为常量、变量、函数、表达式等;,32,表,1.1,数据类型,数据类型,取值范围,说明,字符型,任意字符,最大长度为,254,任意文本,货币型,-922337203685477.5808,922337203685477.5807,货币量,日期型,0001-01-01,9999-12-31,年月日表示日期,日期时间型,0001-01-01 00:00:00 a ,9999-12-31 11:59:59 p,年月日、时间,表示日期和时间,33,逻辑型,.,. .t. .Y. .y. .F. .f. .N. .n.,布尔值,整型,-2147483647,2147483647,整数,数值型,-0.9999999999E+19,0.9999999999E+20,整数或小数,浮点型,-0.9999999999E+19,0.9999999999E+20,整数或小数,双精度,B,+/-4.94065645841247E-324,+/-8.9884656743115E307,双精度浮点数,34,通用型,受可用空间限制,OLE,对象引用,备注型,受可用空间限制,数据块引用,35,所谓的常量就是在程序执行中其值不变的量。,VFP,中有,6,种类型的常量:,数值型常量,字符型常量,逻辑型常量,货币型常量,日期型常量,日期时间型常量,1.3.1,常量,36,(,1,)整数:由数字组成,如,0,,,-2,,,3,。,(,2,)实数:,十进制表示形式,:,它由数字、正负号、小数点组成。,如,0.23,,,-3.14,等。,指数表示形式,:,它由数字、小数点与,E,或,e,组成。,如,1.2310,3,可表示为,1.23E3,如,-1.2310,-2,可表示为,-1.23e-2,。,E,前要有数字,,E,后要有整数,。,1,数值型常量,37,字符型常量是用,定界符,(,双引号,“,”,、单引号,、方括号,),括起来的一系列有效字符,也称为字符串。如,“中国”,、,“,微机,”、 ,PC,、,abc,、,计算机,、,123,、“,3.14159”,等。,字符串的最大长度为,254,个字符。,若字符串中含有定界符,则必须用另一种定界符括起来。,例如 “学生,爱好,计算机”,I,m a student.,2,字符型常量,38,3.,逻辑型常量,逻辑常量只有,真,和,假,两种值。,逻辑真:,.t. .T. .Y. .y.,逻辑假:,.f. .F. .N. .n.,39,货币型常量以,$,符号开头,并四舍五入到小数点后,4,位,例如:,$100.12345,,计算结果为,$100.1235,4.,货币型常量,40,5.,日期型、日期时间型常量,日期型常量:必须用花括号括起来,(,1,)通用格式,:,mm/,dd/yyyy,,,例如,08/08/2008,或,8/8/08,,空白的日期可表示为,、,/,,需执行,SET STRICTDATE TO 0,命令;,(,2,)严格格式:,yyyy-mm-dd,,,若要设置严格的日期格式,例如,2008-8-8,,,需执行,SET STRICTDATE TO 1,命令,。,41,日期时间型常量:,(,1,),通用格式,:,mm/,dd/yyyy,hh:mm:ssa|p,如,9/15/99 8:45,(,2,)严格格式:,yyyy-mm-dd,hh:mm:ssa|p,,,如,2008-8-8 8:8:8 p,42,变量是它的值可以改变的量。,变量可分为两大类,一类为字段变量、另一类为内存变量。,变量是有名的。,标识符是用来标识变量、函数、表、数据库、文件等名子,即标识符就是一个名子。,1.3.2,变量,43,由数字、字母、下划线组成。,以字母、下划线开头。,长度一般为,1128,个字符,但对于数组名、自由表名、自由表中的字段名、索引标识符名最多为,10,个字符。,避免使用,VFP,保留字。,汉字与字母同等待遇,(,一个汉字占两个字符,),。,标识符的组成规则:,44,内存变量有,N,、,C,、,Y,、,D,、,T,、,L,六种类型。,VFP,规定内存变量的类型可以改变,即同一变量可以赋予不同类型的值。,当内存变量与字段变量重名时,在访问内存变量时,,VFP,规定在内存变量名前加,M-,或,M.,,否则系统默认是访问字段变量。,45,(1),赋值命令,格式,1,:,=,格式,2,:,STORE,TO,功能,:,格式,1,将表达式的值赋给变量。,格式,2,将表达式的值赋给变量表中的所有变量。,说明:,1),表达式是运算符与操作对象连接起来的式子,表达式可为变量、常量、也可为表达式。,2),变量表中的各变量用逗号分隔。,1.,简单变量与相关命令,46,(2),输出命令,格式,:,? | ? ,功能:显示输出项目表中的各输出项。,说明:,1),输出项可为变量、常量、表达式。,2),输出项目表中的各项是用逗号分隔的,命令执行时遇到逗号就空一格。,3,)?,是表示在下一行输出各输出项,,?,是在当前行当前列输出各输出项,。,47,例,1.4,内存变量的应用,a=1,b=.t.,c=2005-10-12,d=A,e=2005-10-12 12:30:28 a,store 10 to f, g,h=$123.23,?,a,b,c,d,e,f,g,a=,中国,b=,河北省,c=123,?,a,b,?c=,c,?,a,b,48,数组是按一定顺序排列的数据集合。,数组中的每一个数据称为一个元素。,数组中每一个元素的序号称为下标。,数组中的所有元素在内存中是连续存放的。,2,数组,49,格式:,DIMENSION | DECLARE (,),功能:定义一维或多维数组,说明:,1),数组定义后系统自动为每一个元素赋逻辑假,.F.,。,2),数组有一个下标称为一维数组,有二个下标称为二维数组。,3),数组的最小下标为,1,。,4),数组的类型可以通过使用加以改变,同一数组的元素类型可以不同。,数组的定义,50,5),当在赋值、输入命令中只用数组名时,表示数组的所有元素有同一个值。,6),数组名不能与简单变量重名。,7),由于数组各元素在内存中是连续存放的,二维数组可作为一维数组来使用。,8),数组与后面章节中的表可相互传递数据。,9),数组中的每一个元素是简单变量,因为简单变量所有的功能数组元素都具备,简单变量使用的场合数组元素都是用。,51,例,1.5,一维数组的应用。,dimension a(5), b(5),a=10,a(5)=23,b(1)=2*a(1),b(3)=,中国,b(4)=2005-10-6,b(5)=$123.2,?a(1), a(2), a(3), a(4), a(5),?b(1), b(2), b(3), b(4), b(5),52,(1),内存变量的显示,格式:,LIST | DISPLAY MEMORY LIKE TO PRINT | TO FILE ,功能:显示内存变量的名、作用域、类型、值。,说明:,1)like,子句是显示与通配符相匹配的内存变量信息。,通配符有,?,与,*,,,?,表示一个任意字符,,*,表示多个任意字符。,2)to print,子句是将显示内存变量的信息同时从打印机输出。,3)to file ,子句是将显示内存变量的信息同时存入由文件名指定的文件中。,4)list,不管显示的信息有多少,都一次显示完。,5)display,显示的信息多于一屏时,分屏显示。每显示一屏就暂停下来,待用户按任意键后继续显示。,3,内存变量的显示与释放,53,格式,1,:,CLEAR MEMORY,格式,2,:,RELEASE ,格式,3,:,RELEASE ALL EXTENDED,格式,4,:,RELEASE ALL LIKE | EXCEPT ,功能:,格式,1,释放所有内存变量。格式,2,释放由内存变量表指定的内存变量。格式,3,释放所有内存变量,无任何选项释放所有内存变量,在程序中要选,extended,,否则不能释放公共变量。格式,4,当选,like ,时,释放与,相匹配的内存变量;当选,except ,时,释放与,不相匹配的内存变量。,(2),内存变量的释放,54,例,1.7,内存变量的显示与应用,a=2,abc,=6,b=,中国,a1=,秦皇岛,dimension c(3),c(1)=2009-10-20,c(2)=22,display memory like a? to file qq1,display memory like a* to file qq2,release all like a*,display memory like a*,release all,55,1.3.3,运算符与表达式,VFP,的运算符主要有六种,:,算术运算符,字符串运算符,关系运算符,逻辑运算符,日期与日期时间运算符,宏替换运算符,56,1,、算术运算符与表达式,算术运算符要求它的的操作数必须为数值。由算术运算符与操作数连接的式子为算术表达式,算术表达式的运算结果为数值。,表,1.2,算术运算符与表达式,优先级,运算符,含义,表达式,结果,1,(),括号,(,2 + 3,)*,2,10,2,*,/,%,乘,除,取余,3 * 2,10 / 2,10 % 3,6,5,1,3,+,-,加,减,2 + 3,2 - 3,5,-1,57,例,1.8,算术运算符与表达式的应用,x=2,y=3,?(x+2)*y%6-x,58,字符串运算符用于多个字符串相连接。它的操作数是字符串。由字符串运算符连接起来的式子为字符串表达式。,2,、字符串运算符,59,表,1.3,字符串运算符与表达式,运算符,含义,表达式,结果,+,将两个字符串连接起来组成一个新字符串,“中国 ”,+ ”,北京”,“,中国 北京,”,-,将两个字符串连接成一个新串。若第一个字符串尾部有空格,就将此空格移到新串的尾部,“中国 ”,- “,北京”,“,中国北京,”,60,例,1.9,字符串运算符与表达式的应用,a=“,河北,b=“,秦皇岛,c=“,欧美学院,?,a+b+c,?a-,b-c,61,3,、关系运算符与表达式,关系运算符用于操作数之间进行关系比较,它的操作数是同类型的。由关系运算符连接起来的式子为关系表达式。关系表达式的结果是逻辑值。若关系成立,结果为真,否则为假。,62,表,1.,4,关系运算符与表达式,运算符,含义,表达式,结果,大于,34,.F.,=,大于等于,10=6,“,abc,”=“123”,.T.,.T.,小于,24,.T.,=,小于等于,3=2, x!=y, x4,.T.,2,AND,与:,AND,两边操作对象全委真,结果才为真,102 AND 53,.T.,3,OR,或:,OR,两边操作有一个为真,结果就为真,102 OR 310,.T.,65,A,B,A .AND.B,A .OR. B,.NOT. A,.T.,.T.,.T.,.T.,.F.,.T.,.F.,.F.,.T.,.F.,.F.,.T.,.F.,.T.,.T.,.F.,.F.,.F.,.F.,.T.,逻辑运算真值表,66,例,1.11,逻辑表达式的应用,a=,中国黑龙江,b=,黑龙江,c=3,?,b$a,and c3,67,日期、日期时间运算符可以对操作对象进行加、减运算。用这种运算符连接起来的式子为日期、日期时间表达式。,5,日期、日期时间运算符与表达式,68,表,1.6,日期时间运算符与表达式,运算符,含义,表达式,结果,+,日期与天数相加形成新的日期,2005-10-2+10,2005-10-12,-,日期与天数相减形成新的日期;日期与日期相减得两个日期相差的天数,2005-10-20-10,2005-10-20- 2005-10-10,2005-10-10,10,+,日期时间与秒相加形成新的日期时间,2005-10-20 10:20:30 am+10,2005-10-20 10:20:40 am,-,日期时间与秒相减形成新的日期时间;日期时间与日期时间相减得秒,2005-10-20 10:20:30 am-10,2005-10-20 10:20:30 am- 2005-10-20 10:20:10 am,2005-10-20 10:20:20 am,20,69,例,1.12,日期、日期时间运算符及表达式的应用。,a=2005-11-20,b=10,?a+b, b+a, 2005-12-20+10, a-10,c=2005-11-20 10:30:30 a,d=2005-11-20 10:20:10 a,?c+10, 10+d, c-10, c-d,70,1.3.4,常用函数,函数是一段程序代码,用来进行一些特定的运算或操作,支持和完善命令的功能,帮助用户完成各种操作与管理。按函数提供方式,可分为系统函数和用户自定义函数。按函数运算、处理对象和结果的数据类型,可分为数值型函数、字符型函数、逻辑型函数、日期时间型函数、数据转换函数等。,71,1,、系统函数的形式,函数名,(,形参表,),2,、函数的返回值,函数经过运算所得结果称为函数的返回值,3,、常用函数的分类,通常将常用的函数分为数值函数、字符处理函数、日期和时间函数、数据类型转换函数、测试函数五种。,72,4,、常用函数,数值函数,字符函数,日期和时间函数,数据类型转换函数,测试函数,73,(1),数值函数,1,)绝对值函数,格式:,ABS(),功能:求数值表达式的绝对值,例,1.14 ABS,的应用,x=-2,?,abs(x,), abs(10+x), abs(2+x), abs(2*x),74,2),符号函数,格式:,SIGN(,数值表达式,),功能:返回数值表达式的值的符号,当数值表达式的值为正、负、,0,时函数分别为,1,,,-1,,,0,例,1.15 SIGN,的应用,x=3,?,sign(x,), sign(-1), sign(x-3),75,3),圆周率函数,格式:,PI(),功能:返回圆周率。,例,1.16 PI(),的应用,s=pi()*10*,10,? “s=”, s,76,4),求平方根函数,格式:,SQRT(),功能:返回数值表达式值得平方根,数值表达式的值不能为负。,例,1.17 SQRT(),的应用,x=-4,y=2.22,?sqrt(abs(-4), sqrt(10+y),77,5),求整数函数,格式:,INT(),功能:,INT(),返回数值表达式的整数值,例,1.18,求整数函数的应用,x=3.9,?,int(x,),int(-x,),78,6),四舍五入函数,格式:,ROUND(, ),功能:对数值表达式,1,四舍五入,保留数值表达式,2,的值所制定的位数,例,1.19 ROUND(),函数的应用,x=123.456,?,round(x, 2),round(x, 1),round(x, 0),round(x, -1),79,7),求余函数,格式:,MOD(, ),功能:返回数值表达式,1,除以数值表达式,2,的余数,且余数的符号与除数相同。若数值表达式,1,与数值表达式,2,同号,函数值为两数的余数。若异号,函数值为两数的余数再加上除数的值。,例,1.20 MOD(),应用,x=10,?,mod(x, 4),mod(x, -4), mod(-x, 4), mod(-x, -4),80,8),求最大值函数,格式:,MAX(, , ),功能:求数值表达式,1,,数值表达式,2,,数值表达式,3,中的最大值,9),求最小值函数,格式:,MIN(, , ),功能:求数值表达式,1,,数值表达式,2,,数值表达式,3,中的最小值,例,1.21 MAX(),的应用,x=10,?max(2, 10, -2, 20, 9, x),81,10),求,e,的函数,格式:,EXP(),功能:求,e,的数值表达式,例,1.22 exp(),的应用,?exp(2),82,(2),字符函数,1),求字符串长度函数,格式:,LEN(),功能:返回字符表达式的长度,例,1.23,len,(),的应用,x=“,中国哈尔滨”,y=“china”,?,len(x,),len(y,),83,2),大小写转换函数,格式:,LOWER(),UPPER(),功能:,LOWER(),是将字符表达式中的大写字母转为小写字母,UPPER(),是将字符表达式中的小写字母转为大写字母,例,1.24 lower(),,,upper(),的应用,x=“123study hard”,?,lower(x,),upper(x,),84,3),空格字符串生成函数,格式:,space(),功能:返回由数值表达式值指定数目的空格,例,1.25 space(),的应用,x=“We”,y=“are”,z=“students.”,?x+space(2)+y+space(2)+z,85,4),删除前导尾部空格函数,格式:,TRIM(),LTRIM(),ALLTRIM(),功能:,TRIM(),将字符表达式的值的尾部空格去掉,LTRIM(),将字符表达式的值的前导空格去掉,ALLTRIM(),将字符表达式的值的前导与尾部空格同时去掉,例,1.26 TRIM(),,,LTRIM(),,,ALLTRIM(),的应用,a=“,中国,”,b=“,首都,“,c=“,北京,“,d=,a+b+c,?a, b, c, d,?,trim(a)+ltrim(b)+alltrim(c,),86,5),子串函数,格式:,LEFT(,),RIGHT(, ),SUBSTR(, , ),功能:,LEFT(),从字符表达式的左端开始取,N,个字符。,RIGHT(),从字符表达式的右端开始取,N,个字符。,SUBSTR(),从字符表达式的第,N1,个位置开始取,N2,字符。若,N2,省略,取到最后一个字符。,例,1.27 LEFT(),,,RIGHT(),,,SUBSTR(),的应用,x=“,中国北京首都”,?,left(x, 4)+right(x, 4)+substr(x, 5, 4),87,6),求子串位置函数,格式:,AT(,),功能:,AT(),若字符表达式,1,为字符表达式,2,的子串时,则返回字符表达式,1,的首字符在字符表达式,2,中的位置。否则返回,0,。数值表达式,3,是字符表达式,1,在字符表达式,2,中第几次出现,默认值为,1,。,例,1.28 AT(),的应用,x=“This is computer. The computer is our friend.”,?,at(“is,”, x),at(“is,”, x, 3),at(“The,”, x),88,(3),日期和时间函数,1),日期函数 格式:,DATE(),功能:返回当前系统日期,2),时间函数 格式:,TIME(),功能:返回当前系统时间,3),日期时间函数,格式:,DATETIME(),功能:返回当前系统日期与时间,4),求天数函数,格式:,DAY(|),功能:返回天数,5),年份函数,格式:,YEAR(|),功能:返回年份,89,6),月份函数,格式:,MONTH(|),功能:返回月份,7),小时函数,格式:,HOUR(),功能:返回小时,8),分函数,格式:,MINUTE(),功能:返回分钟,9),秒函数,格式:,SEC(),功能:返回秒数,90,例,1.29,日期和时间函数的应用,x=2005-10-2 01:30:28 am,?date(), time(),datetime,(),day(datetime,(),?,year(x,),month(x,),hour(x,),minute(x,),sec(x,),91,(4),数值类型转换函数,1),数值转换成字符型函数,格式:,STR(, , N),功能:将数值表达式转为长度为,L,,小数位数为,N,的字符串。,例,1.30 STR(),的应用,x=-1.278,?,str(x, 8, 2),str(x, 2),92,2),字符串转为数值函数,格式:,VAL(),功能:将字符表达式值转为数值,例,1.31 VAL,的应用,x=“-12.45”,y=“b2.6”,?,val(x,),val(y,),93,3),将字符串转为日期或时间函数,格式:,CTOD(),CTOT(),功能:,CTOD(),将字符表达式转为日期型数据,CTOT(),将字符表达式转为日期时间型数据,例,1.32 CTOD(),与,CTOT(),的应用,?ctod(“10/2/2005”), ctot(“10/2/2005 10:30:51 am”),94,4),日期时间转为字符型数据,格式:,DTOC(|,1) TTOC(,1),功能:,DTOC(),将日期表达式或日期时间表达式转为字符型数据,若选,1,则字符格式,YYYYMMDD,共,8,个字符。,TTOC(),将日期时间表达式转为字符型数据,若选,1,则字符格式,YYYYMMDD-HHMMSS,共,14,个字符,例,1.33 DTOC(),与,TTOC(),的应用,?,dtoc(date,(),ttoc(datetime,(),95,(5),测试函数,1),值域测试函数,格式:,BETWEEN(, , ),功能:若表达式,1,值大于等于表达式,2,且小于等于表达式,3,时,函数返回,.T.,,否则返回,.F.,。若表达式,2,,表达式,3,有一个为,NULL,,则函数返回,NULL,。,例,1.34 BETWEEN(),的应用,x=100,?,between(x, 10, 200),between(x, 1, 20),between(x, NULL, 300),96,2),空值测试函数,格式:,ISNULL(),功能:若表达式值为,NULL,,函数返回,.T.,,否则返回,.F.,。,例,1.35 ISNULL(),的应用,x=null,y=3,?,isnull(x,),isnull(y,),97,3)“,空”值测试函数,格式:,EMPTY(),功能:若表达式值为空,函数返回,.T.,,否则返回,.F.,。,说明:数值型、双精度、货币、浮点、整型为,0,就认为空。字符型空串、空格、制表、回车、换行认为空。备注型无内容认为空。逻辑型为,.F.,,日期、日期时间型为空时,认为空。如,CTOD(“”),,,CTOT(“”),都认为空,98,4),数据类型测试函数,格式:,VARTYPE(),功能:返回表达式的类型,用大写字母表示类型。,C,为字符型或备注行,,N,为数值型、整型、浮点型、双精度型。,Y,为货币型,,L,为逻辑型,,O,为对象型,,G,为通用型,,D,为日期型,,T,为日期时间型,,X,为,NULL,值,,U,为未定义,99,例,1.36 VARTYPE(),应用,a=“,abc,”,b=2,c=null,?,vartype(a,),vartype(b,),vartype,100,1.4,小结,本章主要介绍了数据库的发展与特点,数据库的基本知识,数据与数据运算。通过学习数据模型可知,关系数据模型就是一张二维表,它是建立在严格的数学概念基础上的,既简单又便于实现。掌握,VFP,的数据类型及常用函数,在进行数据运算时要严格区分常量、变量、表达式及应用规则,为今后应用,VFP,开发工具编制应用软件打下良好的基础。,101,
展开阅读全文