VFP强化复习提纲.docx
- 文档编号:29191353
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:30
- 大小:31.85KB
VFP强化复习提纲.docx
《VFP强化复习提纲.docx》由会员分享,可在线阅读,更多相关《VFP强化复习提纲.docx(30页珍藏版)》请在冰豆网上搜索。
VFP强化复习提纲
数据库管理系统VisualFoxPro程序设计复习提纲
第一章数据库基础知识
1、信息、数据、数据库、数据库管理系统、数据库系统和数据模型
数据:
存储在媒体上的能够识别的符号。
分为数值型和非数值型
信息:
被加工成特定形式的有意义的数据。
数据库(DB):
存储设备上,结构化的相关数据的有序集合。
数据库管理系统(DBMS):
数据库语言本身,创建数据库和编写应用程序。
是数据库系统的核心。
具体功能:
数据定义DDL、数据库操作DML、数据库控制DCL和数据字典。
数据库应用系统(DBAS):
用DBMS编写的应用程序。
数据库系统(DBS):
包括硬件系统(指计算机处理数据的计算机硬件部分)和软件系统(操作系统,数据库管理系统、数据库管理员、用户及各种应用程序、数据库)。
数据模型:
表示实体间联系的方法。
常用的有层次(树型)模型、网状模型、关系模型、关系对象型、面向对象型。
VisualFoxPro属于关系模型,处理的是一张线性的二维表格。
注意:
1)信息与数据的区别。
2)DB、DBMS、DBS谁是最重要和最核心的软件。
2、关系数据库的基本概念
关系:
一个关系就是一张二维表格,以磁盘文件的形式存在。
关系模式:
对关系的描述。
格式为:
关系名(属性名1,属性名2,……,属性名n)。
元组:
二维表格中的一行,存储文件中的一个具体的记录。
属性:
二维表格中的一列,属性值是各个记录中的字段值。
域:
属性的取值范围,即不同元组对同一个属性的取值所限定的范围。
关键字:
属性或属性的集合,其值能够唯一的标识一个元组关系的基本运算:
选择(找出满足给定条件的元组的操作,从横向行的角度),投影(从关系中指定若干属性组成新的关系,从纵向列的角度),联接(生成的新关系中包含满足联接条件的元组,将两个关系的属性名拼接)
注意:
1)关系、元组、属性三者关系。
2)关键字、候选关键字(表只能有一个关键字,关键字段不允许有重复值)。
第二章VFP基础
1、VisualFoxPro的主要性能指标及运行环境
性能指标:
记录数:
10亿条、字段数:
255个、C型<=254个字符、数值长度20位、有效位16位。
2、VisualFoxPro的基本语言成分
(1)文件类型:
.PJX、.DBC、.DBF、FPT、IDX(CDX)、FMT、FRX、PRG、.SCX、.SCT、.MEM、.MNX、.MPR、.QPR、.EXE、.APP、.TXT等。
注意:
熟练掌握.PJX、.DBF、.IDX(.CDX)、.PRG、.SCX
3.项目管理器
选项卡:
数据—-自由表、文档----表单、代码----程序
第三章VFP语言的基本元素
1)常量:
程序运行的过程中其值不会发生变化的量,分为字符型、数值型、日期型、逻辑型、日期时间型、货币型。
表中的常量直接输入,以下是程序中常量格式:
字符型(C字符串型)常量:
用定界符(单引号、双引号、中括号)括起来的字符串。
当定界符作为字符串的一部分时,用另外一种定界符。
数值型(N):
由0~9的数字,正、负符号,字母E组成。
例:
122.3,1.223e+2等。
日期型(D):
一般格式为mm/dd/yy。
VFP中的格式:
{^yyyy-mm-dd}{^yyyy-mm-ddhh:
mm:
ssam/pm}}
用CTOD函数转换,
如CTOD(“08/30/2003”)或用{^2003-08-30}格式输入。
逻辑型(L):
.t.或.y.,.f.或.n.
变量:
程序运行的过程中,其值可以改变的量,具有变量名,注意变量命名的规则(由字母或汉字开头的字母、数字、下划线串。
)
分为内存变量:
有C,N,D,L,S,T赋值时决定类型。
重新赋值可以改变类型。
字段变量:
有C,N,D,L,M依赖于数据库,类型在创建数据库时确定,改变库结构中字段类型,才能改变其类型。
数组变量:
(特殊的内存变量)先定义,后使用。
下标从1开始。
系统变量:
以下划线开头。
对象变量:
表单设计时引用
注意:
1)变量不能用引号,引号中的变量一定用&。
2)双重引号是?
”‘abdcd’”,而?
““abdcd””是错的。
3)字段名与内存变量名重名,字段名优先。
(2)函数
abs(),int(),sqrt(),max(),min(),round();&,trim(),ltrim(),at(),substr(),stuff(),space(),right(),left();type(),file(),field(),len(),row(),col(),prow(),pcol(),eof(),bof(),found(),deleted(),recno(),sele();time(),date(),year(),month(),day(),dow();upper(),lower(),ctod(),dtoc(),str(),val(),asc(),chr(),inkey(),readkey();iif()
Field(数值表达式1[,数值表达式2]):
指定工作区(数字表达式2)指定位置的字段名。
Inkey([数值表达式]):
返回最后按键的十进制ASCII代码值。
括号中的数值为等待时间(秒)。
注意:
1)&代换(g1=”中国”,?
“&g1”;x1=”123”,?
123+&x1;?
&g1与?
&x1的区别,x=stud.dbf,use&x;?
Fields
(1)-字段名,?
&fields
(1)-字段值)
2)Str()与Val(x=123,?
str(x)与str(x,3)的区别)
3)usestud,?
姓名(王二),?
len(姓名)—8、4
4)Bof()与Eof()为.T.的记录位置。
5)?
max(“A”,”B”)与 ?
max(“A”,”a”)
(4)运算符:
算术运算符:
+,-,*,/,%,**或^。
其值为一个数值,可以比较大小。
字符运算符:
+,-。
结果为字符串,可以比较大小
日期运算符:
+,-。
两日期可以相减,结果为两日期相差的天数。
可以加或减一个整数,结果将日期推前或延后多少天,仍为一个日期。
日期时间型相减为相隔的秒数。
关系运算符:
>=,<=,=,<>或#,<,>,$。
结果为逻辑值。
逻辑运算符:
.not.,.and.,.or.。
结果仍为逻辑值。
表达式:
单一的常量、变量、函数都为表达式,用括号、运算符将这些运算量(常量、变量、函数)连接起来的有意义的式子。
注意:
混合运算的优先次序:
括号→函数→算术(**→*、/→+、-)、字符、日期→关系→逻辑(.not.→.and.→.or.)。
注意:
错误的表达式:
2x+y,1 (5)命令结构、书写规则及命令的执行方式 命令的一般形式: 命令字[范围][表达式表][fields<字段名表>][for<条件>] 命令字: 英文动词,可只写前四个字母,不分大小写,但须为半角字符。 如DISP=DISPLAY。 范围: 操作的记录的范围, 有all nextn recordn rest 条件: 由条件表达式担任,其值为逻辑值的表达式均可。 书写规则: 命令行最长8192字符,可用“;”续行。 执行方式: 交互式(命令窗口和菜单)和命令文件式(批处理)。 注意: 1)必须以命令动词开头,后面子项可交换。 2)listFOR是否党员,listFOR.not.是否党员, 第四章、表文件的基本操作 1、VisualFoxPro的启动和退出 启动: 开始→程序→MicrosoftVisualFoxPro。 SETDEFATOA 退出: QUIT或文件→退出 2、表文件结构的操作 VFP中的表分为数据库表和自由表 自由表建立: 文件→新建→表 CREA<库文件名> 项目管理器/数据(选项卡) 注: 表设计器的使用。 建立扩展名为.dbf,若有备注字段还会生成相应的备注文件.FPT。 表文件结构的显示: 注: 刚建的表是打开的, LISTSTRU[TOPRINT]连续 DISPSTRU[TOPRINT]分屏 注意: 总字节数比各字段字节数多1(删除标记) 表文件结构的修改: 打开表文件以后(刚建的表是打开的) ●显示→表设计器 ●MODISTRU 可以增加和删除字段,对字段名,类型,宽度等进行修改。 注意,可能导致数据项丢失,分多次进行。 利用结构文件建立表文件结构: COPYTO<表文件名>STRUEXTEND CREA<新表文件名>FROM<结构表文件名> 表文件结构的复制: COPYSTRUTO<库文件名>[FIELDS<字段名列表>] 3、文件操作: 文件的建立: 表文件的打开: USE<库文件名>[ALIAS<别名>] 表文件的关闭: USE CLOSEDATABASE CLOSEALL CLEARALL SETINDETO只关闭索引文件 QUIT 文件的复制: COPYFILE<源文件名>TO<目标文件名> 表文件的复制: (当前打开表) COPYTO<新库文件名>[for<条件>][fields<字段名列表>][sdf] 文件的换名: rename<源文件名>to<新文件名> 文件的删除: delefile<文件名>若是表文件必须先关闭。 Erase<文件名> 文件的输出: 表文件打开后用list/disp记录 文本文件,命令程序文件用type<文件名> 4、数据的输入、编辑、输出;数据的录入与追加;数据的编辑修改;数据的输出。 数据的录入与追加: 建表时录入和追加式录入。 显示→追加方式 Appe[blank] Appefrom<源库文件名>[fields<字段名列表>][for<条件>] Appefrom<文本文件名>sdf[fields<字段名列表>][for<条件>] 记录的插入: insert[before][blank] 数据的编辑修改: (全屏幕) edit change browse[nomodi、noappe] 表数据的输出: list[范围][表达式表][for<条件>][off][toprint] disp[范围][表达式表][for<条件>][off][toprint] list范围省略时为all,disp范围省略时为当前记录,注加条件后的disp范围省略时也为ALL。 注: 以上操作完成后记录指针的位置。 注意: 1)edit和go可省略record. 2)Borw的“表”菜单: 属性、追加记录、追加新记录、删除记录、彻底删除记录。 5、数据记录指针的定位: 绝对定位;相对定位;条件定位 绝对定位: gotop/bottom/<数字表达式> 相对定位: skip±<数字表达式> 条件定位: locafor<条件> cont继续指向下一条符合条件的记录。 注意: 1)go1与gotop区别 2)cont只能在loca后 3)归纳移动指针的命令: find、seek、list、replall、count、sum、aver 第五章排序、查询、统计、多表操作 1、数据库的重组: 物理排序: 生成排序表文件 sorton<字段名1>/a/d/c……to<新库名>[for<>][fields<>] 排序的字段可以是C,N,D,T,L等。 逻辑排序: 生成索引文件(.idx) indexon<关键字表达式>to<索引文件名>单一索引 按关键字表达式值升序 indexon<关键字表达式>tag<标识名>[of<复合索引文件名>][asceding|descending][unique][additive] 注: 按关键字表达式值升序/降序排列,一个库可建立多个索引文件,同一时刻只有一个起作用。 Setorderto[<数字表达式>|[tag]<标识名>]设置主控索引。 索引文件的打开: 刚建的索引文件是打开的(对于结构化索引,随表的打开而自动打开,但需设主控索引) Setindexto<索引文件名表>[orderto……] Use<表文件名>index<索引文件名列表>[orderto……] 索引文件的修改: 打开后用reindex 索引文件的关闭: setindexto或关闭表的同时关闭。 注意: 1)索引文件的数学的升序(关键1)英语的降序(关键2)。 2)结构索引文件的四种索引字段: 主索引、候选索引、唯一索引、普通索引 3)熟练用命令(setordertotag<标记名>)和菜单(表/属性)选择主控索引 2、表的查询: 顺序查询: loca[范围][for<条件>] cont 索引快速查询: (建索引后) find<字符>/<数字表达式>字符串可不用定界符。 find&<字符型内存变量名> seek<表达式> 注(seek): 表达式可为C,N,D。 为C时须加定界符,为内存变量时不用&。 模糊查询: 用recno(0)测试刚超过目标的下一个记录。 注意: 1)loca和cont与循环的结合。 2)n=80,indeon数学tos1,用find和seek查找n。 3、数据计算: 记录统计;数值字段求和;求平均值;分类汇总。 记录统计: count[范围][for<条件>] 数值字段求和: sum[范围][表达式表][for<条件>][to<内存变量名表>] 求平均值: aver[范围][表达式表][for<条件>][to<内存变量名表>] 分类汇总: totalon<汇总关键字>to<汇总库文件名>…… 注意: 分类汇总时,先按关键字索引,要看汇总结果须打开汇总库。 4、多工作区操作: 工作区的选择: sele<工作区号>/<别名>/0 表文件的关联: setrelato<关键字>into<别名>[addi] 注意: 1)被关联表在别名工作区打开并按关键字建索引,主表在当前工作区打开。 是一种临时关系。 分为: 同名字段关联 非同名字段关联 按数字表达式(记录号)关联。 2)被访问表STUD.DBF(1区)字段名姓名的引用: A->姓名、A.姓名、stud->姓名、stud.姓名 表文件的联接: 被联接数据表在别名工作区上打开。 joinwith<别名>to<新库名>for<条件>[fields<>] 表文件之间的批量更新: updateon<关键字>from<别名>repl<字段名1>with<表达式1>……[random] 表文件的关闭: closeall 注意: 1)熟练掌握从一个表找到某人,显示他两个表的字段。 2)掌握用一个表数据替换另一个表字段数据。 3)三个表的串联和并联的关联方法。 第六章数据库与视图 1.数据库: 是一个包含表、索引、视图、表之间的永久关系等的容器. 与数据库操作相关的命令: createdatabase<数据库名> opendatabase<数据库名> modidatabase打开数据库设计器 use数据库名.dbc 2.视图: 是一种虚表,但通过视图可更改基表中的内容。 分为本地视图和远程视图(应先建连接)。 注意: 1)用数据库中快捷菜单新建、添加、删除、表 2)数据库表与自由表的表设计器的区别。 3)学会建立表的永久关系。 (一对一、一对多) 4)学会建立视图。 第七章SQL语言 (1)表结构的创建: creatable<表名>(列定义[,…][表约束]) 例: creatablestud(姓名char(8),性别char (2)) (2)ALTERTABLE<表名> [ADD<新列定义>]增加新列 [ALTER<列名><数据类型>]修改字段类型 [RENAMECOLUMN<列名>TO<新列名>]修改字段名 例: ALTERTABLESTUDENTALTER学号N ALTERTABLESTUDENTADD化学N(3) 注: 修改列时,不能改列名,不能将宽度减少(在列中已有数据时) (3)删除数据表的命令格式: (表可以打开,也可以不打开) DROPTABLE<表名> (4)向表中插入一新记录(末尾) insertinto<表名>(列名1[,…])values(值1[,…]) insertintostud(学号)value(“20030101”) (5)修改表中一行或多行记录的某些列的值 update<表名>set<列名>=<表达式>[,…][where<条件>] updatezgset职工号="20030105"where职工号="20030101" (6)删除数据记录 delefrom<表名>[where<条件>] 省略条件: 删除所有记录,该删除为逻辑删除(即给符合条件的记录打上删除标记*)。 (7)SQL查询 命令: SELECT<字段名表>FROM<表文件名>[WHERE<条件>][groupby<分组字段>][having<筛选条件>][orderby<排序字段表>][asce][desc] 说明: (1)<字段名表>: 查询输出的的字段,多个字段用“,”隔开,全部字段用“*”. (2)FROM<表文件名>: 查询的表文件,可打开或不打开。 (3)WHERE<条件>: 引导查询条件。 (4)GROUPBY<列名>[,<列名>…][HAVING<筛选条件>]: 把查询结果中的行按一个或多个列的值分组;可以指定在查询结果中的各组应满足的条件。 (5)ORDERBY<列名>[ASC/DESC][,<列名>[ASC/DESC]…]: 用于指定一个或多个数据作为排序的依据。 例1: 简单查询 sele*fromstud&&从表stud.dbf中输出所有字段) sele姓名,性别,数学fromstudwhere性别=”女”and数学>=60(and/or/not可加/不加两点) &&从表中输出及格女同学的姓名、性别、数学字段 例2: 多表查询 selest1.姓名,st1.性别,st2.数学,st2.英语fromst1,st2wherest1.姓名=st2.姓名 &&两表所有相同姓名的字段 selest1.姓名,st1.性别,st2.数学,st2.英语fromst1,st2wherest1.姓名=”张三”.and.st2.姓名=”张三” &&代替索引、关联 例3: 分组查询 sele*fromst1groupby性别havingcount(*)>=3 &&输出结果按性别分成两组,且只输出记录个数大于3的一组。 例4: 查询排序 sele*fromst1wheresubs(学号,1,2)=’99’orderby数学desc &&查询结果只输出学号前两位为“99”,且输出结果按数学成绩降序排列。 例5: 嵌套查询(查询的条件是另外一个查询的结果) Sele*fromstudwhere入学成绩=(sele入学成绩fromstudwhere;姓名=”张三”) 另注: 运算符and,or,not,betweenand,in,like(字符匹配_和%)。 %为任意长度的字符串,_为一个字符或一个汉字(据系统而定) 统计函数AVG,SUM,COUNT,MAX,MIN的使用。 第八章、程序设计 1、人机交互式输入输出语句: wait accept input 注意: 这三个命令的区别。 2、程序文件的建立和执行(.prg) 建立: modicommand<程序文件名> 菜单 项目管理器的代码选项卡下的程序 执行: do<程序文件名>(命令窗口) 程序→运行(菜单) (工具) 3、结构化程序设计的三种基本结构(顺序、选择、循环);常用的输入、处理、输出功能模块的设计方法。 条件格式: If<条件> …… [else ……] endif docase case<条件1> …… case<条件n> …… otherwise …… endcase 循环格式 (1)dowhile.not.eof() …… skip… enddo (2)locafor<条件> dowhile.not.eof() …… cont… enddo (3)dowhilek<=N …… k=k+1… enddo (4)dowhile.t. …… Exit… enddo (5): for<内存变量>=<初值>to<终值>[step<步长>] 循环体 endfor (6)针对表中的记录进行操作 scan[范围][for<条件>] 循环体 endscan 注意: 1)注意进入死循环。 加以举例。 2)熟练编写九九乘法表、画宝塔形星号、用LOCA输入表中所有数学及格的同学、求5个数中最大的数、5个数排序。 4、主程序与子程序,过程与过程文件(.prg) 建立: modicomm<过程文件名> 每一过程以proc<过程名>开头,以retu结束。 打开: setprocto<过程文件名> 调用: do<过程名>[with<参数表>] 注意: 过程调用中的参数传递(实参与形参的一一对应)。 5.内存变量 (1)作用域 1)局部变量(private宣布(屏蔽)、不宣布)、全局变量(public) 2)表单的各程序段定义变量只能局部使用。 (2)数组(先定义,后使用) 1)先定义(全是.F.)后赋值: dime数组名(下标1[,下标2]),…… 2)二维数组元素名和一维数组元素名互换。 例dimexyz(2,3) y(2,1)与y(4)等价。 Y(1,1)① Y(1,2) ② Y(1,3) ③ Y(2,1) ④ Y(2,2) ⑤ Y(2,3) ⑥ 3)数组与库文件之间的数据传递: scat[fields<……>]to<数组名> 注意: 有扩展数组元素和定义新数组功能。 Gatherfrom<数组名>[fields<……>] 注意: 数组元素的数据类型与字段类型匹配。 6、格式输入、输出命令 @行,列say<表达式>[get<变量>][pict<格式符>][function<功能符>][range<范围>][valid<条件>] read 注意: Pa=123.456 @4,10saypapicture‘***,***.**’&&输出: ****123.45 @4,10saypapicture‘$$$,$$$.$$’&&输出: $123.45 7、菜单技术 (1)普通菜单: 1)? “提示字符” 2)@say“提示字符” 3)text “提示字符” endtext (2)亮条式菜单: @行,列prompt“提
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VFP 强化 复习 提纲