1 / 46

如何学习 FoxPro 数据库语言

如何学习 FoxPro 数据库语言. DELETE [<scope>] [FOR <expL1>] [WHILE<expL2>] delete all for 姓名 =“ 张三” SORT TO <file> ON <field1> [/A | /D] [/C] [, <field2> [/A | /D] [/C] ...] [ASCENDING | DESCENDING][<scope>] [FOR <expL1>] [WHILE <expL2>][FIELDS <field list>] sort to x_m_1 on 姓名 for 成绩 >=60.

pembroke
Download Presentation

如何学习 FoxPro 数据库语言

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 如何学习FoxPro数据库语言 DELETE [<scope>] [FOR <expL1>] [WHILE<expL2>]delete all for 姓名=“张三” SORT TO <file> ON <field1> [/A | /D] [/C] [, <field2> [/A | /D] [/C] ...] [ASCENDING | DESCENDING][<scope>] [FOR <expL1>] [WHILE <expL2>][FIELDS <field list>]sort to x_m_1 on 姓名 for 成绩>=60 Use d:\wy020115\student Accept “姓名:” to xm Locate for 姓名=xm Do while not eof() display continue enddo use • 首先要掌握语言的基本符号。如英语的26个大小写字母;汉语的汉字;还要掌握一些运算符号,如:+- * / % ^ • 其次要掌握命令、短语、函数、及表达式。如list delete for all ;{98/11/15}-15;left(姓名,2)+‘东东’ 特殊地:5.28 “abcde” .t. {98/12/21} x_y 姓名 k123 • 再次是要掌握符合语法的语句( 单命令)。如: • 最后是按一定结构将若干个句子组合成程序(批命令)。包括:顺序、选择、循环。如:

  2. 第三章 常量、变量、函数和表达式 • 常量 • 变量 • 函数 • 表达式

  3. 常量:值不变的量 • 数值常量 • 字符串常量 • 日期常量 • 逻辑常量 复习题

  4. 一、请指出以下常量的类型 (1)“电脑”  (2)128(3).T. (4) “128” (5).n. (6)[this] (7){98.08.18} (8)1.234E+8 二、请指出不合法的字符串常量 (1)“Y/N”(2){[ABCD]} (3)[‘ABCD’] (4)[[AB]CD] (5)[{ABCD}]

  5. 变量:值可以改变的量  字段变量:是数据库中已经定义的变量。 内存变量:是独立于数据库文件的临时    存储单元,用来存放数据库     操作过程中或程序运行过程     中所要临时保存的数据。

  6. 内存变量的命名规则 内存变量的类型 内存变量的赋值

  7. 命名规则:可以以字母、汉字或下划     线开头,可由字母、汉字     数字和下划线组成,最长     不超过10个字符。 例1:Class_2,name,A1,姓名 例2:3AB,CD*, Sec-Class

  8. 类型:字符型(C)、数值型(N)、日期    型(D)、逻辑型(L)、屏幕型(D) 注:前四种类型内存变量可以进行各  种运算,屏幕型内存变量不能进  行运算,只能用于保存和恢复屏  幕画面。

  9. 命令格式1:STORE <表达式> TO <内存变量表> 命令格式2:<内存变量>=<表达式> 功能:首先计算出表达式的值,再将该值赋给    内存变量。 例如:name=‘张明’ n=3 日期={98.08.10} true=.T. store 20 to n1,n2

  10. 函数: • 数值运算函数 • 字符处理函数 • 时间日期函数 • 转换函数

  11. 1、求绝对值函数 格式:ABS(<数值表达式>) 功能:求<数值表达式>的绝对值 2、平方根函数 格式:SQRT(<数值表达式>) 功能:求<数值表达式>的平方根 3、取整函数 格式:INT(<数值表达式>) 功能:截去小数部分,保留整数部分

  12. 4、四舍五入函数 格式:ROUND(<数值表达式>,n) 功能:根据n的值进行四舍五入 5、求模函数 格式:MOD(<数值表达式1>,<数值表达式2>) 功能:求出表达式1除以表达式2的余数 6、取大值函数 格式:MAX(<表达式1>,<表达式2>[,<表达式3>…]) 功能:各表达式中的最大值

  13. 1、求子串函数 格式:SUBSTR(<字符表达式>,<m>[,<n>]) 功能:在字符表达式中,从第m个字符开始截取n个 字符,形成一个新的字符串.函数值为C型. 2、求左子串函数 格式:LEFT(<字符表达式>,<n>) 功能:从字符表达式的左端开始截取n个字符,形 成一个新的字符串.函数值为C型. 3、求字符串长度函数 格式:LEN(<字符表达式>) 功能:求字符表达式中的字符个数.函数值为N型

  14. 1、时间函数 格式:TIME( ) 功能:给出当前的系统时间.函数值是C型. 2、日期函数 格式:DATE( ) 功能:给出当前的系统日期.函数值是D型. 3、求年函数 格式:YEAR(<日期表达式>) 功能:求表达式中年的数值.函数值是N型.

  15. 1、大写字母转换成小写字母 格式:LOWER(<字符表达式>) 功能:将字符表达式中所有大写字母 换成小写字母. 函数值是C型. 2、小写字母转换成大写字母 格式:UPPER(<字符表达式>) 功能:将字符表达式中所有小写字母. 转换成大写字母. 函数值是C型.

  16. 表达式:由运算符和括号将常量、变量和 函数连接起来的有意义 的式子。 表达式的类型:数值表达式 字符表达式 日期表达式 关系表达式 逻辑表达式

  17. 计算和显示命令: 格式1:?[<表达式表>] 功能:计算出各个表达式的值,并在下一行 依次显示出来。 格式2:??<表达式表> 功能:计算出各个表达式的值,并从光标当 前位置开始显示出来。 说明:表达式表可包含多个表达式,各个表 达式之间用逗号分隔。

  18. 数值表达式:是由数值型常数、变量、函 数和算术运算符等组成的表 达式,结果也是数值型。 算术运算符:P46 例1:? 10 +5*2,(5-3)*2+2^2 例2:? ABS(-12)+10

  19. 字符表达式:是由字符型常数、变量、函 数和 字符运算符组成。结果 仍然是字符型。 字符串运算符有两种: + 连接运算符:把两个字符串连接起来, 形成一个新的字符串。 -压缩空格运算符:连接前后两个字符串, 并将前字符串尾部的空格移到合并后的 新字符串尾部。

  20. 例1:?“ABC ” +“ DEF” 例2:?“北大”+“方正” 例3:?“ABC ”- “ DEF” 例4:“AB ”- “CD” + “EF” 例5:“AB”- “ CD” - “EF” 例6:“AB ”- “CD”- “EF”+ “ !”

  21. 日期表达式:由日期运算符和日期常量、变 量、函数以及数值型数据组成。 结果为日期或数值。 日期运算符: + 加号;用于一个日期与一个整数相加,得 到一个新的日期。 -减号;用于一个日期减去一个整数,得到 一个新的日期;还可用于两个日期相减得 到相差的天数。

  22. 例1:?{98.08.12}+3 例2:?{98.08.12}-3 例3:?{99.10.15}-{99.10.10}

  23. 关系表达式:由关系运算符将相同类型的 数据连接起来的式子。运算 结果是逻辑值.T.或.F.。 关系运算符:P47 例1:? SQRT(2*8)>=0,{98.08.12}>{99.08.12} 例2:? 5!=3,“EFG”<“KHD”,“大”>“小” 例3:a=.y. b=.n. ?a>b,.t.<.f.

  24. 查子串运算符$ 格式:<字符串1>$<字符串2> 功能:在字符串2中查找字符串1,若找到, 值为.T.,否则为.F.。 例: ?‘AB’$‘ABC’, ‘AB’$ ‘DABE’, ‘AB’$ ‘A’ 例: ?‘北大’$‘北大方正’

  25. “=”与“==”在比较字符型数据时的区别 ● “==”只有当两个字符串完全相同时(包括尾 部的空格),结果为.T.,否则为.F.。 运算结果不受SET EXACT ON/OFF的影响。 ● “=” 运算结果受SET EXACT ON/OFF的影 响。

  26. 逻辑表达式:由逻辑常数、变量、函数和逻辑运逻辑表达式:由逻辑常数、变量、函数和逻辑运 算符组成的表达式。结果为逻辑值 逻辑运算符:逻辑非、逻辑与、逻辑或

  27. 例:STORE .T. TO x,y STORE .F. TO a ?X AND y,x AND a,y OR a ? NOT a,x AND y AND NOT a

  28. 运算优先级: 1、括号优先 2、算术运算、字符串运算、日期运算 3、关系运算 4、逻辑运算 例如: ? 2<3.OR.“AB”+ “CD”>“EF”.and.4+2=6

  29. 例. 写出命令运行结果: USE E:\ZHAOXUAN\ZYDA 姓名 = ‘李力萍’ ? 姓名 && 显示ZYDA.DBF 的第一条记录的姓名 ?M->姓名 && 显示 李力萍 § 3.3函数 Foxpro 为用户提供了十类函数。各类函数绝大多数都是以函数名 开头,后面紧跟着(),只有&函数除外。 学习函数应注意: 1.函数名 2. 函数格式 3.参数的个数及类型 4. 函数值的类型

  30. 3.3.1 数值运算函数 格式: SQRT(<N型表达式>)P26 MOD(<N型式1>,<N型式2>) P27 MAX(<N型式1>,<N型式2>,[<N型式3>……])P27 MIN(<N型式1>,<N型式2>,[<N型式3>……])P28 例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)

  31. 3.3.2 字符处理函数 格式: SUBS(<C型表达式>/<备注字段>,<起始位置m>[,<长度n>]) P28 功能:在< C型表达式>或数据库当前记录的<备注字段>中从第m个字符开始截取n个字符,形成一个新的字符串。省略n时, 新的字符串从第m个字符开始到最后一个字符. 函数值为C型。 例2 写出命令运行结果: ? SUBS(‘鞍山师范学院’,1,4) ? SUBS(‘鞍山师范学院’,5) 格式:LEN(<C型表达式>/<备注字段>) P30 功能:求出< C型表达式>或数据库当前记录的<备注字段>中字符的个数. 函数值为N型。 例3: ?LEN( ’ASADFG’) ?LEN( ’ASADFG’)+10

  32. 3.3.3 时间、日期函数 格式: YEAR(<D型表达式>)P35 功能:求出年的数值, 函数值的形式为:YYYY. 函数值为N型。 例4 写出命令运行结果: ? YEAR({99/12/23}) ? YEAR({99/12/23}+80) ? YEAR({2003/12/23}) 3.3.4转换函数 格式: DTOS(<D型表达式>)P37 功能:将<D型表达式>转换成C型数据, 函数值的形式为:YYYYMMDD. 函数值为C型。 例5: ? ‘这天是:’+DTOS({2003/12/23})

  33. 3.3.5测试函数 P39 格式:RECNO([<工作区号>/<别名>]) 功能: 测试数据库文件的当前记录号。函数值为N型。 例6: USE ZYDA ?RECNO() 3.3.6环境函数 格式:ROW() ,COL()P45 功能:返回光标当前行、列的值。 例7 clear ??'k' ?? col(),ROw()

  34. §3.4 表达式 1.表达式: 是用运算符、小括号将常量、变量和函数连接起来的式子。P50 2.按照运算结果的数据类型,表达式可分为: P50 字符表达式、数值表达式、逻辑表达式和日期表达式。 3.按照运算符表达式可分为: 字符表达式、数值表达式、关系表达式、逻辑表达式和日期表达式。 4.注意: 表达式中没有大括号和中括号,一律使用小括号。 3.4.1 计算和显示命令 命令格式1:?[<表达式表>] 命令格式2:??[<表达式表>] 功能:计算并显示各表达式的值。

  35. 说明:1、省略任选项,输出一空行。 2、<表达式表>中的各项用逗号分隔。 3、?[<表达式表>]在下一行显示, ??[<表达式表>]从光标当前位置显示。 例1 ?’我在鞍山’ ??’工作’ ?’我在鞍山工作’ • 3.4.2运算符 • 算术运算符 P46 • (1)运算符:+、- (正负号)、^或**、*、/、%(取余数)、+、- • (2)运算优先级: • +、- (正负号) ^或** * 、/ % +、-

  36. 高 低 (3)运算对象:N型常量、变量和函数 (4)运算结果类型:N 例2:判断下列输出命令是否正确(√ 、╳)?若正确写出结果。 X=5 STORE 2 TO A,B,C ?27 % X ? 4^2+(4*7-2) %3 ? ’X=’ + 5 ?[-B+SQRT(B^2-4*A*C)]/(2*A) ? 5^2+SQRT(16)

  37. 2. 字符串运算符 P46 (1)运算符:+、- (2)运算对象:C型常量、变量和函数 (3)运算结果类型:C (4)功能: 将两个字符串连接,生成一个新的字符串. (5)说明: ①使用减号时,如果减号前面的字符串有空格, 则将前面字符串的空格移到新字符串的最后。 ②使用加号时,不须任何处理,直接连接。

  38. 例3:判断下列输出命令是否正确(√ 、╳)? 若正确写出结果。 ?’ab’+’efg’ ? ’ab ’+’efg’ ? ’ab ’-’efg’ ? ’今天是:’+ {2003.03.05} ?LEN( ’ab ’+’efg’) ?LEN( ’ab ’-’efg’) ? ’今天是:’+80

  39. 3.日期运算符 P47 (1)运算符:+、- (2)运算对象:D型常量、变量、函数、整数 (3)运算结果类型:D或N (4)功能: 两个日期相加,得到一个新的日期, 两个日期相减得到 一个数值,表示两个日期相差的天数。 例4:判断下列输出命令是否正确(√ 、╳)?若正确写出结果。 ?{99/10/02}+4 ?{02/10/30}-{02/10/15} ?’今天是:’+{2003.03.05} ?’今天是:’+DTOS({2003.03.05})

  40. 4. 关系运算符 P47 (1)运算符: >、>=、<、<=、<>或 # 或 !=、=、==、$ (2)运算对象:除 $ 外,N、C、D、L型数据,并且只能相同类型数据进行比较。$ 只能用于C型数据进行比较。 (3)运算结果类型:L型 (4)说明:N型数据按大小进行比较。 (5)字符数据按其ASCII码大小进行比较。 (6) 汉字按机内码大小进行比较. 即: 一级汉字按拼音顺序排列, 二级汉字按部首顺序排列. 例5 ’王’>’刘’ 因为: ‘wang’> ‘liu’ (7)D型数据按日期在前为小, 日期在后为大. 例6 {02/10/30} > {02/10/15} (8)L型数据进行比较时 .T. > .F.

  41. 例7:判断下列输出命令是否正确(√ 、╳)?若正确写出结果。 ?’ Asdf’ > ’ as’ ? ‘3488’ > ’98’ ,3488 > 98 ? {02/10/30} > {02/10/15} ? ’ASDFG’ > 567 ? 12+4=16 ? 16=12+4 ?.T. > .F. ?‘王立红’ < ’刘林’

  42. (9)使用 $ 时,当左边字符串包含于右边字符串时,结果为.T. ,否则为 .F. 例8:?[学院] $ [师范学院] ?[师范学院] $ [学院] (10)“=”与“= =” 的区别: ①使用“=”比较时,受SET EXACT ON/OFF 的影响。 当SET EXACT ON时,只有左右两边相同,结果为真,(字符串尾部的空格不影响结果)否则结果为假。 当SET EXACT OFF时,只要等号右边的字符串是左边字符串的子串且是从第一个字符开始,结果就为真。使用>、>=、<、<=、<>或 # 或 !=、=也符合这一规定。 ②使用“= =”比较时,不受SET EXACT ON/OFF的影响,只有左右两边相同,结果为真,否则结果为假。

  43. 例9 SET EXACT ON ?[师范学院]= [师范] .F. ?[师范学院]== [师范] .F. SET EXACT OFF ?[师范学院]= [师范] .T. ?[师范学院]== [师范] .F. ?‘asd ’+’fg’==’asd fg’ .T. ?‘asd ’ - ’fg’==’asd fg’ .F.

  44. 5.逻辑运算符 (1)运算符 : ① .NOT. 或NOT或 ! ② .AND. 或 AND ③ .OR. 或 OR (2)运算对象:L型数据 (3)运算结果类型:L型 (4)逻辑运算的优先级 .NOT. 或NOT或 !.AND. 或 AND .OR. 或 OR 高 低 (5)逻辑运算 P50 例10:? 23<45 and ! “ab” >”de”

  45. 3.4.3运算优先级 1.( ) 最高 2.其次是算术运算符、字符串运算符和日期运算符 3.再其次是关系运算符 4.逻辑运算符最低 例11 写出命令运行结果: ? {99.05.26}-{99.05.06}= 20 and ‘apoi’<’bkj’ ? ’ab’$’abcd’ and ( 43>21 or 23 %4 > 8) USE ZYDA LIST FOR 性别=’男’ AND ! 婚否 LIST FOR 性别=’男’ AND NOT 婚否 LIST FOR 性别=’男’ AND ! 婚否 AND奖金>200

  46. 小结: 一、常量的类型(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

More Related