第03章 数据类型常量与变量 表达式函数.docx
《第03章 数据类型常量与变量 表达式函数.docx》由会员分享,可在线阅读,更多相关《第03章 数据类型常量与变量 表达式函数.docx(14页珍藏版)》请在冰豆网上搜索。
第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,10B)1,6,10C)1,8,任意D)1,8,4
例2:
一个数据表文件的数值型字段要求保留5位小数,那么它的宽度最少应当定义成:
A)5位B)6位C)7位D)8位
●常量:
字符型常量:
"This′sright!
"&&双撇号
'410075'&&单撇号
[教授]&&方括号
数值型常量:
日期型常量:
{^2009-02-25}
逻辑型常量:
.T. .F. .t. .f. .Y. .N. .y. .n.
例1:
下列数据中为常量的是:
A)02/18/99B)TC).N.D)’TOP’
●变量命名规则:
字母、汉字、下划线和数字,一般建议不采用汉字命名;
命名以字母或下划线开头,可使用1~128个字符;
避免使用VisualFoxPro的保留字;
例1:
下列变量名中合法的是:
A)NEW.DBFB)1999JC)CLASS_2D)KS@PASS
例2:
下列字符中,非法变量名是:
A)A_SK97B)PS:
12C)4_AKD)性别
●字段变量:
自由表的字段名可使用1~10个字符,不可包含空格,
其它与上述规则相同;
●内存变量:
a={^2008-08-08}&&单个内存变量赋值
b=[北京]
store"奥运会"tobj,ayh&&多个内存变量赋值
?
a&&内存变量的显示输出(换行)
?
?
b,ayh&&内存变量的显示输出(不换行)
c1=3
c2=c1+2
c3=c2+3
?
c1,c2,c3
?
c2=c1+2
?
c2=c3
●数组变量:
dimensionx(2,3)、declarey(10)
例1:
在命令窗口输入命令:
Dimex(2,3)
Store"goodbye"tox(1,2)
Store99tox(2,3)
Store.t.tox(1,1)
Store"数组的赋值"tox(2,1)
Listmemorylikex*
●系统变量:
下划线"_"开头
●表达式:
算术运算→字符串运算→日期和时间运算→关系运算→逻辑运算
?
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)全国计算机等级考试九八年第一次考试
B)全国计算机等级考试
九八年第一次考试
C)全国计算机等级考试BB年第CC次考试
D)全国计算机等级考试
BB年第CC次考试
例2:
STORE'学习'TOA
STORE'计算机'TOB
?
A+B
?
A-B
?
‘爱’$A
?
‘爱’$B
?
1+2
?
‘1’+‘2’
?
‘1’+2
日期表达式:
?
{^2001/08/20)-{^2000/03/15}
?
{^2001/08/2023:
45:
30)-{^2001/08/2010:
30:
0}
?
{^2000/03/15)+523
?
{^2001/08/2023:
30:
30)+1800
关系表达式:
<<=>>====<>或#或!
=
逻辑表达式:
NOT或.NOT.或!
→AND或.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="245+sqrt(4)"&&宏代换函数
?
m,&m
2.?
len("howareyou")&&字符串长度函数
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"+space(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.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关闭表 use closetableall
8显示表 listfieldsfor
displayall
8浏览表 browse
8显示表结构 liststructre
8修改表结构 modifystructure
8成批替换修改数据 replace…with…for…(all)
8表记录指针定位
绝对定位go记录号
gotop
gobottom
相对定位skip±记录数
查询定位locate…for<条件>
continue
8插入记录 insertblankbefore(当前记录前插入)
insertblank(当前记录后插入)
8追加记录 appendblank(表末尾增加空行)
8逻辑删除记录 deletefor
8取消删除标志 recallfor
8物理删除记录 pack
8删除全部记录 zap
8复制表结构 copystructuerto新文件名fields字段名1,字段名2……
8复制表 copyto新文件名fields字段名1,字段名2……for
排序与索引
物理排序
SORT TO 新文件名ON 排序字段/A︱D FIELDS 字段1,字段2……FOR<条件>
例4.12 就学生表,显示入学成绩最高的5名学生的记录
USE学生
SORTON入学成绩/DTO学生1
USE学生1
LISTNEXT5
索引排序(逻辑排序)
单索引:
INDEX ON 索引表达式 TO 索引名 FOR<条件>
注:
*.idx,作为临时索引使用,每个索引排序都有一个索引文件,不随表文件一同打开。
例4.13 用建立单索引文件的方法完成例4.12的操作
USE学生
INDEXON-入学成绩TOrxcj
LISTNEXT5
复合索引:
INDEX ON 索引表达式 TAG 索引名 FOR<条件>asce︱desccandidate︱unique
1)asce升序,desc降序
2)cand候选索引,惟一索引
注:
*.cdx,文件名与主文件名相同,随表文件同时打开和更新,每个索引都包含于*.cdx中
candidate︱unique
例4.14 就学生表,建立复合索引文件完成操作
1)按学号降序排列 (注意“-”和DESC的区别)
2)先按性别升序,性别相同再按入学成绩降序排列
USE学生
INDEXON学号TAGxh
LIST
INDEXON性别+STR(1000-入学成绩)TAGxbcj
LIST
索引的四种类型
8主索引:
不允许重复值,每张表只能建一个
8候选索引:
不允许重复值,每张表能建多个
8惟一索引:
索引字段值可以重复,但重复值中只有惟一一个值出现
8普通索引:
可以重复
使用索引文件
单索引
同时打开:
USE 表文件名 INDEX 索引名
USE学生INDEXrxcj
LIST
打开表后再打开:
SET INDEX TO 索引名
USE学生
LIST
SET INDEX TO rxcj
LIST
关闭:
SET INDEX TO
删除:
DELETE FILE 索引名
复合索引
确定主控索引:
SET ORDER TO 索引名︱索引序号
取消索引:
SET ORDER TO
例4.15
use学生
list
setordertoxh
list
setorderto2
list
setorderto
list
注:
区别理解GO1和GOTOP,GO10和GOBOTTOM的不同,SKIP移动方式
例4.16 当有索引文件时,分析记录指针的移动规律
use学生
indexon出生日期tocsrq
go6
?
recn(),姓名
skip
?
recn(),姓名
删除:
DELETE TAG ALL︱索引名
索引查询定位
SEEK 表达式 (查询第一条)
SKIP (查询下一条)
例4.17 就学生表查询1984年9月7日出生的学生的记录
use学生
indexon出生日期tocsrq
seek{^1984/9/7}
indexon姓名toxm
seek"李"
disp
skip
disp
注:
setexacton和setexactoff
统计与计算
记录个数:
COUNT FOR<条件>TO 内存变量
例4.18 对学生表,分别统计男女学生的人数
use学生
countfor性别="女"tow
countfor性别="男"tom
?
w,m
和与平均值:
SUM︱AVERAGE<表达式> FOR<条件>TO 内存变量
例4.19 对学生表,求全体学生的平均年龄
use学生
listyear(date())-year(出生日期)
averyear(date())-year(出生日期)toy
?
y
统计函数的计算:
CALC<函数表达式> FOR<条件>TO 内存变量
8AVG():
数值表达式平均值
8CNT():
个数
8MAX():
8MIN():
8SUM()
例4.20 就学生表,求女同学的平均入学成绩,最高入学成绩,最低入学成绩
use学生
calcavg(入学成绩),max(入学成绩),min(入学成绩)tocj1,cj2,cj3for性别="女"
?
cj1,cj2,cj3
分类汇总:
TOTAL ON <字段> TO <文件名>FIELDSFOR<条件>
注:
先索引排序
例4.21 对学生表,按籍贯对入学成绩进行汇总
use学生
indexon籍贯tagjg
totalon籍贯toflhzfields入学成绩&&此表只有入学成绩为N型可省略
useflhz
list籍贯,入学成绩
多表操作
工作区概念:
可以同时打开多张表,每个工作区打开一张
工作区号:
1~32767
别名:
A~J &&(1~10)
use学生aliasstuin1
use教师aliasteainB
工作区选择:
select<工作区号>︱<别名号>︱0
表的关联
SET RELATION TO<关联表达式>INTO <工作区号>︱<别名>
sele2
usexsqk
indeon学号toxh
sele1
usecj
setrelato学号intob
listb.姓名,a.数学
sele1
disp
sele2
disp
第5章数据库
8用命令建立数据库:
createdatabase文件名
✓用设计器建立数据库:
8用命令向数据库添加自由表:
addtable自由表名
✓用数据库设计器添加自由表:
8用命令为数据库表建立索引:
indexon索引表达式tag︱to索引名for条件unique︱candidate
✓用表设计器为数据库表建立索引:
8建立表间永久联系
8设置参照完整性:
✓级联:
父表更改→子表同时更改
✓限制:
父表更改→子表有相应记录时禁止更改
✓忽略:
两表无关,任意操作
8数据库表与自由表的不同属性