3-2数据类型和数据存储一、数据类型1.字符型数据2.数值型数据3.逻辑型数据4.日期型数据5.备注型数据6.通用型数据数据是反映客观事物属性的记录。数据类型一旦被定义,就确定了数据如何存储和使用。1.字符型数据字符型数据(Character)是指用各种文字字符表示的数据,包括26个英文大小写字母、10个阿拉伯数字、各种汉字、专用符号和空格等,最大长度可达254个字符。注意:如果将阿拉伯数字定义为字符型数据时,它不具备数学上的数值含义,不能参加数学运算,如电话号码,邮编等。2.数值型数据数值型数据(Numeric)是指可以进行算术运算的数据,包含0~9的阿拉伯数字、小数点与正负号,最大长度为20位。在内存中,数值型数据占用8个字节。一般将需要参加数学运算的数据定义成数值型。3.逻辑型数据逻辑型数据(Logic)是用来进行各种逻辑判断的数据,只有两个值,即真(.T.)和假(.F.),长度固定为1位,占用1个字节。日期型数据(Date)是用来专门表示日期的数据。存储格式为“YYYYMMDD”,共占用8个字节。4.日期型数据日期时间型数据(DateTime)是描述日期和时间的数据。其字符存储格式为“YYYYMMDDHHMMSS”,保存在两个4字节的整数中。5.备注型数据备注型数据(Memo)用于存放数据较长的字符型数据类型,固定占用4个字节的内存空间,用来存放VisualFoxPro的内部指针,实际的数据存放在与数据表文件同名的.FPT文件中,并且所存放的内容只受磁盘空间的限制。6.通用型数据通用型数据(General)用于存储OLE(ObjectLinkingandEmbedding)对象,只能用于数据表中字段的定义。该字段包含了对OLE对象的引用,而OLE对象的具体内容可以是一个电子表格、文档、图片等。通用型数据长度固定为4位,实际数据长度仅受磁盘空间的限制。二、数据存储在VFP系统环境下,数据输入、输出是通过数据的存储设备完成的。数据除了存入到常量、变量和数组中,还可以存入到字段、记录和对象中。这些用于存储数据的常量、变量、数组、字段、记录和对象都可以称为数据容器。数值型常量组成:数字、小数点、正负号)表示:一般表示法、浮点表示法示例:10、-12.3、3.1E12(即3*1012)货币型常量组成:同数值型,四舍五入,四位小数位表示:$加货币值示例:$12、$5699.98、$23.231、常量就是一种不变的量。它是一个命名的数据项,在命令或程序中直接引用的实际值。–字符型常量•组成:任意字符•表示:用定界符将字符串括起•示例:’12’、“ABC”、[中国]、[/“]•注意:–逻辑型常量•组成:真、假•表示:.t..f..y..n.(也可以是大写)•注意:1、定界符不能是中文符号2、定界符必须成对出现3、字符串含定界符时,必须采用另一种定界符4、空串与空格字符串不同5、字母大小写不同6、字符串与其他类型常量的区别如:’12’与12、‘.T.’与.T.–日期型与日期时间型常量•组成:数字、分隔符(如:/-:)•表示–传统格式:{mm/dd/yy[hh[:mm[:ss]]][a|p]}示例:{02-16-04}表示2004年2月16日–严格格式:{^yyyy/mm/dd[hh[:mm[:ss]]][a|p]}示例:{^2004-02-1612:10}表示2004年2月16日12时10分•注意1、不同版本VFP对日期格式处理的差别2、传统日期格式受SETDATE、SETCENTURY命令限制3、空日期表示{}、{//}等2、内存变量变量就是在程序执行的过程中随时发生改变的量。一般所说的变量,即内存变量。内存变量由变量名、变量和类型及其宽度组成。变量名:由字母、数字、下划线、汉字组成。变量名长度:可以达到254个字符。内存变量的类型:数值型、字符型、逻辑型、日期型。内存变量的赋值:(1)使用store命令格式:store数据to内存变量名例:store20toA(2)使用“=”(等号)格式:内存变量名=数据例:A=203、数组变量一组变量的集合,这些变量的数据类型可以不同,每个数组元素都可以通过一个数值下标被引用,相当于一个内存变量。4、字段变量字段变量是指数据表中已定义的任意一个数据项。字段变量的类型有:字符型(C)、数值型(N)、浮点型(F)、逻辑型(L)、日期型(D)、备注型(M)和通用型(G)。1.算术表达式2.字符表达式3.日期时间表达式4.关系表达式5.逻辑表达式三、表达式表达式是由数据、数据存储容器和运算符组成的运算式。VFP中,根据表达式运算结果的不同,表达式可以分成以下5种:(1)数值运算符:圆括号()、乘方(**或^)、乘(*)、除(/)、模运算或取余(%)、加(+)、减(-)(2)数值表达式:由数值运算符将数值型常量、变量、函数等连接起来的式子,其结果为数值型。(3)运算符的优先顺序:括号、乘方、乘除与取模、加减1算术运算符及算术表达式运算符:对相同类型数据进行运算操作的符号。表达式:用运算符将常量、变量、函数等数据连接起来的式子。(1)字符串运算符:完全连接运算符(+)、不完全连接运算符(-)、字符串包含运算符($)和精确比较运算符(==)。说明:完全连接运算符:两个字符串的简单连接;不完全连接运算符:当第一个字符串的尾部有空格时,将第一个字符串尾部的空格移到第二个字符串的尾部,然后,再将两个字符串连接起来。2字符串运算符及字符表达式包含运算符:检测左边的字符串是否被包含在右边的字符串中。如果包含,返回逻辑真值(.T.),否则返回逻辑假值(.F.)。精确比较运算符:只有当两边的字符串完全相等时,才返回逻辑真值(.T.)。(2)字符表达式:由字符串运算符将字符型常量、变量、函数等连接起来的式子。示例:“abc”+”bcd”、”abc”-”bcd”、“book”$”bookstore”、“the”$“this”、“that”==”that”、”that”==”that”(1)日期型运算符:加法(+)、减法(-)(2)日期表达式:由日期运算符将日期型常量、变量、函数等数据连接起来的式子,其返回结果为日期型或者数值型数据。(3)日期表达式的几种形式:日期型数据+数值型数据数值型数据+日期型数据日期型数据-数值型数据日期型数据-日期型数据示例:{^1996-01-01}+20{^1998-5-30}-{^1998-01-20}{^1995-10-28}-203日期运算符及日期表达式(1)关系运算符:小于()、大于()、等于(=)、不等于(、#或!=)、小于等于(=)、大于等于(=)。(2)关系表达式:由关系运算符、数值表达式、字符表达式或日期表达式组合而成的式子,返回结果为逻辑值。(3)关系运算符的两边,可以是字符表达式、数值表达式或者日期表达式,但两边的数据类型必须一致才能进行比较。示例:“A”“B”、“A”=“B”“A”=“B”、“A”“B”、5+684关系运算符及关系表达式(1)逻辑运算符:逻辑非(.NOT.)、逻辑与(.AND.)、逻辑或(.OR.)(2)逻辑表达式:由逻辑运算符、逻辑型常量、逻辑型内存变量、逻辑型数组、返回逻辑型数据的函数和关系表达式组成,结果为逻辑型常量。(3)运算规则:进行逻辑与运算时,当参加运算的双方都为真值时,运算结果为真值,否则为假值;进行逻辑或运算时,当参加运算的双方都为假值时,运算结果为假值,否则为真值;进行逻辑非运算时,运算结果为原来的相反值。示例:83.AND.810“A”“C”.OR.“A”“C”.NOT.565逻辑运算符及逻辑表达式VFP算术、关系、逻辑运算符运算优先级运算符意义运算举例(注解表示显示结果)算术8()圆括号7^或**乘方?3^2&&96×乘/除%取模:取两数相除的余数?15%4&&35+加-减关系4小于?6354&&.F.=小于等于?{01/01/92}={01/01/92}&.T.大于?ABCAAAA&&.T.=大于等于?大专=大学&&.T.=相等:串比较时串首同就得真?ABC=AB&&.T.==完全相等:两串全同才得真?ABC==AB“&&.F.、#或!=不相等?.T..F.&&.T.$包含:左串是右串子串才得真?BC$ABCD&&.T.逻辑3NOT或!非:结果是右边逻辑值的反?NOTBC$ABCD&&.F.2AND与:两边都真才得真?.T.ANDABCAB&&.F.1OR或:两边有一为真就得真?.T.OR4=5&&.T.