数据库技术 第03章 数据管理基础 数据 表达式和函数.ppt

上传人:少林足球 文档编号:3889832 上传时间:2019-10-04 格式:PPT 页数:138 大小:353.05KB
返回 下载 相关 举报
数据库技术 第03章 数据管理基础 数据 表达式和函数.ppt_第1页
第1页 / 共138页
数据库技术 第03章 数据管理基础 数据 表达式和函数.ppt_第2页
第2页 / 共138页
数据库技术 第03章 数据管理基础 数据 表达式和函数.ppt_第3页
第3页 / 共138页
数据库技术 第03章 数据管理基础 数据 表达式和函数.ppt_第4页
第4页 / 共138页
数据库技术 第03章 数据管理基础 数据 表达式和函数.ppt_第5页
第5页 / 共138页
点击查看更多>>
资源描述

《数据库技术 第03章 数据管理基础 数据 表达式和函数.ppt》由会员分享,可在线阅读,更多相关《数据库技术 第03章 数据管理基础 数据 表达式和函数.ppt(138页珍藏版)》请在三一文库上搜索。

1、第3章 数据管理基础数据、表达式和函数,3.1 数据 3.2 操作符和表达式 3.3 函数 习题 上机实验题,数据库技术是进行数据处理的有效手段和方法。在数据库系统中,用户通过数据库管理系统 (即DBMS)提供的功能,对数据库中各类数据进行相应的操作处理和组织管理。 本章主要介绍Visual FoxPro系统中各种数据的数据类型以及它们的表达式,为用户使用Visual FoxPro系统进行数据操作和管理建立良好的基础。,数据是数据库系统的操作和管理对象。人们通常使用各种各样的物理符号来表示客观事物,这些符号及其组合就是数据。计算机中所谓的数据就是计算机可以处理的一切对象。数据的概念包括两方面的

2、含义,即数据内容和数据形式。数据内容是指所描述客观事物的具体特性,也就是数据的“值”;数据形式则是指数据内容存储在媒体上的具体形式,也就是所谓的数据“类型”。数据主要有数字、文字、声音、图形和图像等多种形式。,3.1 数据,数据是数据库系统的操作和管理对象。人们通常使用各种各样的物理符号来表示客观事物,这些符号及其组合就是数据。计算机中所谓的数据就是计算机可以处理的一切对象。数据的概念包括两方面的含义,即数据内容和数据形式。数据内容是指所描述客观事物的具体特性,也就是数据的“值”;数据形式则是指数据内容存储在媒体上的具体形式,也就是所谓的数据“类型”。数据主要有数字、文字、声音、图形和图像等多

3、种形式。,数据的概念包含数据内容和形式两个方面,数据形式就是数据的存储形式和使用方式,也称数据类型。和其他程序设计语句类似,Visual FoxPro为了使用户建立和操作数据库更加方便,提供了多种数据类型,各种类型的数据可以保存在表、数组、变量及其他数据容器中。 数据类型有一定的应用范围,下列数据类型均可应用于表中字段数据类型的定义,但其中双精度型、浮点型、通用型、整型、备注型、二进制字符型和二进制备注型只能应用于字段,其余数据类型,如字符型、数值型、货币型、日期型、日期时间型和逻辑型,则可以用于变量、数组和字段。,3.1.1 数据类型,1. 字符型(Character) 字符型数据是不具有计

4、算能力的文字数据类型,用字母C表示。字符型数据由任意字符组成,包括中文字符、英文字符、数字字符和其他ASCII字符,其长度(即字符个数)范围是0254个字符。字符类型可以表示诸如姓名、名称、地址以及无需算术运算的数字号码(如学号、职工工号、电话号码以及邮政编码等)。,2. 与数值相关的类型 与数值相关的类型数据是表示数量、可以进行数值运算的数据类型。用它们来表示数量,且由数字、小数点、正负号和表示乘幂的字母E组成,数值精度达16位。在Visual FoxPro系统中,按存储、表示形式与取值范围不同,有以下4种不同类型。,(1) 数值型(Numeric) 数值型数据由数字、小数点、正负号和字母E

5、组成,用字母N表示。数值型数据的取值范围是 -0.9999999999E+19 0.9999999999E+20,包括正负号、小数点和字母E在内,其长度(数据位数)最大20位。通常用于表示实数,如235、-123.15、1.3E+8(即1.3108)等。 (2) 浮点型(Float) 浮点型数据是数值型数据的一种,用字母F表示。它与数值类型完全等价,只是在存储形式上采用浮点格式,主要是为了得到较高的计算精度。,(3) 双精度型(Double) 双精度型数据是具有更高精度的一种数值类型数据,用B表示。它采用固定长度浮点格式存储,占用8个字节,其取值范围是: 4.94065645841247E-3

6、24 8.9884656743115E+307。 (4) 整型(Integer) 整型数据是不包含小数部分的数值型数据,用I表示。整型数据只用于表示整数,如15、-230、1234等,以二进制形式存储,占用4个字节,因此整型数据比数值型数据占用的空间要小。其取值范围是: -2147483647 2147483646。,3. 日期型(Date) 日期型数据是表示日期的数据,用字母D表示。日期的默认格式是mm/dd/yy,其中mm表示月份,dd表示日期,yy表示年份,日期类型数据的固定长度8位。Visual FoxPro系统中提供了多种日期格式,但是需要通过相应的设置来改变,如命令SET DATE

7、、SET MARK、SET CENTURY;或在“工具”菜单中选择“选项”对话框的“区域”选项卡进行有关日期的设置。例如02/10/03表示03年2月10日,通过SET CENTURY ON命令可以将年份改写为4位,即02/10/2003表示2003年2月10日。,4. 日期时间型(Date Times) 日期时间型数据是表示日期和时间的数据,用字母T表示。在保存日期、时间二者兼有时,可以使用日期时间数据类型。日期时间的默认格式是mm/dd/yy hh:mm:ss,其中mm、dd、yy的意义与日期型相同,而hh表示小时,mm表示分钟,ss表示秒数。日期时间型数据也是采用固定长度8位,第一个4字

8、节保存日期,另一个4字节保存时间,取值范围是: 日期为01/01/000112/31/9999,时间为00:00:00 23:59:59,如02/10/2003 14:20:30表示2003年2月10日14时20分30秒这一日期时间数据。,日期时间类型的时间部分的格式取决于SET HOURS和SET SCEONDS命令的设置,另外还要注意如下规则: 00:00:00AM等价于12:00:00AM; 00:00:00PM等价于12:00:00PM。,5. 逻辑型(Logic) 逻辑型数据是描述客观事物真假的数据类型,表示逻辑判断的数据用字母L表示。逻辑型的数据只有两种值: 真(.T.或.Y.)和

9、假(.F.或.N.)固定长度1个字节,是一种高效的存储方法。为区别其他数据类型,一般需在表示逻辑的字母前后加小圆点,如.T.、.F.等。,6. 备注型(Memo) 备注型数据是用于在表中存储数据块、可以存放较多字符的数据类型,如个人简历、备注内容等具有较长文字内容的数据。可以把它看成是字符型数据的特殊形式,用字母M表示。备注型数据没有数据长度限制,仅受限于磁盘空间。它只用于表示字段类型的定义,字段长度固定为10个字节,它指向实际的备注内容,实际数据存放在与表文件同名的备注文件(.fpt)中,长度根据数据的内容而定。,7. 通用型(General) 通用型数据是存储OLE(对象链接嵌入)对象的数

10、据类型,用字母G表示。通用型数据中的OLE对象可以是电子表格、文档、图形、图片等。它只用于表中字段类型的定义。通用型数据字段长度固定为10字节,实际数据长度仅受限于磁盘空间。 OLE对象的实际内容、类型和数据量大小取决于链接或嵌入OLE对象的操作方式。如果采用链接OLE对象的方式,则表中只包含OLE对象的引用说明,以及对创建该OLE对象的应用程序的应用说明;如果采用嵌入OLE对象方式,则表中除包含对创建OLE对象的应用程序的引用说明外,还包含OLE对象的实际数据。,8. 货币型(Currency) 货币型数据是为存储货币金额而使用的一种数据类型。当涉及货币时,可使用货币类型代替数值类型,默认保

11、留4位小数,长度为8个字节,用字母Y表示。如1234.56,其中“”为美元符号。货币类型的取值范围是: -922337203685477.5808 922337203685477.5807。,9. 二进制字符型和二进制备注型 这两类数据是以二进制格式存储的数据类型,只能用在表中字段数据的定义。所存储的数据不受代码页改变的影响。 二进制字符类型字段最长不超过254个字符,它是在各种代码页间保持不变的字符数据,如保存在表中的用户口令,可用于不同国家;二进制备注型字段在表中占4个字节,它是在各种代码页间保持不变的备注字段数据,用于不同国家的登录脚本。,常量是在命令或程序中可以直接引用、具有具体值的命

12、名数据项,其特征是在整个操作过程中它的值和表现形式保持不变。Visual FoxPro按照常量取值的数据类型将常量分为6种类型,即数值型、浮点型、字符型、逻辑型、日期型、日期时间型。 Visual FoxPro系统还可以创建预编译常量。这种常量在设计阶段先预定为一个具体的值,以后凡需要用到此值的地方都可以用该预编译常量代替。编译之后,凡在源代码中出现该常量的地方都用该常量的具体值来置换。这样,只要改变一个预编译常量的值,就可以影响到整个应用程序。,3.1.2 常 量,预编译常量必须定义其值。所以系统提供了#DEFINE预处理命令,给常量赋值,如下所示: #DEFINE N 123 #DEFIN

13、E CHAR 字符 上述两条预编译命令的功能是定义了一个数值型预编译常量N和一个字符串常量CHAR,故在程序中,凡是要用到123或“字符”的地方都可用N或CHAR代替。编译之后,凡在源代码中出现N或CHAR的地方都被123或“字符”代替。如果要把程序中的数值123改为456,或字符串“字符”改为“字符串”,则不需要到程序中的每一处去修改,只需在上述预编译命令中修改一次即可,如下所示: #DEFINE N 456 #DEFINE CHAR 字符串,值得注意的是,在程序中的预编译常量名不能再用它作为变量名,不能对它赋值。 可以通过#UNDEF N和#UNDEF CHAR释放预编译常量N和CHAR。

14、,1. 数值型常量 由数字、小数点和正负号组成,表示整数或实数值,如120、-560、15.12、-5214.687等分别是数值型常量中的整数和实数。 2. 浮点型常量 这种常量是以浮点格式表示的数值常量。通常用来表示那些绝对值很大或很小、而有效位数不太长的一些数值,对应于日常应用中的科学记数法。,如960万,以实数形式表示为9600000,以科学记数法的乘幂形式表示是9.6106;13亿,以实数形式表示是1300000000,以科学记数法的乘幂形式表示是1.3109。显然用科学记数法形式表示比较简洁、方便,对应的,采用浮点型常量分别表示为9.6E+6和1.3E+9,其中,9.6和1.3称为尾

15、数,表示有效数字,6和9称为阶码,表示幂指数。阶码只能是整数,尾数可以是整数,也可以是小数;阶码和尾数均可正可负。,3. 字符型常量 由任意ASCII字符、汉字和汉字字符组成的字符型数据,字符型常量也称为字符串,为了与其他类型常量、变量和标识符相区别,Visual FoxPro系统为字符串设置了3组定界符,如一对双引号,一对单引号,一对方括号。表示一个字符串时,只需使用它们中的任意组都可以。例如Happy New Year!、新年好、欢迎进入Visual FoxPro系统,这些均可表示为字符串,也就是字符型常量。,4. 逻辑型常量 逻辑型常量就是表示逻辑判断结果“真”与“假”或者“满足”与“不

16、满足”的逻辑值。逻辑常量只有两种值,分别用.T.或.Y.和.F.或.N.表示“真”、“满足”和“假”、“不满足”。表示时一般应在逻辑常量的字母左右加小圆点,以示与其他数据类型常量、变量、标识符等的表示相区分。,5. 日期型常量 日期型常量表示日期值的数据。为了与其他表示加以区分,日期型常量需用作为它的定界符,如02/10/2003表示2003年2月10日这个日期常量。 6. 日期时间型常量 日期时间型常量是Visual FoxPro系统提供的一种表示日期和时间值的常量形式,同样,为了加以区别,需用作为定界符,如5/1/2002 10:00 am表示2002年5月1日上午10时这个时间。,变量是

17、在操作过程中可以改变其取值或数据类型的数据项,其实质是内存中的一个存储单元的位置,其变量名是存储位置的符号标识。在Visual FoxPro系统中,变量分为字段变量、内存变量和系统变量3类。此外,作为面向对象的程序语言,对象是一个很重要的概念,对象实质上也是一类变量。 确定一个变量需要3个要素: 变量名、数据类型和变量值。,3.1.3 变量,1. 一般命名约定 在Visual FoxPro系统中,将表示和存储数据的常量、变量、数组、字段、记录、对象、表、数据库等,都称为数据容器。所有数据容器均需命名以相互区别,为规范各类标识符的命名,Visual FoxPro系统推荐了若干“命名约定”供用户参

18、考,以提高操作命令与程序的可读性和规范性。,对于数据容器和一些命令、函数中所需参数的命名,用户应遵循以下一般规则: 只使用字母、下划线和数字命名; 命名以字母或下划线开头,除自由表中字段名、索引的TAG标识名最多只能有10个字符外,其他的命名可使用1 128个字符; 避免使用Visual FoxPro系统中的保留字(如命令名、标准函数名等各种系统预定义项的名称)进行命名,以免造成系统区分和识别上的混乱; 文件名的命名应遵循操作系统的约定。,2. 内存变量 内存变量是在内存中定义的、一种单个数据元素的临时性变量,它独立于数据库文件而存在,使用时可以随时建立,一旦程序运行完毕,这些变量就自行释放。

19、内存变量的作用是提高数据值的传递、运算和临时存放效率。 (1) 内存变量的数据类型 内存变量的数据类型有5种: 数值型、字符型、逻辑型、日期型和日期时间型。内存变量的数据类型取决于创建时所赋值给它的值的类型。,(2) 内存变量的创建 创建内存变量就是给内存变量赋值。内存变量赋值既可以定义一个新的内存变量,也可以改变已有的内存变量的值或数据类型。内存变量赋值命令有两种: 格式1: STORE TO 其功能是将的值计算出来并赋值给指定内存变量表中的各个内存变量,内存变量表中变量名与变量名之间用逗号间隔。 例如: STORE (20+40)/2 TO N1,N2,N3 STORE I am a st

20、udent. TO C1, C2,上述例子中是将(20+40)/2表达式的值计算出来后分别赋值给变量N1、N2、N3,此时不但定义了内存变量的数值,而且还确定了内存变量的数据类型,N1、N2、N3变量均为数值型内存变量。同样,中是将I am a student.字符串赋值给字符变量C1和C2。 格式2: = 其功能是将的值计算出来并赋值给指定的内存变量。 该格式的功能与格式1基本相同,不同的是格式1可以同时给多个变量赋值,而格式2一次只能给一个变量赋值。,例如:A=1 B=学校上述例子创建了两个变量A和B,其值分别是1和“学校”,并由赋值而确定了A为数值型变量,B为字符型变量。,(3) 内存变

21、量的显示输出 要想在变量创建后能看到变量内的值,Visual FoxPro系统提供了两个简单的在屏幕上输出内存变量值的命令。 格式1: ? AT 格式2: ? AT ,其命令功能是计算表达式表中的各表达式的值,并在屏幕上指定位置显示各表达式的值。AT 子句选项指定表达式值从指定列开始显示输出,且AT的定位只对它前面的一个表达式有效,即多个表达式必须用多个AT子句分别定位输出。其中: ?: 先回车换行,再计算并输出表达式的值。 ?: 在屏幕上的光标当前位置,计算并直接输出表达式的值。 同样,表达式表中的各表达式之间用逗号间隔,各表达式的值输出时,以空格分隔。,例如: ?20,30,40 ?a,b

22、,c上两条命令执行完毕后在屏幕上显示: 203040abc 又例如:a1=6 a2=7 ?a1 AT 20, a2 AT 30显示结果如下: 6(在第20列上) 7(在第30列上),3. 字段变量 字段是与表相关的变量形式。数据表由若干记录组成,每个记录都包含若干数量相同的字段,同一字段在不同记录中分别对应不同的字段值,因此,字段也是变量。与内存变量不同的是,字段变量是定义在表中的变量,随表的存取而存取,因而字段变量是永久性变量,一旦一个数据表建立,就有了属于该数据表的一组字段变量。因为数据表中字段名最多只能包含10个字符,所以,字段变量名称长度不应超过10个字符,也就是字段名就是字段变量名,

23、此种变量的数据类型可以是Visual FoxPro中的任意数据类型,并在创建数据表结构时对每个字段名进行指定。,4. 系统变量 系统变量是指以字符“_”开头的、由Visual FoxPro系统自动定义生成的变量,它的名称是系统已经定义好的,是Visual FoxPro系统特有的内存变量。例如,_MFILE、_MEDIT、_MVIEW等,因此在定义内存变量和数组名时,不要以下划线开始,以免与系统变量冲突。系统变量设置、保存了很多系统的状态、特性,了解、熟悉并充分运用系统变量,会给数据库系统的操作和管理带来方便。,数组是一种特殊的内存变量,是一组具有相同名称、以下标相互区分的有序内存变量。其中的每

24、一个数据值称为一个元素,即数组元素或下标变量。数组可以按它的下标个数分为一维数组、二维数组和多维数组。,3.1.4 数 组,1. 数组定义 格式1: DIMENSION (,),(,) 格式2: DECLARE (,),(,) 两种格式功能完全相同,是定义一个或若干个一维或二维或多维数组。 定义数组时,也可以使用方括号,即DIMENSION d3,4,与DIMENSION d(3,4) 功能一样,且均为合法数组定义命令。,一旦定义了数组,系统在内存中就为数组开辟一块连续的数据存储区域,为存储数据块作准备。而数据区域的大小取决于格式中的数字表达式,即每一维下标的上限数值,下限从1开始。 例如:

25、DIMENSION a1(10), a2(4,3), a3(1,2,3) 上面的数组定义语句定义了3个数组: 具有10个数组元素(即10个下标变量)的一维数组a1;具有4行3列的一共12个数组元素(即12个下标变量)的二维数组a2;具有6个数组元素(即6个下标变量)的三维数组a3。,2. 数组使用 任何一个数组被定义后,就可以使用这些数组,并对它们进行赋值,数组的类型与赋值的类型有关。每一个数组的单元是以下标来表示的,所以数组变量往往也称为下标变量,一维数组称为单下标变量,二维数组称为双下标变量,下标的起始值为1,因此,如果有以下定义: DIMENSION A(N),B(N,M) 对于一维数组

26、A来说,它的使用范围为1N,即有N个下标变量可以存储数据,它们是: A(1),A(2),A(3),A(N)。,对于二维数组B来说,它的使用范围为(1 N)(1 M),即有NM个下标变量存储数据,它们是: B(1,1),B(1,2),B(1,3),B(1,M),B(2,1),B(2,2),B(2,M),B(N,1),B(N,2),B(N,M)。,【例3-1】给相应的数组赋值并做相应的输出。 程序段如下: DIMENSION a(2,4),b(2) STORE 0 TO a & 将数值0赋值给a数组中的每一个下标变量 a(1,2)=book a(2,4)=rule a(1,1)=CTOD(02/1

27、0/03) a(1,3)=150 a(2,3)=.T. STORE 10 TO b & 将数值10赋值给b数组中的每一个下标变量,?a(1,1),a(1,2),a(1,3),a(1,4) ?a(2,1),a(2,2),a(2,3),a(2,4) ?b(1) ?b(2) 该程序段运行之后将有如下结果: 02/10/03book1500 0 0 T rule 1010,3. 数组与数据表互传数据 数组与数据表互传数据具有传送数据多,传递速度快,程序简洁等特点。 (1) 从数组向数据表传送数据 格式1: 将数组内容送当前记录。 GATHER FROM /MEMVAR FIELDS 其功能是将数组或一

28、组内存变量内容存入当前已经打开的数据表文件的当前记录中。传送时,将中的第1个元素内容复制到第1个字段,第2个元素内容复制到第2个字段,以此类推。若数组元素个数少于字段个数,则后面的字段内容不被替代;若数组元素个数多于字段个数,则后面的数组元素内容不复制。,当选择MEMVAR子句,则表示只有与字段名相同的数组或内存变量被替代。 当选择FIELDS 选项时,表示只对用户指定的字段内容由数组或内存变量所替代,否则所有的字段内容都被替代。在书写时,字段名表中的字段名之间用逗号间隔。 当选择选项时,表示可以用数组或内存变量替代某备注型字段,否则,即使FIELDS选项中选择了备注型字段,仍不能被替代。 格

29、式2: 将数组内容追加到表文件中。 APPEND FROM ARRAY FOR FIELDS ,其功能是将数组内容追加到当前已经打开的数据表文件的最末尾处。该格式中各选项的含义与格式1类似,数组元素追加到表文件中的方式也相同。惟一不同的是,格式2是将数组或内存变量中的数据追加到表文件的最末尾处,其作用可以通过该语句格式从内存中给一个表文件增加记录;而格式1中是用数组或内存变量中的数组替代当前记录,其作用是利用内存中的数据修改文件当前记录的值。,【例3-2】将数组中的数据传递到商品信息表中,商品信息表的结构如表3-1所示。 程序段如下: DIMENSION a(5) a(1)=110101 a(

30、2)=钢笔 a(3)=英雄 a(4)=K1 a(5)=5.2 USE spxx APPEND BLANK,GATHER FROM a LIST USE 上述程序段的实际意义就是以数组a中的数据作为源数据,在spxx表文件的尾部追加一个空白记录,通过数组传递语句实现对这个空白记录的改写功能,即实现了追加一个新记录的目的。,(2) 从数据表向数组传递数据 格式1: 将当前记录数据送入数组。 SCATTER FIELDS TO / TO BLANK / MEMVAR / MEMVAR BLANK 其功能是将当前已经打开的数据表的当前记录内容,以字段为单位复制到数组或一组内存变量中,若数组内存变量不存

31、在,在系统自动生成数组或内存变量。其中:,选择TO 子句是将字段内容按序分别复制到该数组对应次序的元素中。若数组不存在或数组元素个数少于字段个数,在系统将自动建立或重新建立该数组,若数组元素个数多于字段个数,则后面的数组元素内容将不被复制。 选择TO BLANK子句,则仅仅是建立一个数组,并不复制其内容,数组中的各元素与对应的字段有着相同的类型和宽度,但是数组内容是空的。 选择MEMVER子句,表示建立一个与字段名相同名字、相同类型和相同宽度的数组或内存变量,并将字段内容复制过去。以后,在使用这些内存变量时,应在变量名前加一个M。,选择MEMVAR BLANK子句,则表示建立一个与字段名相同名

32、字、相同类型和相同宽度的数组或内存变量,且并不将字段内容复制过去。 上述4种子句在每一个SCATTER语句中只能四选一使用。 若选择FIELDS 选项时,表示只将用户指定的字段内容复制到数组或内存变量,书写时,字段名表中字段名之间用逗号间隔;否则,所有的字段内容都复制。 若选择选项时,表示可以将备注型字段的内容复制到数组或内存变量中;否则,备注型字段的内容不被复制。,另外需要说明的是,所复制的字段类型可以是字符型、数值型、浮点型、日期型、逻辑型和备注型。 格式2: 将当前打开的表文件内容送入数组。 COPY TO ARRAY FIELDS FOR WHILE 其功能是在当前已经打开的数据表中,

33、将用户知道范围内所有记录的有关字段内容全部复制到数组中。其过程是: 将表文件中的第1个记录复制到数组的第1行,第1个字段复制到数组的第1个元素中,第2个字段复制到数组的第2个元素中,以此类推。如果不存在的话,系统将自动建立。,命令中所复制的字段类型可以是字符型、数值型、浮点型、日期型、逻辑型,但是不允许是备注型。 在格式中,若选择FIELDS 选项时,表示只将用户指定的字段内容复制到数组,书写时,字段名之间用逗号间隔;否则,所用的字段内容都被复制。 若选择选项时,表示只将用户指定范围内的那些记录进行复制;否则系统默认范围为ALL,即全部记录的范围。,若选择FOR或WHILE选项时,表示只对满足

34、用户指定条件的那些记录进行复制,FOR选项为对指定范围内所有满足条件1的记录进行复制,WHILE选项为对指定范围内满足条件2的记录进行复制,直到测试到第一个不满足条件2的记录为止;若不选这两项,则对每一个记录进行复制。,【例3-3】如表3-2商品信息表结构所示,程序段如下: DIMENSION a(5) USE spxx SCATTER TO a ?a(1),a(2),a(3),a(4),a(5) SKIP SCATTER TO a ?a(1),a(2),a(3),a(4),a(5) USE 上述程序段的运行结果是: 110101钢笔英雄K15.2 110102 钢笔 英雄 M2 10.8,操

35、作符,也称运算符,是对数据对象进行加工处理的符号,根据其处理数据对象的数据类型,在Visual FoxPro系统中,操作符分为数值操作符、字符操作符、日期操作符、关系操作符和逻辑操作符5类。通过操作符,将常量、变量、函数以及其他数据容器连接起来的有意义的式子,称为表达式,根据5类不同的操作符,构成了5类表达式,它们是算术表达式、字符表达式、日期表达式、关系表达式和逻辑表达式。,3.2 操作符和表达式,需特别指出的是,单个的常量、变量、函数是表达式的一种特例。 在一个表达式中可能包含多个同类或不同类的操作符,但是对一个操作符来说,它的两个操作对象应该具有同一种数据类型,否则系统将会测试错误。在有

36、多个操作符的表达式中,如何运算将由事先规定好的操作符运算优先级来决定,如果要人为改变运算优先级,可以通过圆括号来实现。在Visual FoxPro系统中,各类操作符的优先级顺序如下:圆括号数值和日期时间操作符字符操作符关系操作符逻辑操作符,数值操作符数值操作符的操作对象是数值型数据,运算的结果仍然为数值型数据。 数值操作符如下: *或 : 乘方操作符 *: 乘法操作符 /: 除法操作符 %: 模运算操作符(即求两数相除后的余数) +: 加法操作符 -: 减法操作符,3.2.1 数值操作符和表达式,数值操作符的运算优先级为: ()*或*、/+、- 由上面看出,优先级最高的是圆括号,其次是乘方运算

37、,再者是乘法、除法,运算优先级最低的是加法、减法。乘法和除法、加法和减法为同级操作符,当遇到同级操作符时,运算顺序为先左后右。,2. 数值表达式 数值表达式,又称算术表达式,其运算对象和运算结果均为数值型数据,它是通过数值操作符将数值型的常量、变量、函数等元素连接起来的有意义的式子。 数值表达式的书写有一定的规则: 所有符号在同一行上; 所有的操作符不能省略; 因为计算机运算时,严格按照操作符优先级以及从左到右的顺序进行,所以可以用圆括号改变运算优先级。,【例3-4】将下列数学表达式改写为数值表达式。 (1) 1/75-1/86052.69+859 (2) (3),解: 数值表达式以及运算优先

38、级为:,有关数学标准函数部分可查阅函数附录。,字符操作符字符操作符的操作对象是字符类型的数据。 有3种字符操作符: +: 两个字符串相连接。 -: 两个字符串相连接,并把前串尾部空格移到新字符串的尾部。 : 测试操作符,两个字符串中,如果符号左边的字符串包含在右边的字符串中,则其值为“真”;否则,其值为“假”。 “+”、“-”字符操作符的操作对象为字符型数据,运算结果仍然为字符型数据;“”字符操作符的操作对象也是字符型数据,但运算结果为逻辑值。它们的运算优先级为:()+、-,3.2.2 字符操作符和表达式,2. 字符表达式 字符表达式是由字符操作符将字符型数据对象连接起来的有意义的式子。 【例

39、3-5】字符表达式的应用。 a = ABCD b =DEFG c = a + b d = a - b ? c=, c ? d=, d ? ac, bc,? ad, bd执行了上述若干命令以后,显示结果如下: c= ABCD DEFG d= ABCDDEFG T T F T,1. 日期操作符日期操作符的操作对象是日期型数据、日期时间型数据和数值型数据。日期操作符只有两种: +: 在一个日期数据上增加一个天数,产生另一个日期;在日期时间数据上增加一个秒数,产生另一个日期时间数据。 -: 在一个日期数据或日期时间数据上减少一个天数或一个秒数,产生另一个日期数据或日期时间数据;两个日期型数据或两个日期

40、时间型相减,结果为两个日期之间的间隔的天数或两个日期时间之间间隔的秒数。 “+”和“-”两个操作符的运算优先级相同。,3.2.3 日期操作符和表达式,2. 日期表达式 由日期操作符将一个日期型或日期时间型数据与一个数值型数据、日期型数据或日期时间型数据连接而成的有意义的式子,被称为日期表达式。 【例3-6】日期表达式的应用。 a = 02/11/2003 b = 02/11/2002 c = 02/11/2002 10:30:00 ? a+5, a-5, a-b ? c+30, c-60 运行结果如下: 02/16/200302/06/2003 365 02/11/2002 10:30:30

41、02/11/2002 10:29:00,关系操作符关系操作符是指比较两个数据的大小或前后关系,关系操作符可以在数值型数据之间、字符型数据之间、日期型数据之间进行比较。 关系操作符有如下7种: : 大于。 =: 等于,在进行字符串比较时,要受SET EXACT命令的影响。 =: 精确等于,不受SET EXACT命令的影响。 或!=或#: 不等于。 =: 小于或等于。,3.2.4 关系操作符和表达式,=: 大于或等于。 关系操作符的运算结果是逻辑型数据,即不是“真”就是“假”。各关系操作符的优先级别相同。,2. 关系表达式 由关系操作符将两个同类数据对象连接起来进行关系比较的有意义的式子,称为关系

42、表达式。关系表达式运算时,就是比较同类的两个数据对象之间的“大小”关系,对于不同类型的数据,其“大小”的含义有所不同,如数值型数据比较的是值的大小;日期或日期时间型数据是比较日期或时间的先后顺序;而字符型数据比较的是在字符的ASCII码的先后排列顺序。,在Visual FoxPro系统中,字符型数据的比较相对比较复杂,其规则如下: 两个字符串进行比较的基本原则是从左到右逐个字符进行比较,但是,因系统相关设置状态不同,比较的结果与预期的不完全相同。 相等比较。 用操作符“=”进行两个字符串比较时,当SET EXACT OFF时,比较到达“=”右边的字符串末尾字符为止;当SET EXACT ON时

43、,比较到达两个字符串的末尾字符为止,来判断两个字符串是否相等,系统默认为SET EXACT OFF。 恒等比较。 用操作符“= =”进行两个字符串的比较时,称为恒等比较。不论SET EXACT的设置如何,只有当两个字符串的长度相同、字符相同、排列一致时恒等才成立。 大小比较。 用操作符“”或“”进行两个字符串比较时,比较到第一个不相同字符为止,否则长度较长的字符串较“大”。, 其他比较。 除上述操作符之外的其他操作符如“”、“=”或“相当于或=相当于或=;=相当于或=,只要其中一个运算成立,则运算成立。 汉字比较。 系统默认按汉字的拼音字母的英文顺序排列顺序,也就是以汉字的拼音顺序比较“大小”

44、,因此汉字比较实质上是以字母的顺序进行比较。但是Visual FoxPro系统可以设置汉字以笔画排列顺序,此时,汉字的“大小”取决于其笔画的多少。,【例3-7】关系表达式应用。 工资=600 姓名=张三 日期=02/10/2002 ? 20=400, 姓名=张三,日期=DATE( ) &DATE()为当前日期函数 ? abc=2bc, abc=a2b, abc=abc a =abc b = a+a ? ab, ab, a=b ? ba, ba, b=a,SET EXACT ON ? ab, ab, a=b ? ba, ba, b=a ? 张三 李四 运行结果如下: FTTF F F T T F

45、 F T T F F T T F T T T F F T T F F F T T F T F,逻辑操作符逻辑操作符的操作对象是逻辑型数据,运算的结果依然是逻辑型数据。逻辑操作符前后一般要加圆点标记,以示区别。 逻辑操作符有以下3种。 .NOT.或! : 逻辑非运算 .AND.: 逻辑与运算 .OR.: 逻辑或运算 3种操作符的运算优先级别为: ( ) .NOT. .AND. .OR.,3.2.5 逻辑操作符和表达式,2. 逻辑表达式 由逻辑操作符将逻辑型数据对象连接而成的式子称为逻辑表达式。逻辑表达式的运算对象与运算结果均为逻辑型数据。 逻辑运算的运算规则如表3-3所示,其中A、B表示两个逻辑

46、型数据对象。 在Visual FoxPro系统中,有一种特殊的“数据”空值NULL(或.NULL.),如数组变量定义而未赋值时,所有数组变量的默认值为NULL,字段可根据需要允许或限制其取空值。空值对于逻辑运算的影响如表3-4所示。,【例3-8】逻辑表达式的应用。 a = .T. b = .F. ? a .AND. b, a .OR. b, .NOT. a, .NOT. b ? .NOT. a .AND. b .OR. b ? .NOT. (a .AND. b) .OR. b ? .NOT a .AND. (b .OR. b) ? .NOT. (a .AND. b .OR. b) ? 12,

47、.NOT. 12, 12 .OR. 3+1=10*2 运行结果如下: FTFT,F T F T FTT T,值得注意的是: 对于两个逻辑型数据,一般不用比较的方式来确定它们之间的关系,而是直接运用逻辑运算的方式进行处理。如对数据表中的记录实现选择运算时,是用FOR或WHILE进行逻辑判断,其中就是一个关系表达式或者是一个逻辑表达式。对于以逻辑字段进行逻辑判断的情况,一般不用关系表达式而直接用逻辑表达式。如“婚否”是一个逻辑字段,并约定其值“.T.”为已婚,“.F.”为未婚。那么判断某记录对应人员是否已婚,用FOR 婚否,而不用FOR 婚否=.T.;如果判断是否未婚,则用FOR.NOT. 婚否,

48、而不用FOR 婚否=.F.。,函数(Function)是一段程序代码,用来进行一些特定的运算或操作,支持和完善命令的功能,帮助用户完成各种操作与管理。 Visual FoxPro系统有数百种不同函数,内容丰富,功能强大,如果能够熟练运用这些函数,便可轻松开发出功能强大的程序。Visual FoxPro函数根据不同的分类标准,有不同种分类法。 按函数的提供方式,可分为标准函数和自定义函数。 按函数运算、处理对象和结果的数据类型,可分为数值型函数、字符型函数、逻辑型函数、日期时间型函数、数据转换函数等。,3.3 函数,按函数的功能和特点,可分为数据处理函数、数据库函数、文件管理函数、键盘和鼠标处理函数、输出函数、窗口界面操作函数、程序设计函数、数据库环境函数、网络操作函数、系统信息函数、动态数据操作函数等。 与数学中的函数一样,Visual FoxPro系统中的函数书写由函数名和自变量两部分组成。标准函数是系统提供的系统函数,其函数名是Visual FoxPro的保留字,自定义函数是用户自己定义的函数,函数名由用户指定。函数书写格式规定,自变量必须用圆括号括起来,如有多个自变量,各个变量之间用逗号间隔。有些函数没有自变量或可以省略自变量,但也必须保留圆括号。自变量数据类型由函数的定义确定,使用函数时,自变量的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1