1、,如何学习FoxPro数据库语言,首先要掌握语言的基本符号。如英语的26个大小写字母;汉语的汉字;还要掌握一些运算符号,如: * / % 其次要掌握命令、短语、函数、及表达式。如list delete for all ;98/11/15-15; left(姓名,2)+东东 特殊地:5.28 “abcde” .t. 98/12/21 x_y 姓名 k123 再次是要掌握符合语法的语句( 单命令)。如:,DELETE FOR WHILE delete all for 姓名=“张三” SORT TO ON /A | /D /C , /A | /D /C . ASCENDING | DESCENDIN
2、G FOR WHILE FIELDS sort to x_m_1 on 姓名 for 成绩=60,最后是按一定结构将若干个句子组合成程序(批命令)。包括:顺序、选择、循环。如:,Use d:wy020115student Accept “姓名:” to xm Locate for 姓名=xm Do while not eof() display continue enddo use,第三章 常量、变量、函数和表达式,常量 变量 函数 表达式,常量:值不变的量,数值常量 字符串常量 日期常量 逻辑常量,复习题,一、请指出以下常量的类型 (1)“电脑” (2)128 (3).T. (4) “128
3、” (5).n. (6)this (7)98.08.18 (8)1.234E+8 二、请指出不合法的字符串常量 (1)“Y/N” (2)ABCD (3)ABCD (4)ABCD (5)ABCD,变量:值可以改变的量,字段变量:是数据库中已经定义的变量。 内存变量:是独立于数据库文件的临时 存储单元,用来存放数据库 操作过程中或程序运行过程 中所要临时保存的数据。,内存变量的命名规则内存变量的类型内存变量的赋值,命名规则:可以以字母、汉字或下划 线开头,可由字母、汉字 数字和下划线组成,最长 不超过10个字符。 例1:Class_2,name,A1,姓名 例2:3AB,CD*, Sec-Clas
4、s,类型:字符型(C)、数值型(N)、日期型(D)、逻辑型(L)、屏幕型(D) 注:前四种类型内存变量可以进行各 种运算,屏幕型内存变量不能进 行运算,只能用于保存和恢复屏 幕画面。,命令格式1:STORE TO 命令格式2: 功能:首先计算出表达式的值,再将该值赋给内存变量。 例如:name=张明n=3日期=98.08.10true=.T.store 20 to n1,n2,函数: 数值运算函数 字符处理函数 时间日期函数 转换函数,1、求绝对值函数 格式:ABS() 功能:求的绝对值 2、平方根函数 格式:SQRT() 功能:求的平方根 3、取整函数 格式:INT() 功能:截去小数部分,
5、保留整数部分,4、四舍五入函数 格式:ROUND(,n) 功能:根据n的值进行四舍五入 5、求模函数 格式:MOD(,) 功能:求出表达式1除以表达式2的余数 6、取大值函数 格式:MAX(,) 功能:各表达式中的最大值,1、求子串函数 格式:SUBSTR(,) 功能:在字符表达式中,从第m个字符开始截取n个 字符,形成一个新的字符串.函数值为C型. 2、求左子串函数 格式:LEFT(,) 功能:从字符表达式的左端开始截取n个字符,形 成一个新的字符串.函数值为C型. 3、求字符串长度函数 格式:LEN() 功能:求字符表达式中的字符个数.函数值为N型,1、时间函数 格式:TIME( ) 功能
6、:给出当前的系统时间.函数值是C型. 2、日期函数 格式:DATE( ) 功能:给出当前的系统日期.函数值是D型. 3、求年函数 格式:YEAR() 功能:求表达式中年的数值.函数值是N型.,1、大写字母转换成小写字母 格式:LOWER() 功能:将字符表达式中所有大写字母 换成小写字母. 函数值是C型. 2、小写字母转换成大写字母 格式:UPPER() 功能:将字符表达式中所有小写字母.转换成大写字母. 函数值是C型.,表达式:由运算符和括号将常量、变量和函数连接起来的有意义 的式子。 表达式的类型:数值表达式字符表达式日期表达式关系表达式逻辑表达式,计算和显示命令: 格式1:? 功能:计算
7、出各个表达式的值,并在下一行依次显示出来。 格式2:? 功能:计算出各个表达式的值,并从光标当前位置开始显示出来。 说明:表达式表可包含多个表达式,各个表达式之间用逗号分隔。,数值表达式:是由数值型常数、变量、函数和算术运算符等组成的表达式,结果也是数值型。 算术运算符:P46 例1:? 10 +5*2,(5-3)*2+22 例2: ? ABS(-12)+10,字符表达式:是由字符型常数、变量、函数和 字符运算符组成。结果仍然是字符型。 字符串运算符有两种:+ 连接运算符:把两个字符串连接起来,形成一个新的字符串。- 压缩空格运算符:连接前后两个字符串,并将前字符串尾部的空格移到合并后的新字符
8、串尾部。,例1:?“ABC ” “ DEF” 例2:?“北大”“方正” 例3:?“ABC ” “ DEF” 例4:“AB ” “CD” “EF” 例5:“AB” “ CD” “EF” 例6:“AB ” “CD” “EF” “ !”,日期表达式:由日期运算符和日期常量、变 量、函数以及数值型数据组成。结果为日期或数值。 日期运算符:+ 加号;用于一个日期与一个整数相加,得 到一个新的日期。- 减号;用于一个日期减去一个整数,得到一个新的日期;还可用于两个日期相减得到相差的天数。,例1:?98.08.12+3 例2:?98.08.12-3 例3:?99.10.15-99.10.10,关系表达式:由
9、关系运算符将相同类型的数据连接起来的式子。运算结果是逻辑值.T.或.F.。 关系运算符:P47 例1:? SQRT(2*8)=0,98.08.1299.08.12 例2:? 5!=3,“EFG”“小” 例3:a=.y.b=.n.?ab,.t.f.,查子串运算符$ 格式:$ 功能:在字符串2中查找字符串1,若找到,值为.T.,否则为.F.。 例: ?AB$ABC, AB$ DABE, AB$ A 例: ?北大$北大方正,“=”与“=”在比较字符型数据时的区别 “=”只有当两个字符串完全相同时(包括尾部的空格),结果为.T.,否则为.F.。运算结果不受SET EXACT ON/OFF的影响。 “=
10、” 运算结果受SET EXACT ON/OFF的影响。,逻辑表达式:由逻辑常数、变量、函数和逻辑运算符组成的表达式。结果为逻辑值 逻辑运算符:逻辑非、逻辑与、逻辑或,例:STORE .T. TO x,ySTORE .F. TO a?X AND y,x AND a,y OR a? NOT a,x AND y AND NOT a,运算优先级: 1、括号优先 2、算术运算、字符串运算、日期运算 3、关系运算 4、逻辑运算 例如:? 2“EF”.and.4+2=6,例. 写出命令运行结果: USE E:ZHAOXUANZYDA 姓名 = 李力萍 ? 姓名 & 显示ZYDA.DBF 的第一条记录的姓名
11、? M-姓名 & 显示 李力萍, 33函数,Foxpro 为用户提供了十类函数。各类函数绝大多数都是以函数名 开头,后面紧跟着(),只有&函数除外。 学习函数应注意:,1函数名 2. 函数格式 3参数的个数及类型 4. 函数值的类型,331 数值运算函数,例1 写出命令运行结果:? sqrt(4),sqrt(0),sqrt(57.6*14.3) ? SQRT(16),MOD(17,5) ? MAX(1123,456,3322, 64)? MIN(1123,456,3322, 4),格式: SQRT() P26 MOD(,) P27 MAX(,)P27 MIN(,)P28,332 字符处理函数
12、格式: SUBS(/,) P28 功能:在或数据库当前记录的中从第m个字符开始截取n个字符,形成一个新的字符串。省略n时, 新的字符串从第m个字符开始到最后一个字符. 函数值为C型。 例2 写出命令运行结果: ? SUBS(鞍山师范学院,1,4) ? SUBS(鞍山师范学院,5),格式:LEN(/) P30 功能:求出或数据库当前记录的中字符的个数. 函数值为N型。 例3: ?LEN( ASADFG)?LEN( ASADFG)+10,333 时间、日期函数 格式: YEAR() P35 功能: 求出年的数值, 函数值的形式为:YYYY. 函数值为N型。 例4 写出命令运行结果:? YEAR(9
13、9/12/23)? YEAR(99/12/23+80)? YEAR(2003/12/23),334转换函数 格式: DTOS() P37 功能: 将转换成C型数据, 函数值的形式为:YYYYMMDD. 函数值为C型。 例5: ? 这天是:+DTOS(2003/12/23),335测试函数 P39 格式:RECNO(/) 功能: 测试数据库文件的当前记录号。函数值为N型。 例6: USE ZYDA ?RECNO() 336环境函数 格式: ROW() ,COL() P45 功能:返回光标当前行、列的值。 例7 clear?k? col(),ROw(),34 表达式 1.表达式: 是用运算符、小括
14、号将常量、变量和函数连接起来的式子。P50 2.按照运算结果的数据类型,表达式可分为: P50 字符表达式、数值表达式、逻辑表达式和日期表达式。 3.按照运算符表达式可分为:字符表达式、数值表达式、关系表达式、逻辑表达式和日期表达式。 4.注意: 表达式中没有大括号和中括号,一律使用小括号。,341 计算和显示命令 命令格式1:? 命令格式2:? 功能:计算并显示各表达式的值。,说明:1、省略任选项,输出一空行。 2、中的各项用逗号分隔。 3、?在下一行显示, ?从光标当前位置显示。 例1 ?我在鞍山 ?工作 ?我在鞍山工作,342运算符 算术运算符 P46 (1)运算符:+、- (正负号)、
15、或*、*、/、%(取余数)、+、- (2)运算优先级: +、- (正负号) 或* * 、/ % +、-,高 低 (3)运算对象:N型常量、变量和函数 (4)运算结果类型:N 例2:判断下列输出命令是否正确( 、)?若正确写出结果。 X=5 STORE 2 TO A,B,C ?27 % X ? 42+(4*7-2) %3 ? X= + 5 ?-B+SQRT(B2-4*A*C)/(2*A) ? 52+SQRT(16),2. 字符串运算符 P46 (1)运算符:+、- (2)运算对象:C型常量、变量和函数 (3)运算结果类型:C (4)功能: 将两个字符串连接,生成一个新的字符串. (5)说明: 使
16、用减号时,如果减号前面的字符串有空格, 则将前面字符串的空格移到新字符串的最后。 使用加号时,不须任何处理,直接连接。,例3:判断下列输出命令是否正确( 、)?若正确写出结果。 ?ab+efg ? ab +efg ? ab -efg ? 今天是:+ 2003.03.05 ?LEN( ab +efg) ?LEN( ab -efg) ? 今天是:+80,3.日期运算符 P47 (1)运算符:+、- (2)运算对象:D型常量、变量、函数、整数 (3)运算结果类型:D或N (4)功能: 两个日期相加,得到一个新的日期, 两个日期相减得到 一个数值,表示两个日期相差的天数。,例4:判断下列输出命令是否正
17、确( 、)?若正确写出结果。 ?99/10/02+4 ?02/10/30-02/10/15 ?今天是:+2003.03.05 ?今天是:+DTOS(2003.03.05),4. 关系运算符 P47(1)运算符: 、=、或 # 或 !=、=、=、$ (2)运算对象:除 $ 外,N、C、D、L型数据,并且只能相同类型数据进行比较。$ 只能用于C型数据进行比较。 (3)运算结果类型:L型 (4)说明:N型数据按大小进行比较。 (5)字符数据按其ASCII码大小进行比较。 (6) 汉字按机内码大小进行比较. 即: 一级汉字按拼音顺序排列, 二级汉字按部首顺序排列.例5 王刘 因为: wang liu
18、(7)D型数据按日期在前为小, 日期在后为大. 例6 02/10/30 02/10/15 (8)L型数据进行比较时 .T. .F.,例7:判断下列输出命令是否正确( 、)?若正确写出结果。 ? Asdf as ? 3488 98 ,3488 98 ? 02/10/30 02/10/15? ASDFG 567? 12+4=16? 16=12+4 ?.T. .F. ?王立红 刘林,(9)使用 $ 时,当左边字符串包含于右边字符串时,结果为.T. ,否则为 .F. 例8:?学院 $ 师范学院 ?师范学院 $ 学院 (10)“=”与“= =” 的区别: 使用“=”比较时,受SET EXACT ON/O
19、FF 的影响。 当SET EXACT ON时,只有左右两边相同,结果为真,(字符串尾部的空格不影响结果)否则结果为假。 当SET EXACT OFF时,只要等号右边的字符串是左边字符串的子串且是从第一个字符开始,结果就为真。使用、=、或 # 或 !=、=也符合这一规定。 使用“= =”比较时,不受SET EXACT ON/OFF的影响,只有左右两边相同,结果为真,否则结果为假。,例9 SET EXACT ON ?师范学院= 师范 .F. ?师范学院= 师范 .F. SET EXACT OFF ?师范学院= 师范 .T. ?师范学院= 师范 .F. ?asd +fg=asd fg .T. ?as
20、d - fg=asd fg .F.,5逻辑运算符 (1)运算符 : .NOT. 或NOT或 ! .AND. 或 AND .OR. 或 OR (2)运算对象:L型数据 (3)运算结果类型:L型 (4)逻辑运算的优先级 .NOT. 或NOT或 ! .AND. 或 AND .OR. 或 OR高 低 (5)逻辑运算 P50例10:? 23”de”,3.4.3运算优先级 1( ) 最高 2其次是算术运算符、字符串运算符和日期运算符3再其次是关系运算符 4逻辑运算符最低 例11 写出命令运行结果: ? 99.05.26-99.05.06= 20 and apoi21 or 23 %4 8) USE ZYDA LIST FOR 性别=男 AND ! 婚否 LIST FOR 性别=男 AND NOT 婚否 LIST FOR 性别=男 AND ! 婚否 AND奖金200,小结: 一、常量的类型(C、N、L、D)及表示方法。 二、内存变量的类型(C、N、L、D、S) 三、函数 1函数名 2. 函数格式 3参数的个数及类型 4. 函数值的类型 四、表达式 1.运算符使用的优先级 2.各种运算符使用的优先级 作业: P51- P53 3.1 、3.2中的1-4 、3.3,更多资源http:/