1、第03章 数据类型常量与变量 表达式函数 第三章 数据类型: 字符型 (C) 2字节(中文字符)1字节(其他) & 占60%80% 数值型 (N) 20字节(最多) & 小数点、正负号占1字节 日期型 (D) 8字节 逻辑型 (L) 1字节 整型 (I) 4字节 备注型 (M) 4字节 & 实际数据存放在与表文件同名的备注文件.fpt中 通用型 (G) 4字节 & 实际数据存放在与表文件同名的备注文件.fpt中例1:在数据表中,逻辑型、日期型和备注型字段的宽度分别被系统定义为: A)3,8,10 B)1,6,10 C)1,8,任意 D)1,8,4例2:一个数据表文件的数值型字段要求保留5位小数
2、,那么它的宽度最少应当定义成: A)5位 B)6位 C)7位 D)8位 常量: 字符型常量: Thiss right! & 双撇号410075 & 单撇号教授 & 方括号 数值型常量: 日期型常量:2009-02-25 逻辑型常量:.T.F.t.f.Y. .N.y.n.例1:下列数据中为常量的是: A)02/18/99 B)T C).N. D)TOP 变量命名规则: 字母、汉字、下划线和数字,一般建议不采用汉字命名; 命名以字母或下划线开头,可使用1128个字符; 避免使用 Visual FoxPro的保留字;例1:下列变量名中合法的是: A)NEW.DBF B)1999J C)CLASS_2
3、 D)KSPASS例2:下列字符中,非法变量名是: A)A_SK97 B)PS:12 C)4_AK D)性别 字段变量:自由表的字段名可使用110个字符,不可包含空格,其它与上述规则相同; 内存变量:a=2008-08-08 & 单个内存变量赋值b=北京store奥运会to bj,ayh & 多个内存变量赋值? a & 内存变量的显示输出(换行)? b,ayh & 内存变量的显示输出(不换行)c1=3c2=c1+2c3=c2+3? c1,c2,c3? c2=c1+2? c2=c3 数组变量:dimension x(2,3)、declare y(10)例1:在命令窗口输入命令:Dime x(2,
4、3)Store goodbye to x(1,2)Store 99 to x(2,3)Store .t. to x(1,1)Store 数组的赋值 to x(2,1)List memory like x* 系统变量:下划线_开头 表达式:算术运算 字符串运算 日期和时间运算 关系运算 逻辑运算? 15%4#3.OR.abc=ab AND.t.!=.f.? 15%4#3.OR.abc=ab AND.t.!=.f. 算术表达式:() * 或 * / % + - 字符表达式:+-例1:AA= 全国计算机等级考试BB= 九八CC= 一? AA? BB+ 年第+CC+ 次考试执行程序后,屏幕显示A)全国
5、计算机等级考试九八年第一次考试B)全国计算机等级考试 九八年第一次考试C)全国计算机等级考试BB年第CC次考试D)全国计算机等级考试 BB年第CC次考试例2:STORE 学习 TO ASTORE 计算机TO B? A+B? A-B? 爱$A? 爱$B? 1+2? 1+2? 1+2 日期表达式:? 2001/08/20)-2000/03/15? 2001/08/20 23:45:30)-2001/08/20 10:30:0? 2000/03/15)+523? 2001/08/20 23:30:30)+1800 关系表达式: = = = = 或#或!= 逻辑表达式:NOT或.NOT.或! AND或
6、.AND. OR或.OR. (参看教材P53例3.6) 数值函数:1. ? abs(-12.34) & 绝对值函数2. ? sqrt(25*4) & 平方根函数3. ? exp(2*2) & 指数函数4. ? log(54.60) & 对数函数5. ? int(-4.68) & 取整函数6. ?mod(25,7) & 余数函数7. ? round(123.45678,3) & 四舍五入函数? round(123.45678,-2) & 四舍五入函数8. ? max(5*4,60/2) & 最大值函数? min(5*4,60/2) & 最小值函数9. ? pi( ) & 函数 字符函数:1. m
7、=245+sqrt(4) & 宏代换函数? m,&m2. ? len(how are you) & 字符串长度函数3. ? at(a , bcde”) & 字符串位置函数? at(a, abcde )4. ? substr(hardwork,3,4) & 取子串函数? substr(二级计算机,5,4)? left(hardwork ,3)? left(二级计算机,4)? right(二级计算机,4)f=我爱我家? right(f,4)+ substr(f,3,2)+ left(f,2)5. ltrim( )、rtrim( )、alltrim( ) & 删除字符串前后空格函数6. ? a+sp
8、ace(3)+ b & 生成空格函数 日期函数: 转换函数:1. ? ctod(02/17/64) & 字符串转换成日期函数2. ? dtoc(date() & 日期转换成字符串函数3. ? lower(aabbcc) & 大写字母转换成小写字母函数4. ? upper(aabbcc) & 小写字母转换成大写字母函数5. ? str(123.4567,6,2) & 数值转换成字符串函数6. ? val(123.4567) & 字符串转换成数值函数 测试函数:1. ? type(123.4567) & 数据类型测试函数2. bof( ) & 表头测试函数3. eof( ) & 表尾测试函数4.
9、recno( ) & 记录号测试函数5. reccount(工作区号别名) & 记录个数测试函数6. found( ) & 查找是否成功测试函数7. between( ) & 判断值介于两个值之间的函数gz=375? between(gz,260,650)8. xb= 女 iif(xb= 男,1, iif(xb= 女,2,3) & 条件函数第4章 表的基本操作8 打开表use 表文件名8 关闭表useclose table all8 显示表list fields for display all8 浏览表browse8 显示表结构list structre8 修改表结构modify struct
10、ure8 成批替换修改数据replacewithfor(all)8 表记录指针定位绝对定位 go 记录号go topgo bottom相对定位 skip 记录数查询定位 locateforcontinue8 插入记录insert blank before (当前记录前插入)insert blank (当前记录后插入)8 追加记录append blank (表末尾增加空行)8 逻辑删除记录delete for8 取消删除标志recall for8 物理删除记录pack8 删除全部记录zap8 复制表结构copy structuer to 新文件名 fields 字段名1, 字段名28 复制表co
11、py to 新文件名 fields 字段名1, 字段名2for排序与索引物理排序SORTTO新文件名ON排序字段/ADFIELDS字段1,字段2FOR例4.12就学生表,显示入学成绩最高的5名学生的记录USE 学生SORT ON 入学成绩/D TO 学生1USE 学生1LIST NEXT 5索引排序(逻辑排序)单索引:INDEXON索引表达式TO索引名FOR注:*.idx,作为临时索引使用,每个索引排序都有一个索引文件,不随表文件一同打开。例4.13用建立单索引文件的方法完成例4.12的操作USE 学生INDEX ON -入学成绩 TO rxcjLIST NEXT 5复合索引:INDEXON索
12、引表达式TAG索引名FOR ascedesc candidateunique 1)asce升序,desc降序2)cand候选索引,惟一索引注:*.cdx,文件名与主文件名相同,随表文件同时打开和更新,每个索引都包含于*.cdx中candidateunique例4.14就学生表,建立复合索引文件完成操作1)按学号降序排列(注意“”和DESC的区别)2)先按性别升序,性别相同再按入学成绩降序排列USE 学生INDEX ON 学号 TAG xhLISTINDEX ON 性别STR(1000-入学成绩) TAG xbcjLIST索引的四种类型8 主索引:不允许重复值,每张表只能建一个8 候选索引:不允
13、许重复值,每张表能建多个8 惟一索引:索引字段值可以重复,但重复值中只有惟一一个值出现8 普通索引:可以重复使用索引文件单索引同时打开:USE表文件名INDEX索引名USE 学生 INDEX rxcjLIST打开表后再打开:SETINDEXTO索引名USE 学生LISTSETINDEXTO rxcjLIST关闭:SETINDEXTO删除:DELETEFILE索引名复合索引确定主控索引:SETORDERTO索引名索引序号取消索引:SETORDERTO例4.15use 学生listset order to xhlistset order to 2listset order tolist注:区别理解
14、GO 1和GO TOP,GO 10和GO BOTTOM的不同,SKIP移动方式例4.16当有索引文件时,分析记录指针的移动规律use 学生index on 出生日期 to csrqgo 6? recn(),姓名skip? recn(),姓名删除:DELETETAGALL索引名索引查询定位SEEK表达式(查询第一条)SKIP(查询下一条)例4.17就学生表查询1984年9月7日出生的学生的记录use 学生index on 出生日期 to csrqseek 1984/9/7index on 姓名 to xmseek李dispskipdisp注:set exact on和set exact off统
15、计与计算记录个数:COUNTFORTO内存变量例4.18对学生表,分别统计男女学生的人数use 学生count for 性别=女 to wcount for 性别=男 to m? w,m 和与平均值:SUMAVERAGEFORTO内存变量例4.19对学生表,求全体学生的平均年龄use 学生list year(date()-year(出生日期)aver year(date()-year(出生日期) to y?y统计函数的计算:CALCFORTO内存变量8 AVG( ):数值表达式平均值8 CNT( ):个数8 MAX( ): 8 MIN( ):8 SUM( )例4.20就学生表,求女同学的平均入
16、学成绩,最高入学成绩,最低入学成绩use 学生calc avg(入学成绩),max(入学成绩),min(入学成绩) to cj1,cj2,cj3 for 性别=女? cj1,cj2,cj3 分类汇总:TOTALON TOFIELDSFOR注:先索引排序例4.21对学生表,按籍贯对入学成绩进行汇总use 学生index on 籍贯 tag jgtotal on 籍贯 to flhz fields 入学成绩 &此表只有入学成绩为N型可省略use flhzlist 籍贯,入学成绩多表操作工作区概念:可以同时打开多张表,每个工作区打开一张工作区号:132767别名:AJ&(110)use 学生 ali
17、as stu in 1use 教师 alias tea in B工作区选择:select 0表的关联SETRELATIONTOINTOsele 2use xsqkinde on 学号 to xhsele 1use cjset rela to 学号 into blist b.姓名,a.数学sele 1dispsele 2disp第5章 数据库8 用命令建立数据库:create database 文件名 用设计器建立数据库:8 用命令向数据库添加自由表:add table 自由表名 用数据库设计器添加自由表:8 用命令为数据库表建立索引:index on 索引表达式 tagto 索引名 for 条件 uniquecandidate 用表设计器为数据库表建立索引:8 建立表间永久联系8 设置参照完整性: 级联:父表更改子表同时更改 限制:父表更改子表有相应记录时禁止更改 忽略:两表无关,任意操作8 数据库表与自由表的不同属性
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1