VF整体内容.docx
《VF整体内容.docx》由会员分享,可在线阅读,更多相关《VF整体内容.docx(34页珍藏版)》请在冰豆网上搜索。
VF整体内容
国二VF课件
一、一个完整的VF数据库系统(DBS)的基本组成部分
1.数据库的集合DB
2.数据库管理系统DBMS系统软件
3.硬件
4.用户或管理员(应用程序)
二、认识VF的开发界面
界面的组成部分以及每部分的作用
注意:
1)每次打开vf必须将输入法调到半角实心的状态
2)命令窗口中只能输入和执行单条命令语句
第一讲数据库及其表操作
一、数据库的操作
1、基本概念
在VF中数据库是一个逻辑上的概念,通过一组系统文件将相互联系的表统一组织和管理。
(数据库和表之间的关系)
文件:
数据库文件扩展名:
DBC
数据库备注文件:
DCT
数据库索引文件:
DCX
VF中的操作方式:
界面操作:
通过鼠标操作的过程
命令操作:
在命令窗口中输入命令完成相关功能的过程
2、建立数据库
a:
通过“新建”对话框建立数据库
b:
使用命令交互建立数据库
CREATDATABASE[数据库文件名]
3、使用数据库(打开、修改)
OPENDATABASE[数据库文件名]
MODIFYDATABASE
“SETDATABASETO数据库文件名”指定一个打开的数据库为当前数据库。
4、删除数据库:
用命令删除
VF数据库文件并不真正含有表,只是在数据库文件中登录了表的相关条目信息,表是独立存放在磁盘上的。
所以删除数据库并没有删除数据库中的表等对象,要在删除数据库时同时删除表等对象,要用命令方式。
DELETEDATABASE数据库文件名[DELETETABLES]
DELETEDATABASE<数据库名>
只删除数据库文件
DELETEDATABASE<数据库名>DELETETABLES
删除数据库文件的同时并删除数据库对应的表
二、表的操作
1、概念
VF中操作的基本对象,将现实中的数据转换成VF所能识别的文件。
与表相关的文件扩展名有:
DBF表文件
FPT表的备注文件
BAK表的备份文件
表文件的创建:
不管是采用界面操作方式还是命令操作方式创建表文件都是首先进入表设计器,在表设计器中主要是完成对表结构的设计。
表结构的三要素:
(1)字段名
(2)数据类型
(3)字段宽度
表的分类:
A、数据库表
B、自由表
例1:
OPENDATABSE订货管理
CREATE仓库
这是在”订货管理”数据库中创建一个”仓库.DBF”的数据库表文件
2、表的结构修改
A、项目管理器
B、菜单中的”表设计器”
C、用命令修改
MODIFYSTRUCTURE
第二讲表的基本操作
一、表的使用
打开表文件:
USE<表名>
关闭表:
USE
CLOSETABLEALL关闭所有表
表记录的浏览使用命令BROWSE
注:
刚打开的表指针是指向第一条记录
当前记录
二、与表有关的操作及短语
显示命令
LIST[范围][条件][字段]
范围短语:
ALL表示所有的
RECORD第N条记录
NEXT从当前记录开始连续的N条记录
REST从当前记录开始到文件尾
条件短语:
FOR<条件>
当表中指定范围内的所有条件都满足为止
字段短语
FIELDS<字段名表>
由指定的字段参加操作
三、表记录的增加
APPEND[BLANK]
APPEND在表的尾部增加记录(手工添加)
APPENDBLANK直接在尾部增加一条空记录
APPENDFROM<表2>[条件]
将表2增加到当前表的尾部
当表2的结构与当前表的结构相同时,将表2中的所有满足条件的记录追加到当前表的后面
USEG1
APPENDFROMG2
表文件的备份:
copyto<新表名>[范围][条件][字段]
INSERT[BLANK][BEFORE]
INSERT在当前记录的后面插入一条记录(手工增加)
INSERTBLANK在当前记录的后面插入一条空记录
INSERTBEFORE在当前记录的前面插入一条记录(手工增加)
INSERTBLANKBEFORE在当前记录的前面插入一条空记录
四、表记录的删除
1:
逻辑删除
DELETE[范围][条件]
DELETE删除当前记录
2:
真删除物理删除
PACK真删除表中所有被逻辑删除的记录
3:
恢复逻辑删除
RECALL[范围][条件]
RECALL恢复当前记录
4:
真删除表中的所有记录
ZAP
五、修改记录(成批修改)
REPLACE[范围]<字段名1>WITH<表达式1>[,<字段名2>WITH<表达式2>][….][条件]
例:
将基本工资小于500记录实发工资改为2000
Replaceall实发工资with2000for基本工资<500
六、显示记录命令
LIST/DISPLAY[范围][条件][字段][TOPRINTER][TOFILE<文本文件名>]
DISPLAY显示当前
DISPLAYALL分屏所有记录
TOFILE<文本文件名>将被显示记录存入到一个文本文件中.
七、记录的定位
GON/TOP/BOTTOM
SKIP[N]
LOCATE<条件>
CONTINUE
绝对定位:
GON将第N条记录设为当前记录
NN一定要是一个常数
GOTOPgo1将指针指向最前面的一条记录
GOBOTTOM将指针指向最后面的一个记录
相对定位:
SKIP向后跳一个记录
SKIPN向文件尾跳N个记录
SKIP-N向文件首跳N个记录
条件定位
LOCATE[条件]
从范围内的第一条记录开始查询满足条件的第一条记录
CONTINUE继续查询
测试是否找到:
FOUND()
八、排序命令
SORTTO<文件名>ON<字段名>[/A/D]
/A或省略参数升序
/D降序
第三讲VF基本数据
一、常量与变量
常量用以表示一个具体的,不变的值.15“李四”
(在程序运行的过程中始终保持不变的量)
常量有以下类型:
数值型:
N日期时间:
T
货币型:
Y逻辑型:
L
字符型:
C日期型:
D
1、数值常量N
由数字0-9,小数点和正负号构成.
12、2.2343.4e+125.6e-8
内存中占8个字节
2、货币常量Y
与数值常量类似,但要加上一个前置的符号$.采用4位小数,如果一个货币常量多于4位小数,那么系统会自动将多余的小数位四舍五入。
例如:
$123.456789将存储为$123.4568.
货币常量没有科学记数法形式,在内存中占用8个字节
3、字符常量C
由半角单引号,双引号,方括号作为定界符,将各种字符括起来形成.
字符型的定界符号要成对出现不包括任何字符的字符串“”叫空串
4、日期常量D(8个字节)
由{}做定界符,其中包括年、月、日三部分.并且三者之间要用分隔符(-,/,空格)隔开
严格的日期格式:
{^yyyy-mm-dd}
书写严格的日期格式时注意:
(1)花括弧内的第一个字符必须是脱字符
(2)年份必须用4位数字表示
(3)年月日的顺序不能颠倒
SETCENTURYON/OFF
ON显示4位年份
OFF显示两位年份(系统默认的)
5、日期时间常量T(8个字节)
日期时间常量包括两个部分:
日期与时间{^yyyy/mm/dd,hh:
mm:
ssa/p}
6、逻辑常量L(1字节)
逻辑真.T..t.
逻辑假.F..f.?
7、变量
变量是在程序的运行过程中其值可以改变的量。
(容器的概念)
在VF中变量分为:
字段变量和内存变量两类.
内存变量的数据类型包括:
C、N、Y、L、D、T
内存变量:
内存中的一个存储区域,变量值就是存放在这个区域里的数据,变量的类型取决于变量值的类型,变量的值,变量的名。
变量的命名规则:
(1)由汉字、数字、字母、下划线组成;
(2)不能以数字开头;
(3)不能使用系统保留字;
(4)字母不区分大小写
a变量的赋值
第一种格式:
变量名=数据
第二种格式:
STORE数据TO<内存变量表>
1:
赋值时后面值会覆盖前面的值
S=100
S=0
?
S
2:
变量的累加:
A=10
A=A+10
?
A
3:
两个数的互换
将A,B两个变量互换.A=20,B=10
A=10B=20
T=BB=A
A=T?
A,B,T
b变量的显示(注意两种显示的区别)
字段变量:
表中的字段名
访问一个变量是通过访问该变量的地址(变量名)
**字段变量优先于内存变量
当字段变量与内存变量同名时,要调用内存变量时,前缀要用
M.内存变量名
真题:
设当前有一字段变量A的值为123,另有一同名内存变量A的值为-123,则执行?
M.A-A后屏幕将显示
A)246B)-246C)0D)错误信息
数组
数组是内存中连续的一片存储区域,它由一系列元素组成,每个数组元素可通过数组名及相应的下标来访问,每个数组元素相当一个变量,可以给各元素分别赋值。
在VF中各元素的数据类型可以不一样的。
与简单内存变量不同,数组在使用之前一般要用DIMENSION命令定义.
DIMENSION<数组名>(N)
DIMENSIONA(4)
A
(1),A
(2),A(3),A(4)
A
(1)
A
(2)
A(3)
A(4)
第四讲数据运算
表达式
表达式是由常量、变量通过特定的运算符连接起来的式子。
无论是哪种表达式按照规定的运算规则最终均能计算出一个结果,即表达式的值。
1、数值表达式:
由算术运算符将数值型常量,变量连接起来形成,其运算结果仍然是数值型数据。
算术运算符
优先级
运算符
说明
1
()
2
**或^
乘方运算
3
*、/、%
乘、除、求余
4
+、-
加、减运算
注意:
输入算术表达式时在数学中可以省略的部分要补全表达式中要使用括号的地方全部用()
2、字符表达式:
由字符串运算符将字符型数据连接起来形成,其运算结果仍然是字符型数据.
+-前后两个字符串首尾连接形成一个新的字符串
3、关系表达式(其结果一定是逻辑型数据)
运算符
说明
><
>=<==
<>!
=#
不等于
$
只针对
字符型数据
子串包含测试
字符的非精确比较=
表达式右边是左的前一部分或全部则为真.
4、日期表达式:
运算符+和–
日期+天数
日期-天数
日期-日期
5、逻辑运算表达式:
由逻辑运算符将逻辑型数据连接起来形成,其运算结果仍然是逻辑型数据
ORANDNOT
运算符优先级
算术运算——字符串运算和日期运算符——关系运算符——逻辑运算符
常用函数
函数是一段程序代码,用来对基本数据进行一些特定的运算.
Y=2x+1
函数调用格式:
函数名(自变量1,自变量2,…..)
函数分为系统函数和自定义函数
1、数值函数
(1):
绝对值
ABS(N)
(2):
求平方根函数
SQRT(N)
(3):
圆周率函数
PI()没有自变量的函数
(4):
求整数函数
INT(N)
(5):
四舍五入
ROUND(N1,N2)
(6):
求余数同%
MOD(N1,N2)
(7):
求最大值和最小值CND
MAX(N1,N2,N3…………………)
MIN(N1,N2,N3…………………)
(8):
随机
RAND()
随机产生一个0-1之间的小数
2、字符函数
(1):
求字符串长度
LEN(C)
(2):
删除前后空格函数
TRIM(C)删除右边的空格
LTRIM(C)删除左边的空格
ALLTRIM(C)删除左右两边的空格
(3):
取子串函数
LEFT(C,N)
从字符串C中的左边的第一个字符开始取连续的N个字符
RIGHT(C,N)
从字符串C中的右边的第一个字符开始取连续的N个字符
SUBSTR(C,N1,N2)取任意子串
从C字符串中第N1位置开始连续取N2字符
省略长度:
从C字符串中的第N位置开始到字符串的尾部
(4):
子串替换
STUFF(C1,N1,N2,C2)
将C1字符串中从N1位置开始的连续N2个字符串用C2代替
3、日期函数
(1):
系统日期函数
DATE()
TIME()
(2):
求年份、月份和天数
YEAR(D)
MONTH(D)
DAY(D)
练习:
1、函数YEAR({^1999-12-30})-99的结果是_______.
2、MONTH({^1999-12-30})+{^1999-12-30}的结果是_______.
4、数据类型转换函数
(1):
数值转换成字符
STR(N)
(2):
字符串转换数值
VAL(C)
(3):
字符转换成日期
CTOD(C)
(4):
日期转换成字符串
DTOC(D)
(5):
宏替换函数
&字符变量
作用:
去掉C两边的定界符
5、测试函数:
逻辑型
(1):
值域测试
可以对C,D,T,N数据进行测试,但这三个数应保持一致
BETWEEN(表达式1,表达式2,表达式3)
测试表达式1是否介于表达式2与表达式3之间
(2):
空值(NULL)测试不确定
(3):
数据类型测试结果:
字符型
VARTYPE(表达式)
(4):
表文件尾/首测试逻辑型
EOF()测试记录指针是否指向文件尾
BOF()测试记录指针是否指向文件首
(5):
记录号测试数值型
RECNO()返回当前记录的记录号
(6):
记录总数的测试
RECCOUNT()
(7):
条件测试
IIF(逻辑表达式,表达式1,表达式2)
第五讲程序设计
程序的概念
程序是能够完成一定任务的命令的有序集合
命令交互方式:
在命令窗中输入一条命令执行一条命令
程序方式:
编写程序----->运行程序
输入三个数求它们和与积
CLEAR
INPUT“请输入A=”TOA
INPUT“请输入B=”TOB
INPUT“请输入C=”TOC
SN=A+B+C
SH=A*B*C
?
”三个数和SN=”,SN
?
”三个数积SH=”,SH
RETURN
编程预备知识点
1、程序文件的建立
MODIFYCOMMAND<文件名>
PRG程序文件扩展名
2、程序文件的编写,修改与保存
程序中每条命令都回车键结尾
一行只能写一条命令,若某条命令需要分行书写时须在该行后键入续行符;
程序中的命令书写后不会马上被执行
3、执行程序文件
DO<文件名>
4、程序方式的特点
a程序文件一旦建立,就可以被多次执行
b在一个程序的运行过程中可以调用另一个程序
5、简单的输入命令
1:
INPUT命令
格式:
INPUT[表达式]TO<内存变量>
可以接受任意合法的数据或表达式
C,D,T此三类数据类型输入时要定界符
6、ACCEPT命令
格式:
ACCEPT[字符表达式]TO<内存变量>
接受字符串,输入时不需要定界符
如果不输入任何内容而直接按回车,则接受空串
7,程序中的注释
*<注释内容>或NOTE<注释内容>
&&<注释内容>
程序的基本结构
三种基础结构:
顺序结构,选择结构和循环结构
1、顺序结构
最简单的程序结构,按命令在程序中出现的先后次序依次执行.
Eg1:
编写程序计算圆的周长和面积
2:
编程模拟超市的收银系统
3:
编写程序将表“会员信息”中姓名为张三记录的金额加50元,替换后并浏览表文件
2、选择结构
包括条件语句和分支语句
a:
单分支语句:
IF<条件>关系表达式
语句
ENDIF
b:
双分支语句与iif函数相区别
IF<条件>
语句1
ELSE
语句2
ENDIF
例1:
输入三个数,输出其中最大值。
算法:
处理解决某项任务时的方法步骤
例2:
用双分支语句编写一个图书检索程序,要求根据输入的书名在表中查找,若找到显示它,否则给出相关信息
例3,判断一个数是否恶魔数(凡是7的倍数或者任意位上含有7的数称为恶魔数)
If结构的嵌套
例3:
接受一个学生成绩,并按如下要求显示该成绩的等级
X>=80良好
X>=60X<80及格
X<60不及格
CLEAR
INPUT“成绩=”TOCJ
IFCJ>=80
S=”良好”
ELSE
IFCJ>=60
S=”及格”
ELSE
S=”不及格”
ENDIF
ENDIF
?
S
RETURN
c:
多分支语句
一种扩展的选择结构,根据条件从多组代码中选择一组执行
格式:
Docase
Case<条件1>
<语句1>
Case<条件2>
<语句2>
…….
Case<条件n>
<语句n>
[otherwise
<语句>]
Endcase
练习:
a,编程求一元二次方程的根
b,从键盘接收一个密码,编程对其进行判断,若密码为”XQN123”则输出信息”密码正确”,否则提示”密码有误再给一次机会”,如果输入正确则提示”密码正确”,否则输出信息”两次输入错误,您没机会了!
”
3、循环结构
a:
DOWHILE-ENDDO语句
格式:
DOWHILE<条件>
<语句序列1>
ENDDO
例5,求和
S=0
N=1n的位置
DOWHILEN<=100
S=S+N
N=N+1
ENDDO
?
”S=”,S
RETURN
例6,在屏幕输出7654321
例7,统计工资表中的工资总额和平均工资
例8,统计学生表中所有女生的个数
考试真题:
如下程序段的输出结果是
I=1
Dowhilei<10
I=i+2
Enddo
?
I
例9,将销售信息表所有05年购买的商品逻辑删除
没有skip语句为死循环
Loop再循环
Exit强制退出循环
b:
FOR-ENDFOR语句
格式:
FOR<循环变量>=<初值>TO<终值>[STEP<步长>]
<循环体>
ENDFOR
例7,找出100-999之间的所有水仙花数(各位数字的立方和等于该数本身)
例8,为student2表新增一个“成绩等级”字段,并根据每条记录的分数为新字段添入对应的值。
要求如下:
总分在260以上的为“优秀”
总分在220以上的为“良好”
总分在190以上的为“一般”
总分在190以下的为“较差”
c:
SCAN-ENDSCAN语句
格式:
SCAN[范围][FOR<条件1>]
<循环体>
ENDSCAN
范围的默认值是ALL
EXIT和LOOP命令同样可以出现在该循环语句中
10套(求平方根)14套17套59套
第六讲索引与数据完整性
索引是由指针构成的文件,这些指针逻辑上按照索引关键字值进行排序。
索引文件和表的.DBF文件分别存储,并且不改变表中记录的物理顺序。
索引文件的主文件名与表名同名,扩展名为CDX
提高查询的速度
一、索引分为:
主索引、候选索引、唯一索引、普通索引。
1:
主索引(学号,准考证,身份证号,等编号……)
在指定字段或表达式中不允许出现重复值的索引。
建立主索引的字段可以看作是主关键字,一个表只能有一个主关键字,所以一个表只能创建一个主索引。
2:
候选索引
候选索引和主索引具有相同的特性,建立候选索引的字段可以看作是候选关键字,所以一个表可以建立多个候选索引。
3:
唯一索引UNIQUE
唯一索引是为了保持同早期版本的兼容性,它的“唯一性”是指索引项的唯一,而不是字段值的唯一。
具有重复索引字段只保持最前面的一个在目标文件中。
保留记录号最小的1条记录
4:
普通索引
只是对表相关的关键字段进行排序
Indexon<表达式>tag<标识名>[ascending][descending][unique/candidate]
UNIQUE唯一索引
Candidate候选索引
省略以上普通索引
注:
主索引不能用命令创建.
设置当前索引
setorderto[n]/<索引标识名>
N>=00原文件
二、数据完整性
在数据库中数据完整性是指保证数据正确的特性,数据完整性一般包括实体完整性、域完整性和参照完整性。
1、实体完整性与主关键字
实体完整性是保证表中记录惟一,即在一个表中不允许有重复的记录。
在VF中利用主关键字或候选关键字来保证表中的记录惟一。
即保证实体惟一性。
2、域完整性与约束规则
数据类型和数据宽度的定义都是域完整性的范畴
可以通过一些约束规则来进一步保证域完整性,域完整性也称字段有效性规则
规则:
一定是逻辑值
信息:
一定是字符型数据
默认值:
数据类型同原字段数据类型
3、参照完整性与表之间的永久性联系
作用:
当插入、删除或修改一个表中的数据时,通过参照引用相互关联的另一个表中的数据,来检查对表的数据操作是否正确。
步骤:
1:
建立各个表之间的永久性联系
一对一、一对多、多对多
2:
设置参照完整性约束
在建立参照完整性之前必须首先清理数据库,所谓清理数据库是物理删除数据库各个表中所有带有删除标记的记录。
参照完整性规则包括更新规则、删除规则和插入规则
多个表操作
1、指定工作区的命令
selectnN=0-32767
别名:
每个表打开后都有两个默认的别名,
1——10为a——j
2、使用不同工作区的表
引用符号:
别名.字段名
3、建立多表之间的临时性关联
联动
第七讲:
SQL关系数据库标准语言
一、SQL概述
1:
SQL是一种一体化语言,它包括了数据定义、数据查询、数据操纵和数据控制等方面的功能,它可以完成数据库活动中的全部工作。
2:
SQL是一种高度非过程化的语言,它没有必要一步步告诉计算机“如何”去做。
3:
SQL语言非常简洁,可以直接以命令交互使用。
表5.1SQL命令动词
SQL功能
命令动词
数据查询
SELECT
数据定义
CREATDROPALTER
数据操纵
INSERTUPDATEDELETE
二、查询功能
SQL的核心是查询。
它的基本形式由
SELECT–FROM–WHERE
查询块组成
(一行写不下可用”;”作为分隔符)
1:
简单查询
查询表中的所有字段用*表示
查询的字段在结果中要求不允许出现重复值时使用DI