VF总复习资料1.docx
《VF总复习资料1.docx》由会员分享,可在线阅读,更多相关《VF总复习资料1.docx(16页珍藏版)》请在冰豆网上搜索。
VF总复习资料1
VF参考资料
一、基础知识
㈠、1、数据库(DataBase,DB)
2、数据库管理系统(DataBaseManagementsystem,DBMS是核心)
3、数据库系统(DataBasesystem,DBS)
DBS包括DB和DBMS
㈡、数据模型
层次模型、网状模型、关系模型
我们所学习的数据库是属于关系模型,关系模型的实质就是一张二维表。
二维表:
二维表由行和列构成,行表记录或元组,列表字段或属性。
对二维表的基本操作有:
选择:
找出符合条件的记录(即行)
投影:
找出符合条件的字段(即列)
连接:
把多余的连在原有的后面(对两个或两个以上的数据库进行的操作)
二、数据类型:
常用的数据类型有:
数值型(N)25600000000002.56*10122.56E+12
字符型(C)
时期型(D,8)({mm/dd/yy},{^yyyy-mm-dd})
逻辑型(L,1)
货币型(Y,8)表示货币型时前面必须加$符
备注型(M,4)
通用型(G,4)
注:
日期类型的显示格式受到以下语句的影响(VF默认状态下是2位数年份月日年)
1、Setdateto功能:
设置日期的显示格式如:
SetdatetoYMD指以年月日的格式显示日期
MDY:
月日年DMY:
日月年
2、setcenturyon|off|功能:
以几位数字显示年份ON状态是以4位显示OFF(系统默认)以2位
2、常量与变量:
A、常量:
五种N型常量,C型常量,D型常量,L型常量,T型常量
字符型常量的定界符:
‘’、“”、[]
L:
.t..f.10.y..n.12/21/0112:
20:
10pM
B、变量:
①命名原则:
以字母(包括汉字在内)或下划线开头,后面可以跟字母、汉字、数字或下划线,最多不可超过256个字符。
例题:
找出下列哪些是常量哪些是变量,是什么类型的常量
123,JSJ,T,‘王一’,[折]、.t.,‘05/25/04’_123.45,$123.54,{^2001-05-23},you
②变量分为:
自定义内存变量和系统内存变量(大多以‘—’下划线开头)
内存变量和字段变量
字段变量是随着表的建立而建立的
ⅰ、自定义存变量的赋值:
两种
1)STORE<表达式>TO<内存变量>一次可以给多个变量赋同一值stor5toa,b,c
2)<变量名>=<表达式>一次可以给一个变量赋同一值a=5
ⅱ、自定义内存变量的显示:
?
表还一行显示
?
?
表示在同一条显示
注:
当字段变量和内存变量重名时,以字段变量优先;要想显示内存变量,需在内存变量前加M->或M.
例:
?
姓名显示字段变量
?
M.姓名显示内存变量
三、函数
VF中的五类函数:
数值计算函数、字符处理函数、类型转换函数、时期时间函数、测试函数
函数:
函数是由函数名和括号两部分组成,(除&(读作宏替换)‘取地址符’外)
(一)数值函数:
返回类型为:
数值型。
1.ABS(X):
取绝对值函数。
(1)正数的绝对值是本身,负数的绝对值是它的相反数。
(2)X:
代表数值。
例:
?
ABS(-2.5)2.5
2.ROUND(X,N):
四舍五入函数。
(1)N:
代表小数位数。
(2)若N的值为负数,其绝对值表示整数部分四舍五入的位数,舍入位后面的数字用零表示。
例:
①?
ROUND(123.45,0)123
②?
ROUND(123.55,-1)120
③?
ROUND(123.45,1)123.5
④?
ROUND(123.56,0)124
3.MOD(N1,N2):
取模函数。
(取余)
(1)正常的除法运算,如果余数和除数同号,余数即为模;否则模=除数+余数。
(2)同号取正,异号取负。
(3)N1:
被除数;N2:
除数。
(4)被除数中的小数部份不参与运算;余数与除数的符号相同。
例:
①?
MOD(7,4)3
②?
MOD(11,4)3
③?
MOD(-11,-4)-3
④?
MOD(11,-4)-1
4.INT(N):
取整函数
例:
①?
INT(2.5)2
②?
INT(-3.6)-3
用法:
判断X是否能被N整除。
INT(X/N)=X/N
5、ceiling(<数值表达式>)返回大于或等于指定数值表达式的最小整数。
Floor(<数值表达式>)返回小于或等于指定数值表达式的最大整数。
?
Ceiling(5.8),floor(5.8),Ceiling(-5.8),floor(-5.8)
65-5-6
(二)字符函数:
1.LEFT(字符串,N):
左子串函数。
返回字符型。
注意:
若N的宽度>字符串的宽度,则返回整个字符的表达式;如果N为负数或0则反回空字符串。
例:
①?
LEFT(“12345”,2)12
②?
LEFT(“中国共产党”,4)中国
2.RIGHT(字符串,N):
右子串函数。
返回字符型。
例:
①?
RIGHT(“中国”,2)国
3.SUBSTR(字符串,N1,N2):
取中间子串函数。
返回字符型。
N1:
从该位置开始,返回字符串。
N2:
返回的字符数。
若省略,则返回字符表达式全部字符。
例:
①?
SUBSTR(“ABCDEF”,2,3)BCD
②?
SUBSTR(“中华人民共和国”,5,4)人民
4.LEN(字符串):
字符串长度测试函数。
返回数值型。
例:
①?
LEN(“12.34”)5
5、去空格函数
trim(<字符表达式>)去尾部空格
Ltrim(<字符表达式>)去掉前导空格(即字符串左面的空格)
alltrim(<字符表达式>)去掉尾部和前导的空格
(三)日期函数:
1.DATE():
当前系统日期。
返回的是:
日期型
例:
?
DATE()返回当前的日期01/14/09
2.MONTH(日期)返回的是:
数值型
例:
?
MONTH(DATE())12
3.DAY(日期)返回的是:
数值型
例:
?
DAY(DATE())11
4.YEAR(日期)返回的是:
数值型
例:
?
YEAR(DATE())2006
时间函数:
1.TIME():
当前系统时间。
返回的是字符型。
例:
?
TIME()09:
19:
14
2.DATETIME():
当前系统日期时间。
返回的是日期时间型T。
例:
?
DATETIME()12/13/0609:
22:
58AM
(四)转换函数(若要进行比较,把它们都转换成C)
1.DTOC(日期):
日期转换为字符(D→C),返回字符型。
例:
?
DTOC(DATE())12/11/06
2.CTOD(字符):
字符转换为日期(C→D),返回日期型。
例:
?
CTOD(“12/11/06”)12/11/06
3.STR(数值,宽度,小数位数):
数值转换为字符(N→C),返回字符型。
注意:
宽度只与数值中的整数部分有关系。
若这个宽度>整数部份,全部显示,不足的左边空格来补,
反之宽度<整数部份,则显示N(宽度)个*。
若宽度缺省默认为10。
例:
①?
STR(123.456789,8,3)123.456(前面有一空格)
②?
STR(123.456,2)**
③?
STR(123.456)123(前面有7个空格)
④?
STR(123.556,6)124(前面有三个空格)
4.VAL(字符串):
字符转换为数值(C→N),返回数值型。
注意:
若指定的字符串以非数值字符开头(除空格、+、-号外),返回一个0。
默认保留两位小数,也进行四舍五入的原则。
该表达式最多由16位数字组成,若超过16们,则对其四舍五入。
例:
①?
VAL(‘123.45AB’) 123.45
②?
VAL(‘AB123’)0.00
③?
VAL(‘123.478’)123.48
(五)测试类函数:
1.BOF():
测试文件是否开始。
2.EOF():
测试文件是否结束。
3.RECNO():
测试当前记录号。
例:
USEXSDAGOBOTTOM
?
RECNO()?
RECNO()
110
?
BOF()?
EOF()
.F..F.
?
RECNO()?
RECNO()
111
?
BOF()?
EOF()
.T..T.
意义:
打开表指针指向第一条记录,并不意味着文件已经开始,只有指针上移,逻辑上指向第零条记录,但实际上仍指向第一条记录,才意味着文件已经开始。
当指针指向文件底,即最后一条记录时,并不意味着文件已经结束,只有指针下移,指向最后一条记录的下一条记录时,才意味着文件已经结束。
EMPTY(表达式)表达式为“空”返回.T.否则返回.F.?
empty(“231”)F
Isnull(表达式)空值(。
Null.)和空串的区别只有当表达式是.null.的时候结果才为.t.其它任何情况都为.f.
Vartype(表达式)功能:
测试表达式中返回值什么类型
如:
X=5<6
?
Varitype(x)L
IIF(<逻辑表达式>,<表达式1>,<表达式2>)功能:
测试逻辑表达式的值,若为真,返回表达式1的值,为假返回表达式2的值。
X=100
Y=300
?
iif(x>100,x-50,x+50),iff(y>100,y-50,y+50)
150250
at(字符表达式1,字符表达式2,表达式1在2中第几次出现)
返回表达式1在2中首次出现的位置。
区分大小写
?
at(“ab”,”dAbccab”)2
like(字符表达式1,字符表达式2)逻辑
比较2个表达式对应位置上的字符,若都匹配函数值为.T.,否则为.F.(表达式1中可以包含通配符*和?
)
*可以表示多个任意文字?
只能代表一个任意字符
如:
like(‘ab*’,’ab?
’)T
如:
like(‘ab?
’,’abcffffff’)T
六、特殊函数
1.SPACE(N):
空格生成函数N是多少就生成几个空格的位置字符型
例:
LEFT(‘伟大中国’,4)+RIGHT(‘伟大中国’,4)伟大中国’你好’-‘周’=‘你好周’
LEN(LEFT(‘伟大中国’,8)-SPACE
(2))10
四、运算符与表达式
表达式:
由运算符将常量、函数、变量连接起来的式子
五种表达式与运算符:
1、算数运算符:
+、–、*、/、%、^、()‘a’$abc’.t.
2、字符运算符:
+、–、$其中+号表示字完全连接,–号表示不完全连接,将符号左端字符串尾部空格移到整个字符串的右端。
listfor‘电’$家电名称
3、关系运算符:
<,>,<=,>=,=,==,<>,!
=,#,反回值是逻辑类型
其中=受到SETEXACT的限制,
当其值是ON的时候,(允许不精确)“CO”=“CO”值为.T.,当其值为OFF的时候,(必须一致)“CO”=“CO”值为.F.‘co’=’go’
4、逻辑运算符:
.NOT.非运算.AND.与运算.OR.或运算,优先顺序由高到低T*f
非真即假,非假即真
与运算相当乘运算,只有真与真是真,其余全为假
或运算相当加运算,只有假或假是假,其余全为真
5、日期时间运算符:
+,-
D+N=D,D-N=D,D-D=N,D+D不得值01/30/83-01/29/80
五种运算符的运算先后顺序(由高到低):
函数算术运算符字符运算符时期时间运算符关系运算符逻辑运算符
五、命令:
在VF当中一条命令只能占一行,多的在下行输入,但之间要用分号相连,每个命令可以只打前四个字母。
创建表:
create[表名]
打开表:
USE<表名>[IN工作区名ALIAS别名ORDER结构索引文件名]
Ctrl+W保存并关闭
打开数据库:
OPENDATABASE数据库名
删除表:
droptable<表名>
关闭表:
USE
清屏:
CLEAR
显示:
LIST[范围][FOR<条件>][fiel<字段名1,字段名2>](EOF指记录指针指向表中最后一条记录的下一条即表已经结束)
[范围]:
Display显示当前记录
指针定位:
插入:
INSERT[BEFORE][BLANK]
1INSERT本身表示后插
2INSERT[BLANK]在当前记录之后插入一条空白记录
3INSERT[BEFORE]在当前记录之前插入
4INSERT[BEFORE][BLANK]在当前记录之前插入一条空白记录
删除:
逻辑删除:
给满足条件的记录加上删除标记
DELETE[范围][FOR<条件>]
物理删除:
给加删除标记的记录彻底删除
PACK
复制表的命令:
先打开要复制的表,
复制表copy[字段名1,字段名2..]to新表名
复制表结构copystruto新表名
恢复删除:
RECALL[范围][FOR<条件>]
给加删除标记的记录恢复删除
清库:
ZAP=DELEALL
PACK
修改:
EDIT[范围][FOR<条件>]
CHANGE[范围][FOR<条件>]
BROWSE[范围][FOR<条件>][FIELDS<字段名表>](边浏览边修改)
成批替换:
REPLace[范围][FOR<条件>]<字段名>WITH<表达式>,[<字段名>WITH<表达式>]
其中范围这ALL时不能省略
统计命令:
COUNT[范围][FOR<条件>]TO<内存变量>
SUM[范围]<字段名表>[FOR<条件>]TO<内存变量>
AVERAGE[范围]<字段名表>[FOR<条件>]TO<内存变量>
TOTALON<字段名>TO<表名>
分类汇总:
先分类即逻辑排序,再汇总。
按照哪个字段排序就按照哪个字段汇总。
排序(索引功能加快查找速度):
逻辑排序INDEXON<关健字段名表>TO<排序文件名>(此文件名.IDX。
在关键字段名前加负号表子降序。
)
物理排序SORTON<关健字段名表>[/d//a]TO<排序文件名>(此文件名.DBF;默认升序/A,(asc)要想降序用/D(DESC))
查找LOCAFOR<条件>
CONT
DISP
六、SQL语言:
SELECT命令的格式:
SELECT语句的一般格式为:
[命令]:
SELECT[<字段>]
FROM[<数据库名!
>]<表名>[,[<数据库名!
>><表名>…]
[WHERE<连接条件>[AND<筛选条件>…>[AND/OR<筛选条件>[AND/OR<筛选条件>…>[GROUPBY<列名>[,<列名>…>[HAVING<筛选条件>
[ORDERBY<列名>[ASC/DESC]INTOTABLE<表名>
INTOCURSOR<临时表文件名>
INTOARRAY<数组名>
TOFILE<文本文件>
TOPRINTER<打印机中>
1.插入一行新记录
[命令]INSERTINTO<表名>[(<列名1>[,<列名2>…])]VALUES(<值1>[,<值2>…])
[功能]将新记录插入到指定的表中,分别用值1、值2等为列1、列2等赋值。
2、修改数据记录
[命令]UPDATE<表名>SET<列名>=<表达式>[WHERE<条件>]
[功能]对表中的一行或多行记录的某些列值进行修改。
3、删除数据记录
[命令]DELETEFROM<表名>[WHERE<条件>]
[功能]删除表中的一行或多行记录。
表结构
增加字段:
altertable<表名>add(字段1类型,字段2类型,...)
删除:
altertable<表名>dropcolumn<字段名>
修改字段名:
altertable<表名>renamecolumn<旧字段名>to<新字段名>
设置有效性字段:
altertable<表名>alter<字段名>setcheck<规则>error<出错信息>default<默认值>
修改字段类型:
ALTERTABLE表名ALTERCOLUMN字段名TYPE类型(长度)
更改现存表的名字:
ALTERTABLE表名RENAMETO新表名;
给一个字段增加一个非空约束:
ALTERTABLE表名ALTERCOLUMN字段名SETNOTNULL;
从一个字段里删除一个非空约束:
ALTERTABLE表名ALTERCOLUMN字段名DROPNOTNULL;
建立侯选索引:
ALTERTABLE表名addunique索引表达式TAG索引名
删除侯选索引:
ALTERTABLE表名DROPunique索引表达式TAG索引名
建立主索引:
ALTERTABLE表名addPRIMARYKEY索引表达式TAG索引名
SQL语句中重要关键字:
Distinct:
去掉重复
Union:
将两个语句结果合并
EXISTS|NOTEXISTS:
查询中是否有返回值(用于查询嵌套中,后接子查询)
ANY|SOME|ALL:
ANY和SOME指子查询中有一些运行结果为真则结果为真,ALL是全部都为真结果才是真。
(用于查询嵌套中,后接子查询)
TopN前几条记录(必须和orderby一起用)
PercentN前百分之几(必须和orderby一起用)
查询和视图的区别:
查询有查询去向视图没有
视图有更新查询没有
视图是虚拟的表存在于数据库中新建前必须先打开数据库查询不用
查询和视图都可以通过添加表或视图新建
七、工作区
1、概念:
为了同时实现对多个表进行操作,VF提出了工作区的概念。
VF提供了32767个工作区,但同一时刻可以打开多个工作区,一个工作区同一时刻只能打开一个表,但一个表可以用不同的别名在不同的工作区打开。
VF启动时默认1号工作区为‘当前工作区’。
2、工作区的选择:
Selete<区号/别名>
Selete0:
指选择当前未被使用的最小工作区。
表之间的临时关联:
Setrelationto[表达式into工作区号|别名]
表达式:
父表子表的相同关键字段(必须是两个表共有的字段),且子表已激活以该字段为关键词的索引。
工作区号|别名:
指定需要建立关联的子表所在的工作区代号或子表别名。
Setrelationto:
不带任何参数,表示切断当前工作区一切关联。
如:
在‘学生信息’和‘学生成绩’两表之间按‘学号’为关键字建立关联。
Use1&&选择1号工作区
Use学生成绩&&打开子表
Indexon学号to学号&&为子表成绩按学号建立一个索引文件
Sele2&&选择1号工作区
Use学生信息&&打开父表
Setrelaiotnto学号into学生成绩&&在父表中与子表建立临时关联
八、VF中索引文件类型及索引类型
1、索引文件类型:
独立索引、结构复合索引、非结构复合索引
2、索引的建立(表设计器和命令):
INDEXON字段名|表达式[TO独立索引文件][TAG结构复合索引文件名][OF非结构复合索引文名]
注:
复合索引文件扩展名为:
.CDX独立索引文件扩展名为:
.IDX
3、索引文件的打开:
结构复合索引文件是随着表的打开而自动打开的
非结构复合索引文件和独立索引文件需要使用命令打开,两种方法如下:
A:
USE表名[INDEX索引文件名]
B:
SETINDEXTO索引文件名
4、索引类型:
主索引、候选索引、普通索引、唯一索引。
主索引:
组成主索引关键字的字段或表达式,在表的所有记录中不能有重复的值。
主索引只适用于数据库表的结构复合索引中。
自由表中不可以建立主索引;数据库中的每个表可以且只能建立一个主索引。
候选索引:
在指定的关键字段或表达式中不允许有重复值的索引。
在数据库表和自由表中均可为每个表建立多个候选索引。
普通索引:
也可以决定记录的处理顺序,但是允许字段中出现重复值。
在一个表中可以加入多个普通索引。
唯一索引:
参加索引的关键字段或表达式在表中可以有重复值,但在索引对照表中,具有重复值的记录仅存储其中的第一个。
八、程序设计:
程序的构成:
顺序结构、选择结构、循环结构
1.
(1)选择结构:
(单分支)
IF<条件>
<语句1>
[ELSE
<语句2>]
ENDIF
(2)选择结构:
(多分支)
格式:
DO CASE
CASE <条件1>
<语句1>
CASE <条件2>
<语句2>
…
CASE <条件N>
[OTHERWISE
<语句N+1>]
ENDCASE
2.循环语句:
(一) DO WHILE <条件>
<循环体>
<改变循环条件的语句>
[LOOP]无条件返回循环
[EXIT]无条件退出
ENDDO
说明:
(1)循环体内必须有改变循环条件的语句,避免造成死循环。
(二)FOR语句
1.格式:
FOR<循环变量>=<初值>TO<终值>[step<步长>]
<循环体>
ENDFOR
2.说明:
当步长为1时,可省,否则用STEP加步长。
FOR与DOWHILE的区别:
FOR循环只能用于已知循环次数。
内存变量的作用域:
1、PUBLIC变量名(建立公共变量任何位置都可使用)
2、PRIVATE变量名(建立私有变量只属于某段过程及其下的程序)