VFP教案

更新时间:2024-02-28 00:51:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

VFP教案 第一章 VFP基础

WINDOWS预备知识:窗口、桌面、对话框、菜单

窗口组成:标题栏、菜单栏、工具栏 一、VFP界面 1、主界面

标题栏、菜单栏、工具栏

2、常用命令 命令可以只输入前四个字母,正确的命令用蓝色显示。

CTRL+F2 显示命令窗口 CTRL+F4 隐藏命令窗口

在中文输入法状态,一定要使用半角、英文标点,否则容易出错。 打开表后:

LIST 列出表中的所有数据 BROWSE 浏览表中的记录

SKIP 1 将表的指针指向下一条记录 SKIP –N 指针指向上N条记录

当N省略时,默认向下移动1条记录。 我们把表中的行称作记录。 DISPLAY 输出当前行的数据

1

? 输出命令,换行输出。 ?? 输出命令,在同一行输出 CLEAR 清除屏幕内容 QUIT 退出VFP系统 3、项目管理器窗口 管理数据库、表、程序

项目管理器的各个标签可以拆分悬挂,也可以停放在屏幕最上层。

对数据库的操作:新建一个数据库,添加一个已经存在的数据库。

移去,将数据库从该项目中移出。删除,将数据库从硬盘上直接删除。

数据库中,可以对表进行操作:新建、添加、移去、删除。 表的新建和修改。 4、工具栏

标准工具栏和定制工具栏。

在定制工具栏之前可以新建工具栏名字。

二、信息与数据处理

1、数据 存储在媒介上的物理符号 2、信息 有用的数据

2

3、数据处理 将数据加工成信息的过程。

三、数据管理的发展阶段

1、人工管理 数据与程序混合存储 2、文件管理 数据与程序分开存储,容易产生较大的数据冗余。

3、数据库管理 集中式共享数据,减少数据冗余,数据独立性最高阶段。 三、数据库系统

数据库系统包含:数据库和数据库管理系统,DBS包含DB、DBMS。

数据库系统: DBS——DataBase System

数据库: DB——DataBase

数据库管理系统: DBMS——DataBase Management System DBMS是DBS的核心。数据库系统包含五个组成部分:DB、DBMS、人员(DBA)、硬件、软件。利用开发工具可以开发数据库应用系统(DBAS)。 四、数据模型 1、实体

3

表中的一条记录,也指表中的行。 实体具有属性:表中的字段(如学号、姓名、年龄)。 2、实体间的联系 一对一 1:1 一对多 1:N 多对多 N:N

一个项目经理可以管理多个项目,一个项目只能由一个项目经理管理,项目经理和项目之间的关系是: 3、数据模型

(1)层次模型 树状模型 (2)网状模型

(3)关系模型 二维表来表示,二维表也叫做关系。 五、关系数据库 1、关系模型术语 关系:二维表 元组:表中的行 属性:表中的列 域:属性值的范围

关键字:可以对表中的记录进行识别的

4

字段,不允许重复(主关键字)。

外部关键字:对于有联系的表,子表中的关键字段设置为外部关键字,父表中的对应字段是主关键字。

2、关系的5个特点:P10—P11 3、实际关系模型

六、关系运算——关系运算的结果仍然是一个关系(二维表)。

1、传统的运算:+ - * / 并 交 R A B C 1 1 2 1 2 3 S A B C 3 3 7 T A B C 1 1 2 1 2 3 3 3 7 A) R*S=T B) R/S=T C) R+S=T

5

D) R-S=T 2、专门的关系运算 选择 行运算 投影 列运算

连接 对两个表的连接 七、数据库设计基础 1、设计原则:“一事一地”原则等P15 2、设计步骤:需求分析,确定表,确定表的字段,确定联系,设计求精(填充数据、完善细节)。

八、向导、设计器、生成器

VFP主要工具有向导、设计器、生成器。用向导生成报表;用表设计器来新建、修改表,用数据库设计器新建、修改数据库;用参照完整性生成器来设置参照完整性。

第二章 VFP程序设计基础 一、常量 在程序运行时其值不发生改变的量。

1、数值型常量 有整型数和实型数(带小数点)组成

整型数:长整型数(Long)、短整型数

6

(Short)。

实型数:单精度浮点型(Single)、双精度浮点型(Double)。

2、货币型常量 (定点数据)小数位数有4位的数 3、字符型常量 定界符有三种:‘’ 或 “” 或 []

以标准的ASCII代码形式进行输出。 定界符之间可以嵌套,但是不能骑跨(“[”])。

4、逻辑型常量 用真和假来表示值,用.T. .F. 或者 .Y. .N.表示,也可以用小写字母表示:.t. .y. 表示真 .f. .n.表示假。

5、日期型常量 用{^2008/5/26}表示,花括号是定界符,^是脱字符,用来表示严格的日期格式(年份是四位数的)。 间隔符可以用. 或 / 或 — 或空格这四种。

相关命令:

set date to ymd /mdy/dmy 设置日期格式为年月日/月日年/日月年

7

set century on/off 对输出的日期显示四位或两位年份。

set strictdate to 0/1/2 0不严格的日期检查 1、2 严格的日期检查

对输入的日期进行格式检查,1、2时要求是四位数年份。

set mark to [. / -] 设置间隔符为. 或 / 或 —或空格,必须用定界符

set mark to 命令后面无任何字符,则默认为/

Set century to 19(世纪数值)rollover n(年份)

当实际的年数小于年份N时,输出世纪的数值+1

当实际的年数大于年份N时,输出世纪的数值

年份N 默认的值是上一次保存的值。 6、日期时间常量 格式为{日期,时间},有传统和严格两种格式。

日期常量的单位是天数,日期时间常量的单位是秒数。

二、变量 内存中的存储空间

8

变量名命名规则:也适用于数组的命名规则

(1)只能用字母、数字、汉字和下划线_构成。不能是- *#@. (2)不能用数字开头。

(3)不能和VFP的命令重名。 赋值号“=”:运算的方向是从右到左,将右边的值赋给左边的变量或数组。注意,赋值号左边只能是变量或数组,右边可以是变量(已经存在的变量)、各种常量或表达式、函数。 1、内存变量

可以在赋值语句中,直接定义一个内存变量。内存变量的类型包括:字符型C,数值型N,货币型Y,逻辑型L,日期型D,日期时间型T。

内存变量用Display memory 分页查看,List memory列表查看。

用Release all清除内存变量,释放内存空间。

给内存变量赋值可以用“=”号,或者STORE TO 命令(可以同时给多

9

个变量赋值)

内存变量可以和字段变量(表中的一个字段)重名,但是输出时先输出字段变量的值。如果要先输出内存变量的值,则需要在内存变量的前面加上M. 或者M->

2、数组 内存中开辟的一段连续的存储空间

定义数组:DIMENSION A(3)定义一个数组A,最多有3个元素

或者DECLARE A(3) 格式:数组名(下标的上限值)

用STORE语句赋值时,只给出数组的名字,给数组所有元素赋相同的值。如果指定了数组元素下标,可以给数组的元素分别赋值。

A(3) 下标为一个数值的,是一维数组。

B(2,3)下标为两个数值的,是二维数组。

B(1,1) B(1,2) B(1,3) B(2,1) B(2,2) B(2,3) 10

二维数组可以用一维数组来表达。例如:用B(5)来表达B(2,2)

3、内存变量和数组的显示、赋值与清除 赋值:STORE TO

显示:?显示并计算表达式的值 ?? 在同一行显示值 显示内存变量:LIST MEMORY

LIST MEMORY LIKE 通配符(A*)以A开头的变量

DISPLAY MEMORY 按页显示内存变量

清除:CLEAR MEMORY RELEASE 变量名

RELEASE ALL[EXCEPT] 清除所有(除了)

RELEASE ALL [LIKE ] 清除某一类变量。

4、表与数组之间的数据传递

SCATTER TO 数组名 将表中的字段值传给数组元素。

GATHER FROM 数组名 将数组元素的值传入表中。必须先定义数组。

11

三、表达式 常量、变量和运算符组合成的式子

函数表达式(括号运算)、算术表达式、关系表达式、逻辑表达式

高 优先级 低

1、算术表达式、字符表达式与日期时间表达式

(1)算术表达式(数值表达式) 高 括号运算 ()

优先级 乘方 ** 或^ 2-3^2=-7

乘* 除/ 求余 % (也叫取模,

求得的余数与除数符号一致)

低 加+ 减-(当作为负号时,优先级高于乘方)-3^2=+9

注意:求余的公式中有一边是整数的,另一个数字先四舍五入取整,再进行求余运算。

(2)字符表达式——运算的对象是字符。

+ 将前后两个字符串连接在一起

- 将前后两个字符串连接在一起,并将

12

前一个字符串后边的空格移到新字符串的尾部。

(3)日期、日期时间表达式 可以用+和—与数值进行运算,但是日期与日期之间,时间与时间之间只能进行减运算,不能进行加运算。

2、关系表达式 返回的是逻辑值.T. 或.F.

< > <= >= = != # 字符精确比较 = = 字符串包含$ 不等号: != < > # 逻辑真>逻辑假

字符比较:Set Collate To “Machine| Pinyin|Stroke”采用逐位比较 MACHINE机器码比较,

按照ASCII码值大小比较,空值为0,数字0-9在48—57,

大写字母A为65,B是66??90, 小写字母a为97——122。

PINYIN 按照拼音规则来比较大小 小写字母比大写字母小

STROKE 按照笔画多少来比较大小。

13

字符包含:左边字符包含于右边字符,返回真。

如:左字符$右字符,左边包含于右边,返回.T.。当左边字符为空值(EMPTY值,不是空格)时,返回假。

字符精确比较: 返回的值是真、假。 == 只有当左右两个字符完全相等时,返回真。

= EXACT 设置为ON 在较短的字符后边用空格补足长度,这时的两个字符完全相等的返回真。

= EXACT 设置为OFF 右边字符与左边字符的前边相等,返回真 左字右字= = = = 符 符 EXACT EXACT ON OFF ‘ab’ ‘ab’ .T. .T. .T. ‘ab’ ‘abc’ .F. .F. .F. ‘abc’ ‘ab’ .F. .F. .T. ‘ab ’ ‘ab’ .F. .T. .T. ‘ab’ ‘ab ’ .F. .T. .F. 3、逻辑表达式

14

NOT 非 非真为假,非假为真。将表达式的值真假对调。

AND 与 只有当左右两边同时为真时,返回真,否则为假。 同真为真,否则为假

OR 或 左右两边只要有一个为真,则为真,左右两边同时为假时返回假。 优先级从高到低是:NOT、AND、OR

四、函数 带有括号的运算,括号中是参数。 1、数值函数

ABS(X) 绝对值

SIGN(X) 指示函数,正数返回1,负数返回-1,0返回0 SQRT(X) 平方根

PI() 返回π值,不需要参数 INT() 返回整数部分,不四舍五入取整。

Int(3.4)=3 Int(3.8)=3

Int(-3.4)=-3 Int(-3.8)=-3 CEILING()返回比当前数值大的整数。

15

ceiling(3.4)=4 ceiling

(3.8)=4 ceiling (-3.4)=-3 ceiling (-3.8)=-3 FLOOR() 返回比当前数值小的整数。

floor(3.4)=3 floor

(3.8)=3 floor (-3.4)=-4 floor (-3.8)=-4

ROUND(X,N) 对数值X,在小数位N处四舍五入取整,当N<0时,对整数部分四舍五入。

MOD(X,Y) X对Y求余。同X%Y。 MAX(X1,X2,??) 取最大值 MIN(X1,X2,??) 取最小值 2、字符函数 参数是字符 LEN(“”) 求长度,一个中文字符有2个长度。 LOWER(“”) 转换成小写字母 UPPER(“”) 转换成大写字母 SPACE(N) 返回N个空格 删除空格函数: TRIM(‘’) 删除字符串右边的空格

16

LTRIM(‘’) 删除字符串左边的空格

ALLTRIM(‘’) 删除字符串两边的空格

取子串

LEFT(字符串,N) 在字符串左边取N个字符

RIGHT(字符串,N)在字符串右边取N个字符

SUBSTR(字符串,N,M) 从字符串N处取M个字符

注意:当第三个参数M省略时,从N处一直取到字符串末尾。 计算子串出现次数

OCCURS(子串1,字符串2) 子串1在字符串2中出现的次数。 求子串位置

AT(字符串1,字符串2,N) 字符串1在字符串2中第N次出现的位置。 ATC(字符串1,字符串2,N) 同AT()函数,字母不区分大小写。 子串替换 子串插入

17

STUFF(字符串1,M,N,字

符串2) 先从字符串1的M处删除N个字符,再插入字符串2。先删除,后插入

字符替换 将对应的字符进行替换

CHRTRAN(字符串,字符1,

字符2)

将字符串中的字符1用字符2

一一对应的进行替换,一个中文字符替换两个西文字符。 字符匹配

LIKE(字符串1,字符串2) 返回真、假,字符串1匹配于字符串2。 在字符串1中可以用通配符,*号匹配若干个字符,一个?匹配一个西文字符。 3、日期函数、日期时间函数 注意返回值的类型

返回当前的计算机系统的日期时间。 DATE() 日期型 D DATETIME() 时间型 T TIME() 返回字符型 YEAR() MONTH() DAY() 返

18

回数值型 HOUR() MINUTE() SEC() 返回数值型 4、转换函数

STR(数值,长度L,小数位数N) 将数值类型转换为字符型。 (1)长度L大于数值长度时

数值小数大于N,先按照N位四舍五入,再于前边补足空格。

数值小数小于N,先在后边用0补足小数位N,再于前边补足空格 (2)长度L小于数值长度时

数值小数大于N,先按照长度L四舍五入,再按照N位四舍五入。若经过L截取长度后,数值小数比N小,不用按照N位四舍五入。 若经过L截取长度后,数值小数比N大,再按照N位四舍五入。

当长度L小于整数部分时,返回L个*号

VAL() 将字符型转换为数值型,方便计算

19

CTOD() 将字符型转换为日期型 CTOT() 将字符型转换为日期时间型

DTOC() 将日期型转换为字符型 TTOC() 将日期时间型转换为字符型

宏替换 &字符 先用字符来表示表的名字,再用USE &字符来进行宏替换,这时就可以用&来代表这个表。用&字段(用字符表示)就可以代表字段的值。

5、测试函数

BETWEEN(X,Y1,Y2) X在Y1、Y2范围之间,返回真,否则返回假。 ISNULL(X) 当X为.NULL.值时,返回真。

EMPTY(X) 测试X值为空或者是0,但是有类型,返回真。

VARTYPE(X) 测试参数X的数据类型。

IIF(表达式,值1,值2) 当表达式为真,返回值1,为假返回值2。

20

6、表格函数

EOF() end of file 当到达文件末尾时,返回真。指针指向最后一条记录的末尾。

在循环中,常用语句:WHILE NOT EOF() 意思是指当在表中循环时,NOT EOF()条件成立,执行对数据的操作。

BOF() 在文件头,返回真,否则为假。指针指向第一条记录。

RECNO() 表中记录的位置 RECCOUNT() 表记录的个数。 DELETED() 测试该记录是否被逻辑删除。

逻辑删除语句:DELETE FOR 条件

五、程序

程序:一组命令

1、程序文件的建立、修改和执行

MODIFY COMMAND创建或修改程

21

序。保存成.prg文件

用DO 程序文件名 命令来执行程序。 注意:创建或修改程序后,必须要执行一遍。

用*号可以进行语句注释,但该语句必须单独一行。

用&&可以在语句的末尾进行注释。 VFP规定,每条语句占一行。一句一行。 若语句较长,中间用;结尾作续行符进行分隔。一句多行。

2、程序中常见的执行命令

DO 程序文件名 执行(调用)另一个程序,或调用自身程序。 CANCEL 取消程序运行,返回命令窗口。

RETURN 结束当前程序,返回上一级程序或返回命令窗口。 QUIT 退出VFP系统 3、程序中的输入输出命令 输入命令:

INPUT “字符表达式” TO 内存变量

22

将输入的任何类型的数据(根据类型需要加上定界符号)赋给变量。

ACCEPT “字符表达式” TO 内存变量

只能将字符数据(不需要定界符)赋给变量。

WAIT “字符表达式” [TO 内存变量] [WINDOW] [TIMEOUT n] 只接收字符数据(不需要定界符)赋给变量。在WINDOW窗口中出现提示字符,当到规定延迟时间时,仍未输入内容,则将空字符串赋给变量。很少用于给变量赋值,多数用于提示信息。 输出命令: ? 另起一行输出 ??同行输出

4、程序结构:顺序、选择、循环

(1)选择结构:IF语句和CASE语句 单分支选择结构:IF ?? ELSE??ENDIF

格式: IF 条件表达式 条件成立,执行IF子句

(ELSE 否则,条件不成立,

23

执行ELSE子句) ENDIF

IF语句可以在IF子句或者ELSE子句部分进行嵌套,但是必须完整地包含一个IF??ENDIF结构。

多分支选择结构:

DO CASE??CASE1??CASE2??OTHERWISE??ENDCASE (2)循环结构 FOR循环

DO ??WHLE 循环 SCAN循环 5、程序模块

(1)模块——子程序,在程序中的一段小程序

用PROCEDURE 模块名开头, 1、用ENDPROC结束, 2、或者用RETURN结束,

3、或者在模块的后边不加结束语句,直接以下一个模块的开头为结尾。 (2)调用

24

用DO 程序名进行调用。如同在命令窗口中调用程序文件一样。

子程序的调用在主程序中进行,主程序写在子程序之前。 (3)参数传递

在模块中用(PARAMETERS 形式参数名)来定义形式参数。

在程序文件中,对形式参数进行调用。 调用语句:

语句1: DO 模块名 WITH 实际参数 语句2: 模块名(实际参数)

实际参数和形式参数数量、类型、位置必须一致。 参数传递:

按地址传递——实际参数和形式参数共用一个存储地址,当形参改变时,实参也发生改变。 语句1: DO 模块名 WITH 实际参数,实际参数按地址传递。

按值传递——实参前后加上括号,实参只是把值传递给形参,实参的值不变。 语句2: 模块名(实际参数)是按值

25

传递的,

语句1: DO 模块名 WITH (实际参数),实际参数按值传递。

(4)变量作用域——1、变量作用的范围,2、变量值的屏蔽。

全局变量:PUBLIC 变量名

在模块顶部进行定义,可以用于多个模块之中。

私有变量:PRIVATE 变量名

在模块中直接赋值进行定义的变量,作用的范围是当前的模块和它的下级模块。与全局变量同名时,将在作用域内屏蔽全局变量的值。

局部变量:LOCAL 变量名

在模块中定义变量,作用的范围是当前的模块。

与全局变量同名时,将在作用域内屏蔽全局变量的值。

第三章 数据库和表的操作

一、表的结构、创建和使用 (自由表)

26

1、表的结构描述 字段名: 字段类型 字段宽度 小数位数

2、表结构的创建、修改 CREATE 创建表

MODIFY STRUCTURE 修改表 3、工作区 范围:1-32767 表示方法:

(1)数字法:用数字1-32767来表示打开的表的工作区域。

(2)代号法:前10个表用ABCD??J来表示,后面的用W11至W32767表示。 (3)别名法:USE 表名 ALIAS 别名(已经打开的表)

注意:0号工作区意义:空闲的最小号工作区。

4、表的打开与关闭

USE 路径/表名 打开表 只有在独占方式下打开才可以修改表结构

27

CLOSE ALL关闭所有表和数据库。 二、表的基本操作(针对表记录的操作) 1、记录的输入与浏览

浏览命令:BROWSE 可以浏览表中的记录

用Ctrl+Y或表菜单中追加新记录来添加记录。

增加记录:APPEND 在后边添加记录 APPEND BLANK在后边添加空白记录行

INSERT 在记录的中间插入新记录。但是当表中存在索引时,插入无效。 2、记录的删除、修改与显示

逻辑删除:DELETE 逻辑删除当前记录,仍然保留在计算机中。

DELETE [FOR 条件]删除

符合条件的记录

恢复逻辑删除的记录:RECALL [FOR 条件]

物理删除:PACK 将置删除标记的记录从硬盘上删除,表的结构仍存在。 物理删除表格:ZAP 物理删除表中全

28

部记录,不管是否有删除标记。

删除记录的访问:SET DELETE ON 不显示| OFF显示 删除记录

交互方式修改记录:EDIT、CHANGE 直接修改记录: REPLACE [ ALL ] 字段 WITH 新的字段值

修改当前[或者所有]记录的字

段值。

显示记录:LIST 在屏幕上列表显示记录 DISPLAY显示当前记录 3、记录的查询和定位

概念:记录指针、文件头、文件尾、当前记录

相关函数:RECNO()、EOF()、BOF()

绝对定位:GO 或 GOTO TOP|BOTTOM到文件头|尾 相对定位:SKIP +2或-2向后或向前移动N行 条件定位:LOCAT FOR 条件 指向符合条件的第一条记录,若指向符合下一条记录,用CONTINUE命令。

29

4、数据的复制

COPY TO 文件名.文件类型 三、数据库的创建与修改 1、数据库的构成

创建 CREATE DATABASE 修改 MODIFY DATABASE

打开(已存在数据库)OPEN DATABASE

2、数据库表的扩展属性

字段有效性:在有效性窗口中设置字段值的范围、格式 记录有效性:

提示信息:当值超出范围,提示错误。 字段默认值:

输入格式和掩码:用9代表数字,用字母代表固定输入内容。

字段注释:为了维护数据库时使用 索引:为了对表记录进行排序而设置的一种结构。

触发器:当插入、更新、删除表记录时,出现的约束规则。 四、数据库的操作

30

1、索引的概念

主索引:字段值不允许重复。在一个表中只有一个主索引。(有时也称作主关键字)

候选索引:字段值不允许重复。在一个表中可以有多个候选索引。

唯一索引:字段值允许重复。但是在索引中只保留唯一的索引项目值。

普通索引:字段值允许重复。在一个表中可以有多个普通索引。系统默认建立的是普通索引。

表之间的联系通常通过主索引对应普通索引建立联系。 2、建立索引

在表设计器中建立 结构复合索引,索引文件与表名同名,打开表时,自动打开索引文件。

用命令创建索引 INDEX ON 字段名 TAG 索引名

使用索引排序: SET ORDER TO 索引名

五、数据库的数据完整性(约束规则)

31

1、实体完整性——表中记录的唯一性。 数据库的表中不允许存在重复的记录,也不允许空记录。

用主关键字、主索引或者候选索引来保证实体完整性。 2、域完整性

表中的字段(属性)值必须符合数据类型和值的范围要求。

经常用字段的有效性规则进行约束。 3、参照完整性

两个有关联的表在更新、插入、删除时必须符合的规定。

父表(主关键字)与子表(普通关键字)建立关联,一对多联系。

更新 删除 插入 级联 —— 限制 忽略 更新和删除是针对父表的操作,插入是针对子表的操作。 在更新和删除时,级联是父表级联子表,限制是子表限制父表(若子表有记录的,

32

则限制父表的更新和删除)。

在插入时,只有限制和忽略,限制是父表限制子表(若父表中没有记录的,则禁止子表插入新记录)。

级联和限制,是对于父表与子表之间的关联操作。级联是父表对子表的级联,限制是父表对子表中有相关记录的(更新、删除)限制,或者子表对父表没有相关记录的(插入)限制。

忽略,是指父表和子表的操作无关联。 4、表之间的关联(临时联系)

SET RELATION TO 父表主索引字段 INTO 子表名

临时建立两个表之间的关联。

第四章 SQL语言(结构化查询语言)

一、数据查询——SELECT语言,对表中数据直接进行查询。

SELECT 查询内容 FROM 表名

33

WHERE 条件子句

如果要查询符合条件的所有记录,查询内容用通配符*表示。

例:SELECT * FROM 表名 WHERE 条件子句 1、SELECT字段

(1)查询计算 COUNT计算数量|SUM求和|AVG求平均值|MAX|MIN最大/最小值。DISTINCT(字段)去掉查询结果的重复值。

(2)查询显示 SELECT * TOP 3 或者TOP 30 PERCENT

对于ORDER BY语句排序的结果进行显示,显示前3条或者前百分之30的记录。

2、FROM 表名称——超连接查询,对两个表的操作。

内联接INNER JOIN 也等价于 JOIN 左联接 LEFT JOIN 右联接 RIGHT JOIN 全联接 FULL JOIN

SELECT * FROM 仓库 INNER

34

JOIN 职工 ON 联接条件

内联接,也叫普通联接,等价于JOIN。两个表中满足条件的记录出现在查询结果中。

自然联接 去掉重复属性的等值联接

SELECT * FROM 仓库 LEFT JOIN 职工ON 联接条件

左联接,两个表中满足条件的记录,第一个表中不满足条件的出现在查询结果中。

SELECT * FROM 仓库 RIGHT JOIN 职工ON 联接条件

右联接,第二个表中不满足条件的记录也会出现在结果中。

SELECT * FROM 仓库 FULL JOIN 职工ON 联接条件 全联接 3、WHERE 条件子句

(1)简单条件 WHERE 字段变量=或>=字段值

(2)简单联接 WHERE表A.字段=表B.字段 可以在两个表联立查询,将对应

35

字段作为条件进行查询。

(3)特殊运算 WHERE 字段 BETWEEN ?? AND 或者 LIKE LIKE字符匹配‘%字符’% 是通配符。

(4)嵌套查询 内层查询的结果提供给外层使用。

SELE * FROM ??WHERE IN(SELE * FROM ??) (5)别名查询与自连接查询

在表名后加一个字母别名,利用别名对同一个表进行自连接查询。 (6)内外层互相关查询

内层查询和外层查询共用一个表。内层和外层之间有关联。

(7)量词和谓词查询 ANY ALL SOME EXISTS存在 IN 4、排序与分组——WHERE子句之后的命令

ORDER BY 排序,默认按升序排序(ASC),降序用DESC

GROUP BY [HAVING ] 分组,用

36

于按年度统计、班级分组、科目分类、每个人等计算方面。HAVING 子句只能用在GROUP BY 语句的后边,是进行进一步分组的语句。 5、集合并运算 SELE 语句1 UNION

SELE 语句2

将两个SELE 查询语句的结果连成一个表。两个语句的字段必须完全一致相匹配。

6、存放查询结果 在查询语句的最后,进行结果的输出。

INTO ARRAY 存放到数组 INTO CURSOR 存放到临时表 INTO TABLE 存放到永久表 TO FILE 存放到文本文件 TO PRINTER 输出到打印机

二、数据操纵 对表记录的操作

INSERT 插入 UPDATE 更新 DELETE 删除

37

格式:

1、INSERT INTO 表名(字段) VALUES(字段值)

若省略字段,则向表中插入一个

元组(行)。

2、UPDATE 表名 SET 字段=字段新值 [WHERE 条件]

3、DELETE FROM 表名 [WHERE 条件] 若未设置条件,则删除全部记录 三、数据定义 对表结构的操作,类似于表设计器操作

CREATE 创建 DROP 删除 ALTER 修改

1、CREATE TABLE | DBF 表名(字段、类型、主关键字<主索引> PRIMARY KEY | UNIQUE 候选索引)

CHECK 约束规则 ERROR 出错信息DEFAULT默认值

FOREIGN KEY 外部关键字 | REFERENCES 表的关联 2、DROP TABLE 表名 3、ALTER TABLE 表名

38

(1)增加字段ALTER TABLE 表名 ADD 字段、类型 [CHECK]

修改字段ALTER TABLE 表名 ALTER 字段、类型、宽度

(2)修改有效性规则 ALTER TABLE 表名 ALTER 字段 SET CHECK(ERROR)

设置默认值 ALTER TABLE 表名 ALTER 字段 SET DEFAULT

删除有效性规则 ALTER TABLE 表名 ALTER 字段 DROP CHECK

删除默认值 ALTER

TABLE 表名 ALTER 字段 DROP DEFAULT (3)ALTER TABLE 对列字段的修改、索引的修改

改字段名 ALTER TABLE 表名 RENAME COLUMN 旧字段名 TO 新字段名

删除字段 ALTER TABLE 表名

39

DROP COLUMN 字段名

定义候选索引 ALTER TABLE 表名 ADD UNIQUE 字段表达式 TAG 索引名

删除候选索引 ALTER TABLE 表名 DROP UNIQUE TAG 索引名 四、数据控制 了解知识 GRANT REVOKE

第五章 查询与视图

一、查询

1、按要求生成SQL SELECT语句 可以由自由表、数据库表以及视图来创建,可以生成查询的去向,也可以以查询文件(.qpr)的方式进行保存在磁盘中。

2、查询设计器

字段:表的字段 对应SELECT语句查询的字段

杂项:显示重复值,前边多少条记录,对应DISTINCT、TOP命令

40

联接:内联接、左、右联接等 对应FROM后边的语句

筛选:设置WHERE条件

排序:设置ORDER BY 排序字段 分组:对应GROUP BY [HAVING 子句]

3、查询去向和运行查询

将生成的查询结果保存到临时表、表、文本,等价于SQL命令的保存结果语句:INTO TABLE、TO FILE。 运行查询:DO 查询名.qpr。在运行之前,要先保存。

二、视图——在数据库中创建

视图——打开的表的临时查询窗口,可以跟随数据源进行更新。

创建视图:CREATE VIEW 视图名 AS SELECT 语句

删除视图:DROP VIEW 视图名 1、分类:本地视图(当前数据库中的表),远程视图(当前数据库之外的表)。 2、视图设计器:与查询设计器的区别——3点:不生成磁盘文件,结果直接保

41

存在数据库中。视图有用于更新的更新条件选项卡。没有查询去向的问题。 3、更新视图:更新涉及表的字段、关键字。

第六章 表单 一、基本概念

对象:实体,是类的具体化。

类:把对象的统一的特征进行汇总,是对象的抽象。可以分为基类和子类。子类可以继承父类的相关属性、事件、方法。

二、表单与控件

表单是容器、界面,控件是在表单上各种操作的各种部件。

表单和控件称为对象,对象具有:属性、事件和方法。

属性是对象的静态特征,比如长、宽、高、颜色、字体,在属性窗口中设置,或者用代码:thisform.对象名.属性=属性值

42

事件是对象可以接收的动作。被动。在代码框中选择事件过程。

方法是对象可以做出的动作。主动。用法:对象名.方法

1、创建、修改、运行、退出表单 CREATE FORM 表单名 MODIFY FORM 表单名 DO FORM 表单名

退出表单命令:THISFORM.RELEASE 对表单应用释放内存的方法。 2、表单常见属性 NAME 名字,识别对象的唯一的依据、标识。

CAPTION 标签 表单的标题 VISIBLE 可见性 3、表单常用事件

INIT 装入,表单装入内存、LOAD 装载 INIT在LOAD事件之后发生。 DESTROY

CLICK 单击鼠标 ERROR UNLOAD 卸载

43

GOTFOCUS、LOSTFOCUS 获得焦点、失去焦点(光标) KEYPRESS 按下键盘

RIGHTCLICK 单击鼠标右键 4、表单常用方法

RELEASE 释放内存

SHOW 显示 在表单的LOAD事件发生时,控件是不可见的,如果在LOAD事件中要对控件进行操作,必须先用SHOW方法让表单可视。

HIDE 隐藏表单,但是仍然在内存中

REFRESH 刷新

SETFOCUS 设置焦点(光标)

最常用命令:THISFORM . RELEASE关闭表单,释放内存。退出语句 三、常用控件 控件的常用属性:1、NAME、CAPTION 2、HEIGHT、WIDTH、TOP、LEFT 3、VISIBLE(可见)、ENABLED(可用) 4、FONTNAME、FONTSIZE、FONTBOLD、FONTITALIC、

44

FONTUNDERLINE字体相关属性 设置焦点:按Tab键后,光标在控件上移动的顺序。可以设置控件的TabIndex属性,调整光标移动顺序,用TabStop属性设置暂停。

1、标签——显示信息

ALIGNMENT 0文本居左 1文本居右 2文本居中

2、命令按钮(COMMAND BUTTTON)

DEFAULT 设置为T时,相当于按下了ENTER键

CANCEL 设置为T时,相当于按下了ESC键

在一个表单中,只能有一个命令按钮的DEFAULT、CANCEL属性设置为T。 ENABLED 可用、不可用 VISIBLE 可见、不可见 3、文本框

VALUE 文本框中值

PASSWORDCHAR 用符号来掩盖文本框字符内容,用来设置密码。

45

CONTROLSOURCE 绑定数据源 在VFP中,除了标签、线条、形状等不能显示表的控件外,期于控件分为两类:1、与表或视图数据绑定的控件;2、不与表或视图数据绑定的控件。

使用数据绑定型控件时,将输入的值保存到数据源中,要设置控件的ControlSource属性;先向表单中数据环境中添加表,再设置表的字段。但是对于表格控件(Grid),它是设置RecordSource属性。 4、编辑框(EDIT)

READONLY 只读属性、或可读写

SCROLLBARS 滚动条 0 无滚动条 2垂直滚动条 SELSTART、SELLENGTH、SELTEXT选择的起始位置、选择的文本长度、选择的文本。

5、复选框(CHECK) 可以进行多个选择,区别于单选按钮(OPTION) VALUE 0 未选中 1 选中 2 不可用

46

6、列表框(LISTBOX) LIST(N) 列表项目 LISTCOUNT 列表项的数目

SELECTED(N) 该列表项是否被选中

MULTISELECT 设置为T,使用SHIFT、CTRL键可以进行多个选择。 ROWSourceType 数据源类型 RowSource 数据源

ControlSource 绑定的数据源

7、组合框(COMBO1)——编辑框(文本可以接受编辑)和列表框的组合 STYLE 0 下拉组合框(可以接受输入) 2下拉列表框

容器型控件:命令组、单选按钮组、表格、页框

8、命令按钮组(COMMANDGROUP) Buttoncount按钮数目

9、单选按钮组(Optiongroup) Buttoncount

VALUE 0 未选中 1 选中

对其中的一个对象操作,语句:必须要

47

加上组的名字

thisform.optiongroup1.option1.caption=’****’

10、表格(GRID)

RecordSourceType 数据源类型 RecordSource 数据源(表)

HEADER 修改表格中某一列的标题头

11、页框(PageFrame) PAGECOUNT 页框数量 用PAGE1、PAGE2??来管理各个页面框架。

第七章 菜单设计

一、创建、修改与退出

菜单文件保存为(.mnx)文件,必须生成(.mpr)文件运行。

CREATE MENU 菜单名 创建菜单文件

MODIFY MENU 菜单名 修改菜单文件

48

DO 菜单名. Mpr 运行菜单文件

Set sysmenu to default 退出菜单文件

Set sysmenu save/nosave 关闭系统菜单,保存/不保存,退出语句 二、菜单设计器 菜单名称

结果:命令,写入退出语句。

子菜单,下一级菜单,最多有六级菜单

过程,编写程序命令、程序过程。 填充名称

选项:在最后设置快捷键

菜单级:设置菜单栏或子菜单 三、快捷菜单——弹出式菜单 在新建文件中进行设置,选择快捷菜单。在显示条目中进行设置。 一般在表单中进行应用。

第八章 报表设计器向导

49

根据向导进行创建,确定表的来源、报表字段。设置报表标题。

50

本文来源:https://www.bwwdw.com/article/zjea.html

Top