当前位置:文档之家› vf上机知识点总结

vf上机知识点总结

计算机二级VF总复习
第一章 概述
1、基本关系
Data----数据 DB----数据库
DBMS----数据库管理系统 DBA----数据库管理员
DBS----数据库系统 DBAS----数据库应用系统
DBS包括DB和DBMS
2、实体间的联系分为三种
一对一(1:1):一个中国公民有一个身份证号码
一对多(1:n):一个部门有多个职工
多对多(n:n):学生和课程
3、数据库管理系统支持的数据模型有三种:层次模型、网状模型、关系模型。
层次模型的特点:
1)有且仅有一个结点无父结点,该结点称树的根;
2)其它结点,有且仅有一个父结点。
网络模型的特点:
1)有一个以上的节点无双亲节点(父节点);
2)至少有一个结点有个双亲节点(父结点)。
关系模型的要求:
1)每一列称为一个字段,一个字段表示实体集的一个属性。每一字段中的所有数据是同一类的数据,
2)表中的每一行是一个记录,每一记录由若干数据项(字段)组成,每一数据项不可再分,是最基本的单位。
3)不允许有两个相同的行(记录);数据库的数据行(或数据列)的顺序可以任意交换,不影响数据库的使用;
4、关系模型中的术语:
元 组:表的每一行(也称记录)
属 性:表的每一列(也称字段)
域:属性的取值范围
5、关系的三种运算:选择运算:关于行的运算。投影运算:关于表中列的运算。连接运算:按属性值相等的原则将两个关系拼成一个新的关系。
6、如何启动和退出VF。
7、Visual FoxPro 6.0系统的操作方式主要有命令方式、菜单方式和程序方式。
8、VFP系统环境的设置:
系统环境在“工具”→“选项”中“文件位置”选项卡下设置默认目录、在“区域”选项卡下设置日期和时间、





第二章 程序设计基础(上)
1、常量的类型
数值型、货币型(数值型常量的前面加前符号“$”)、
字符型(用字符型常量的界限符“”、[ ]和‘’)、
日期型(?{^2003-10-25},表示日期为 2003年10月25日,年份为4位,^不可少)、
影响日期格式的设定:
set mark to [<日期分隔符>]
日期分隔符: ‘-’, ‘.’, ’/’. 未指定时选用默认值’/’
set date [to] DMY│YMD │MDY
用设置日期显示格式
set century on │off
是否显示世纪值
日期时间型({^2003-10-25,08:39:45 AM} 表示是 2003年10月25日8点39分45秒)
逻辑型(逻辑型常量的定界符“.”小圆点不能省)。
2、内存变量的类型
数值型(N)、货币型(Y)、字符型(C)、
逻辑型(L)、日期型(D)、日期时间型(T)
3、内存变量的赋值
1)用“=”赋值(称为赋值号)
格式:内存变量=<表达式>
2) 用STORE赋值
格式:STORE <表

达式>TO <内存变量名表>
例:STORE 3 TO X,Y,Z
?x,y,z (将3这个数值同时赋值给X,Y,Z)
内存变量名表:是用逗号”,”分隔多个内存变量
”=“与“STORE”的区别:
=:一次只能给一个变量赋一个值
STORE:一次能给多个变量赋同一个值
3)用INPUT、ACCEPT、WAIT、 MESSAGEBOX()赋值
ACCEPT命令
格式:ACCEPT [提示字符串] TO <内存变量>
功能:首先在当前光标位置显示提示字符串的内容,然后等待用户输入。当回车后,将输入的信息以字符串的形式存储在内存变量中。
注:此命令常用于且限于输入字符型数据,内容最多为256个字符。输入内容时不需要加字符定界符,按回车键表示输入结束。
例:ACCEPT "请输入姓名:" TO Name
?name

INPUT命令
格式:INPUT [提示字符串] TO <内存变量>
功能:首先在当前光标位置显示提示字符串的内容,然后等待用户输入。当回车后,系统将输入的内容存入内存变量中。
注:可用于输入各种类型的数据,但必须加界定符。
例:INPUT "请输入姓名:" TO NAME
?name

WAIT命令
格式:WAIT [提示字符串]TO <内存变量>][WINDOWS][NOWAIT] [TIMEOUT N]
功能:首先在当前光标位置显示提示字符串的内容,然后等待用户输入。当输入一个字符后(无需回车),系统将输入的内容存入内存变量中。
注:WINDOWS选项表示将在屏幕右上角显示提示信息。NOWAIT表示不等待。TIMEOUT N表示等待的时间(秒)
例:WAIT "是否继续查找(Y/N)" TO S TIMEOUT 5

MESSAGEBOX()函数
格式:MESSAGEBOX(“提示文本“[,按钮形式][,“标题”])
作用:显示一个对话框
说明:
(1)按钮形式包括按钮、图标和默认按钮等内容,可以任意组合。
按钮:0、仅有“确定”按钮。1、“确定”和“取消”按钮。3、“放弃”、“重试”和“忽略”按钮。4、“是”、“否”按钮。5、“重试”和“取消”按钮图标:16、“停止”图标。32、问号。48、惊叹号
默认按钮:0、第一个。256、第二个。512、第三个
(2)当用户单击某按钮时将返回一个数值。
确定:1 取消:2 放弃:3 重试:4 忽略:5 是:6 否:7
(3)等待时间的单位为毫秒
例:MESSAGEBOX("你确定退出吗?",4+32+256,"退出")
MESSAGEBOX("保存成绩!",0,"保存")
MESSAGEBOX("你确定退出吗?",5+48+256,"退出")
4、表达式的显示:
(1)?/?? 显示列表:
?(先换行,后显示)、
??(不换行,直接显示)
5、数组
例题,定义二维数组:dime b(2,3)
b(1,1)=2
b(1,2)=3
?b(1),b(2),b(3),b(4),b(5),b(6)
?b(1,1)+2*b(1,2)
AA(6)、AA(2,3)
AA(3)与AA(1,3)是指的同一个位置的元素
6、数值函数
(1).绝对值函数
格式:ABS(<数值表达式>)
功能:返回指定的

数值表达式值的绝对值。
(2).符号函数
格式:SIGN(<数值表达式>)
功能:用于返回<数值表达式>值的符号,结果为正数时
返回值为1,为负数时返回值为-1,为零时返回值为0.
(3).取整函数
格式:INT(<数值表达式>)
(4).向下取整函数
格式:FLOOR(<数值表达式>)
功能:取小于或等于指定数值表达式的最大整数
(5).向上取整函数
格式:CEIL(<数值表达式>)
功能:取大于或等于指定数值表达式的最小整数
(6)圆周率函数
格式:PI()
功能:返回圆周率,该函数没有自变量。
(7).四舍五入函数
格式:ROUND(<数值表达式1>,<数值表达式2>)
功能:对<数值表达式1>根据<数值表达式2>进行四舍五入处理
?ROUND(1150.635,2)1150.64
(8).平方根函数
格式:SQRT(<数值表达式>)
功能:计算一个数的平方根,表达式应该大于等于0.
(9).求余数函数
格式:MOD(<数值表达式1>,<数值表达式2>)
功能:返回<数值表达式1>除以<数值表达式2>后的余数。
说明:<数值表达式2>的值不能为0;余数的正负号与除数相同.如果两表达式同号函数值为余数,如表达式异号函数值为余数与除数和.
?MOD(8,3),MOD(8,-3) && 2 -1
?MOD(-8,3),MOD(-8,-3) && 1 -2
(10).最大值函数
格式:MAX(<数值表达式1>,<数值表达式2>[,<数值表达式3>…])
功能:计算各表达式的值,并返回其中的最大值。
(11).最小值函数
格式:MIN(<数值表达式1>,<数值表达式2>[,<数值表达式3>…])
功能:计算各表达式的值,并返回其中的最小值。
7、字符函数
(1).取左子串函数
格式:LEFT(<字符表达式>,<长度>)
功能:按<长度>值取指定<字符表达式>值的左边子字符串。
?LEFT("数据库管理系统",6)
(2).取右子串函数
格式:RIGHT(<字符表达式>,<长度>)
功能:按<长度>值取指定<字符表达式>值的右边子字符串。
?RIGHT("数据库管理系统",4)
(3).取子串函数
格式:SUBSTR(<字符表达式>,<起始位置>[,<长度>])
功能:从指定的<起始位置>开始,按<长度>取
<字符表达式>值的子字符串。
说明:如果缺省<长度>,子串为从<起始位置>开始
直到最后一个字符。
(4)求字符串长度函数
格式:LEN(<字符表达式>)
功能:返回指定<字符表达式>值的字符个数。函数值为数值型。
(5).子串位置测试函数
格式:AT(<字符表达式1>,<字符表达式2 >[,<数值表达式>])
功能:判断<字符表达式1>值是否是<字符表达式2>值的子串,若是,返回<字符表达式1>值的首字符在<字符表达式2>值的起始位置;若不是,则返回0。函数值为数值型。
说明:<数值表达式>值表明<字符表达式1>在<字符表达式2 >中出现的次数,其默认值为1。
(6)子串替换函数
STUFF(<字符表达式1>,<起始位置>,<长度>,<字符表达式2>)
功能:用(<字

符表达式2>值替换(<字符表达式1>中从起始值开始的指定长度的串.
(7).小写字母转换为大写字母函数
格式:UPPER(<字符表达式>)
功能:将指定<字符表达式>值中小写字母变为大写字母。
(8).大写字母转换为小写字母函数
格式:LOWER(<字符表达式>)
功能:将指定<字符表达式>值中大写字母变为小写字母。
(9)空格字符串生成函数
SPACE(<数值表达式>)
功能:产生<数值表达式>值指定的空格。
(10)产生重复字符函数
格式:REPLICATE(<字符表达式>,<数值表达式>)
功能:产生数值表达式指定个数的字符
(11)删除首尾部空格函数
格式:ALLTRIM(<字符表达式>)
功能:删除指定<字符表达式>值左右两边的空格。
(12)删除字符串左边空格函数
格式:LTRIM(<字符表达式>)
功能:删除指定<字符表达式>值左边部分的空格。
(13)删除字符串尾部空格函数
格式:TRIM(<字符表达式>)
功能:删除指定<字符表达式>值尾部的空格。
(14)字符串出现次数函数
OCCURS (<字符表达式1>,<字符表达式2 >)
功能:返回字符表达式1在字符表达式2中出现的次数.如不出现值为0
(15)字符替换函数
格式:CHRTRAN (<字符表达式1>,<字符表达式2 >, (<字符表达式3>)
功能:当第一个字符串中的一个或多个字符与第二个字符串中的某个字符相匹配时,就用第三个字符串中对应字符替换这些字符.
(16)LIKE (<字符表达式1>,<字符表达式2 >)
功能:比较两个字符对应位置上的字符,若所有对应字符都匹配,
值为真.可以使用通配符*和?.
(17)宏代换函数&格式: & <字符型变量>[.]
功能:替换出字符型变量的内容,即&的值是变量中的字符串.
功能:将<字符型内存变量>的值置换出来,就是以字符型内存变量的值作为函数值,变量的值可以是一条命令或一个表达式或一个字符串。
说明:“.”的作用是终止 & 的作用域;宏代换可以嵌套传递;宏代换可用于类型转换。
例:HH=“KK” KK=“*” KK8=“*5”
? HH,&HH,5&KK8,5&KK.8
结果:KK * 25 40
8、日期和时间函数
(1).系统日期函数
格式:DATE()
功能:返回当前系统的日期,函数值为日期型。
?DATE()
(2).系统时间函数
格式:TIME()
功能:返回当前系统的时间,函数值为字符型。
?TIME()
(3).系统日期时间函数
格式:DATETIME()
功能:返回当前系统的日期时间,函数值为日期时间型。
?DATETIME()
(4).求年份函数
格式:YEAR(<日期表达式>|<日期时间表达式>)
功能:返回指定日期或日期时间表达式值中的年份。
函数值为数值。
?YEAR({^2003/05/28})
(5).求月份函数
格式:MONTH(<日期表达式>|<日期时间表达式>)
功能:返回指定日期或日期时间表达式值中的月份。函数值为

数值型。
(6).求天数函数
格式:DAY(<日期表达式>|<日期时间表达式>)
功能:返回指定日期或日期时间表达式值中的天数。函数值为数值型。
(7).星期名称函数
格式:CDOW(<参数>)
功能:返回指定日期的英文星期名称, 参数为日期型或日期时间型
8、类型转换函数
(1)数值型转换成字符型函数
格式:STR(<数值表达式>[,<长度>[,<小数位数>]])
功能:将<数值表达式>的值转换成字符型数据,函数值为字符型数据。
说明:字符串的长度由<长度>值确定,包括小数点和负号各占一位;<小数位数>值表示小数点的位数。如果<长度>值小于<数值表达式>值的整数部分位数,则返回一串星号(*)。<长度>的默认值是10位,<小数位数>的默认值是0。
(2)字符型转换成数值型函数
格式:VAL(<字符表达式>)
功能:将<字符表达式>的值转换成相应的数值型数据。
说明:若字符串内出现非数值字符,则只转换前面部分;若字符串的首字符不是数字符号,则返回数值0,但忽略前导空格。
(3)将ASCII码值转换成对应的字符函数
格式:CHR(<数值型表达式>)
功能:将<数值型表达式>的值作为ASCII码,
(4)将字符转换成ASCII码函数
格式:ASC(<字符型表达式>)
功能:给出(<字符型表达式>)最左边的一个
字符的ASCII码值
(5)字符型转换成日期型函数
格式:CTOD(<字符表达式>)
功能:将<字符表达式>的值转换成日期型数据。
(6)日期型转换成字符型函数
格式:DTOC(<日期表达式>|<日期时间表达式>[,1])
功能:将日期型或日期时间型数据转换成字符串。
9、与表有关的函数
(1)记录个数测试函数
格式:RECCOUNT([工作区号|<表别名>])
功能:返回指定工作区中表文件的全部记录个数。
(2)记录号测试函数
格式:RECNO([工作区号|<表别名>])
功能:返回指定工作区表文件中当前记录的记录号。
(3).表文件首测试函数
格式:BOF(工作区号|<表别名>)
功能:测试指定工作区中表文件的记录指针是否指向文件首,即第一条记录之前。如果是,则返回逻辑真.T.;否则返回逻辑假.F.。
(4).表文件尾测试函数
格式:EOF([工作区号|<表别名>])
功能:测试指定工作区中表文件的记录指针是否指向文件尾,即最后一条记录之后。如果是,则返回逻辑真.T.;否则返回逻辑假.F.。
(5).记录删除测试函数
格式:DELETE([工作区号|<表别名>])
功能:测试指定工作区中表文件的当前记录是否有删除标记
(逻辑删除),若有,返回.T.;否则返回.F.。
(6).测试记录是否找到函数
格式:FOUND()
功能:在表中执行查找命令时,测试查找结果,如果找到,则返回.T.,否则返回.F.
10、其他类型函数
(1)条件测试函数
格式:IIF(<逻辑表达式>,<表达

式1>,<表达式2>)
功能:测试<逻辑表达式>的值,如果为.T.,返回<表达式1>的值;如果为.F.,返回<表达式2>的值。
(2)记录查找测试函数
格式:BETWEEN(<表达式T>,<表达式L>,<表达式H>)
功能:判断一个表达式的值是否介于另外两个表达式的值之间.当<表达式T>的值大于等于<表达式L>且小于等于<表达式H>时,函数值为.T.,否则为.F.
(3)数据类型测试函数
格式:VARTYPE(<表达式>)
功能:测试<表达式>值的数据类型,返回代表该类型数据的字符C、N、Y、L、G、D、T、X(NULL值)、U(未定义)等。
11、运算符
(1)算术运算符:+、 -、 *、 /、%、 ^ (或**)、-、();
运算优先级:
括号→函数→ - → ^ (或**)、 ^ → *、/ →% → +、-;
(2)字符运算符
+ 表示原样连接。
—表示第一个字符串尾部空格移到整个连接结果的尾部
(3)日期和时间运算符
D1、D2为日期型变量,N为数值变量,表示天数
D1={^2006/09/10}D2={^2006/10/10} N=10
运算符 含义 运算实例 结果
+ 日期加天数,结果为日期 D1+N 09/20/06
- 日期减天数,结果为日期 D1-N 08/31/06
- 两日期相减,结果为天数 D2-D1 30
(4)关系运算符及表达式
关系运算符用于表达式值的比较运算,运算的结果为.T.或.F.
(5)逻辑运算符及表达式
逻辑运算符包括NOT、AND和OR。
第二章 程序设计(下)
1、基本知识
结构化程序设计由顺序结构、选择结构、循环结构3种基本控制结构组成.
选择结构:根据条件选择执行某些语句。在选择结构中存在判断的条件,根据条件的结果决定执行哪些程序语句。
循环结构:重复执行某些语句。被重复执行的语句称为循环体。
循环结构中有循环的条件,当条件满足时执行循环体,直到循环条件不成立时结束.
2、程序建立方法
1)菜单方式:“文件”→”新建”→”程序”→”新建文件”图标按钮
2)命令方式:
modify command [<程序文件名>|?]
modify file 程序文件名.prg &&不能省略扩展名
注意:VFP中一条语句占多行时用“;”作续行符,每条语句以回车键结束。*或NOTE作行注释,用&&作语句注释
3、运行
1)菜单方式:“程序”→”运行”→选择要运行的程序文件→”运行”按钮
2)命令方式:DO <程序文件名>
3)直接运行:常用工具栏→”运行”按钮/快捷键Ctrl+E
4、选择结构
通过双分支结构语句和多分支结构语句实现。
双分支结构语句只有一个判断条件,用IF语句实现
(1)语句格式
IF <条件> [THEN] <语句块1>
[ELSE <语句块2>]
ENDIF
(2)语句功能:当程序执行到IF语句时,先对<条件>进行判断,判断结果为.T.时,执行<语句块1>;判断结果为.F.时,若有ELSE选项执行<语句块2>,否则直接执行ENDIF语

句后的程序
(3)说明:IF<条件>后的THEN语句可以有,可以没有ELSE短语可以有,也可以没有

多分支结构语句存在多个判断条件,用DO CASE语句实现
(1)语句格式
DO CASE
CASE <条件1> <语句块1>
CASE <条件2> <语句块2>

CASE <条件n> <语句块n>
[OTHERWISE <语句块n+1>]
ENDCASE
(2)语句功能:程序执行时依次判断条件,若某个条件为.T.,则执行相应的语句块,然后结束DO CASE语句的执行。(若多个条件都为.T.则执行第一个后的语句块)若所有条件表达式都不为.T.,则执行OTHERWISE对应的语句块n+1,若都为.F.且没有OTHERWISE语句,结束DO CASE语句。
5、循环结构
DO WHILE语句能够完成循环次数不确定的循环结构编程(表和非表)
(1)语句格式
DO WHILE<条件>
<循环体>
ENDDO
(2)语句功能:先判断条件,当条件为.T.时,执行循环体,遇到ENDDO语句时转到DO WHLIE语句的条件处,再次对条件进行判断…直到DO WHLIE后面的条件为.F.时结束循环语句的执行


FOR语句完成循环次数确定的循环结构编程(非表和表)
(1)语句格式
FOR 循环变量=<初始值>TO<终止值>[STEP<步长>]
<循环体>
ENDFOR|NEXT
(2)语句说明:
当初始值≤终止值(步长应该≥1)
当初始值≥终止值(步长应该≤-1)
步长为1时可以省略。

SCAN语句只能用于表的编程。
(1)语句格式
SCAN[范围][FOR<条件>]|[WHILE<条件>]
<循环体>
ENDSCAN
(2)语句功能:在表中对指定范围内满足条件的每一条记录完成循环体的操作。每处理一条记录后,记录指针指向下一条记录
6、程序的模块化
程序的模块化设计:将一个大的功能模块划分为若干个小的模块。
子程序、过程、自定义函数、内存变量的作用域(全局变量、局部变量、私有变量、隐藏内存变量)







第三章 数据库和表

























一、数据库
1.创建数据库
命令格式:CREATE DATABASE 数据库名
2.打开数据库
命令格式:OPEN DATABASE[<数据库文件名>|?]
3.修改数据库
命令格式:MODIFY DATABASE [<数据库文件名>|?]
4.关闭数据库
命令格式:CLOSE DATABASE &&关闭当前数据库
CLOSE ALL &&关闭所有打开的数据库
5.删除数据库
命令格式:DELETE DATABASE <数据库文件名>|?[DELETETABLES] [RECYCLE]
6.设置当前数据库
命令格式:SET DATABASE TO [<数据库文件名>]
说明:(1)数据库文件名:指定一个已经打开的数据库为当前数据库。(2)如果不指定任何数据库,即输入命令:SET DATABASE TO 将会使得所有打开的数据库都不是当前的数据库,但所有的数据库都没有关闭。

二、自由表和数据库表之间的转化


自由表和数据表之间可以相互转换:自由表可以转化成数据表,数据表可以转化为自由表。二者区别是:
自由表:不属于任何数据库的表,如果没有打开或创建数据库,所建的表都是自由表,一般常说的表专指自由表。字段的宽度只能输入10个字节,不能建立主索引。
数据表:将自由表加入到一个数据库后的表叫数据表。有“显示格式”、“字段有效性”、“触发器”、字段宽度可输入128个字节、可以建立主索引等。
例题:
open database 学生综合信息管理
add table 成绩表
可以为数据库“学生综合信息管理”添加自由表“成绩表”,使之变成数据表。
remove table成绩表
可以把数据表“成绩表”转成自由表。
delete database 图书管理系统
可以将数据库“图书管理系统”从磁盘上删除,但不会删除该数据库上数据表,只不过把它转为自由表。
elete database 图书管理系统 deletetables
可以把数据库“图书管理系统”和数据库中所有数据表一起删除。

三、有关表的命令方式
建立表结构 CREATE [<表文件名>|?]
在表数据的末尾追加数据记录 APPEND [BLANK]
在当前记录位置插入新记录 INSERT [BEFORE][BLANK]
对当前的表结构进行修改 MODIFY STRUCTURE
EDIT和CHANGE命令均用于对当前表的记录进行编辑、修改 EDIT | CHANGE
在表打开的状态下选择“显示”菜单中“浏览”命令 BROWSE
在指定的范围内,对符合条件的记录,用表达式1替换字段1的值
REPLACE [<范围>] <字段名1> WITH <表达式1> [<字段名2> WITH <表达式2>……] [FOR <条件1>] [WHILE <条件2>]
关闭原来已打开的表、打开新的表,并为新打开的表起一个由ALIAS子句给出的别名USE <表名> [ALIAS <表别名>]
关闭表,但两者有所区别,USE仅关闭当前表,CLOSE DATABASES则可关闭所有打开的表。 USE | CLOSE DATABASES
对当前的表,在规定的范围内,把凡满足FOR、WHILE条件的记录中,由<字段名表>给出的字段显示出来。LIST和DISPLAY的区别在于:首先 LIST是不间断显示,DISPLAY是分页显示;其次LIST关于范围的缺省值是全部记录,DISPLAY仅是当前一条记录。
LIST | DISPLAY [[FIELDS] <字段名表>] [FOR<条件1>] [WHILE <条件2>] [<范围>]
对指定范围内要删除的记录加上删除标记。
DELETE [<范围>] [FOR <条件1>] [WHILE <条件2>]
对加了删除标记的记录进行恢复。
RECALL [<范围>] [FOR <条件1>] [WHILE <条件2>]
对所有加了删除标记的记录从表中彻底清除。 PACK
将当前表中的所有记录全部清除,仅留表结构。 ZAP
指针直接指到首记录或尾记录 GO [TO] TOP | BOTTOM
指针直接指向第n条记录,这里n是一个正整数。GO [TO] n
将指针向正方向或负方向移

动n条记录。正移动时“+”可缺省,负移动时“-”不得缺省。SKIP [±] [n]
条件定位是在表中找出满足某条件的一条记录。在当前表中指定的范围内,查找满足条件的第1条记录或确定无此记录。当找到时函数FOUND()为真、EOF()为假,未找到时FOUND()为假,而EOF()则视其范围的情况而定:若范围缺省且无WHILE条件,则EOF()为真,否则不一定为真。LOCATE[<范围>] FOR <条件1> [WHILE <条件2>]
记录条数的统计 COUNT [TO <内存变量>] [<范围>] [FOR<条件1>] [WHILE <条件2>]
记录求和 SUM [<表达式列表>] [<范围>] [FOR<条件1>] [WHILE <条件2>] [TO <内存变量列表>]
记录求平均数 AVERAGE [<表达式列表>] [<范围>] [FOR<条件1>] [WHILE <条件2>] [TO <内存变量列表>]
四、索引
1、用INDEX命令建立索引
(1)建立单索引
命令格式:INDEX ON <索引表达式> TO <索引文件名>
(2)建立独立复合索引
命令格式:
INDEX ON <索引表达式> TAG <索引名> OF <索引文件名>[UNIQE|CANDIDATE]
(3)建立结构复合索引
命令格式:INDEX ON <索引表达式> TAG <索引名> [UNIQE|CANDIDATE]
其中:索引表达式:可以是字段名,也可以是包含字段名的表达式。
TAG <索引名>:多个索引可以创建在一个索引文件中,标识和使用每个索引时通过索引名使用。索引标识名的命名符合Visual FoxPro中的规定即可。UNIQE:指定唯一索引。CANDIDATE:指定候选索引。无UNIQE和CANDIDATE选项,表示建立的是普通索引。
2、用SET ORDER 命令指定索引。
命令方式:
SET ORDER TO [<索引序号>]|[TAG]<索引名>][ASCENDING|DESCENDING]
说明:可以按索引序号或索引名指定当前起作用的索引。在结构复合索引中,索引序号是指建立索引的先后顺序的序号。不管索引是按升序或降序建立的,在使用时都可以用ASCENDING或DESCENDING指定升序或降序。SET ORDER TO 为取消启用索引。
3、已经建立的索引可用下列命令删除:
命令格式1:DELETE TAG <索引名> &&删除复合索引文件中的索引
命令格式2:DELETE TAG ALL && 删除复合索引文件中的所有索引
说明:用DELETE TAG命令删除了所有的复合索引后,复合索引文件被自动删除。
命令格式3:DELETE FILE <索引文件名> &&删除单索引



第四章 SQL

SELECT_SQL语句中的短语
短语 说明
* 来自于某(些)表的所有字段(属性)
DISTINCT 去掉查询结果中的重复记录(元组)
IN 相当于数学集合“∈”只需属于其中一个元素(值)就是满足条件;NOT IN则不属于其中任意一个元素(值)就满足条件
BETWEEN…AND 表示…和…之间
LIKE 字符串匹配运算符
ORDER BY 对指定某个(些)字段排序,只能对最终的查询结果排序,不能用于子查询
GROUP BY 用于分组计算查询(指定分组

依据)
HAVING 对GROUP BY分组计算查询的结果进一步的加以限定即限定分组(对分组之后的限定),必须跟GROUP连用,不能单独使用。但与WHERE条件无关,因WHERE条件是对分组之前限定某些元组(记录)是否来参加分组。(注:HAVING与WHERE使用的区别)
IS NULL 查询某字段为空值的记录(元组),但不能用“=NULL”表示
IS NOT NULL 查询某字段不为空值的记录(元组),但不能用“#NULL”或“NOT IS NULL”
ANY/SOME 子查询中只需一行为 .T.则外层就满足条件
ALL 子查询中所有的行都为 .T.则外层就满足条件
EXISTS 子查询中只需有结果(无论多少),则外层就满足条件
NOT EXISTS 子查询中只需有结果,则外层就满足条件
COUNT() 统计查询结果的记录(元组)条数
MAX() 对某列(数值类型)求最大值
MIN() 对某列(数值类型)求最小值
AVG() 对某列(数值类型)求平均值
SUM() 对某列(数值类型)求和
[INNER] JOIN 普通(内部)连接即只有满足条件的记录才出现在查询结果当中
LEFT JOIN 左连接即除满足条件的记录外,第一个表不满足条件的记录也出现在查询结果当中
RIGHT JOIN 右连接即除满足条件的记录外,第二个表不满足条件的记录都会出现在查询结果当中
FULL JOIN 全连接即除满足条件的记录外,第一个表和第二个表中不满足条件的记录都会出现在查询结果当中
UNION SQL查询中唯一的一个并运算,将两个SELECT查询语句的查询的结果合并成一个查询结果
TOP 显示前面的部分记录,必须跟ORDER BY 连用。注意TOP必须书写在查询结果第一个字段的前面如:SELECT TOP2 姓名,出生日期 FROM XS
INTO ARRAY 把查询结果存储到某个数组当中
INTO CURSOR 把查询结果存储到某个临时表当中
INTO ABLE/DBF 把查询结果存储到某个永久表(自由表)中
TO FILE 把查询结果存储到某个文本文件当中
TO PRINTER 把查询结果输出到打印机

1、数据查询功能
SQL语言的查询功能由SELECT命令完成,它的基本形式为:
SELECT [ALL|DISTINCT][TOP N [PERCENT]] 要查询的数据
FROM 数据源1 [联接方式JOIN数据源2] [on 联接条件]
[WHERE 查询条件]
[GROUP BY 分组字段 [HAVING 分组条件] ]
[ORDER BY 排序选项1 [ASC|DESC][,排序选2[ASC|DESC]…]]
[输出去向]

联接是关系的基本操作之一,联接查询是一种基于多个表的查询。
联接方式共4种:
●内连接也称自然联接(INNER JOIN)
●左连接(LEFT [OUTER] JOIN)
●右连接(RIGHT [OUTER] JOIN)
●全连接(ALL [OUTER] JOIN)

多表查询除了联接查询外,还可以以嵌套的形式实现多表查询。嵌套查询是在一个查询中完整地包含另一个完整的查询语句。嵌套查询的内、外层查询可以是同一

个表,也可以是不同的表。
2、表的定义
CREATE TABLE|DBF <表名> [FREE]
(字段名1 字段类型[(宽度[,小数位数])]
[NULL|NOT NULL])
[CHECK 表达式 [ERROR 字符型表达式] ]
[DEFAULT 默认值]
[PRIMARY KEY|UNIQUE]
[,字段名2…])
例题:CREATE TABLE stu(学号 C(4),姓名 C(8),出生日期 D,;
入学日期 D,入学成绩 N(5,1))

CREATE dbf stu(学号 C(4),姓名 C(8),出生日期 D,;
入学日期 D,入学成绩 N(5,1))
3、表结构的修改
格式1:删除字段,更改字段名,定义、修改和删除表一级的有效性规则等。
ALTER TABLE 表名 [DROP [COLUMN] 字段名]
[SET CHECK 表达式 [ERROR 字符串表达式]]
[DROP CHECK]
[ADD PRIMARY KEY 表达式]
[DROP PRIMARY KEY]
[RENAME COLUMN 原字段名 TO 新字段名]
例题:
删除stu表中的姓名字段
ALTER TABLE stu drop 姓名
将stu表中的入学成绩字段改为成绩字段
ALTER TABLE stu remane column 入学成绩 to 成绩
删除stu表的表一级有效性规则
alter table stu drop check
对stu表设置表一级的有效性规则,规定入学日期字段的值必须大于出生日期字段的值,不符合规定时显示“入学日期必须大于出生日期”
alter table stu set check 入学日期>出生日期;
error “入学日期必须大于出生日期”

格式2:添加新add字段或修改alter已有的字段等
ALTER TABLE 表名
ADD | ALTER [COLUMN] 字段名
字段类型 [(字段宽度 [,小数位数])]
[NULL | NOT NULL]
[CHECK 表达式 [ERROR 字符型表达式]]
[DEFAULT 默认值]
[PRIMARY KEY | UNIQUE]
例题:为stu表增加一个性别字段,字段类型为字符型,宽度为2
alter table stu add 性别 C(2)
格式3:定义、修改和删除字段级的有效性规则和默认值定义等
ALTER TABLE 表名
ALTER [COLUMN] 字段名
[SET DEFAULT 默认值]
[SET CHECK 表达式 [ERROR字符型表达式]]
[DROP DEFAULT]
[DROP CHECK]
例题:修改或定义stu表成绩字段的有效性规则
ALTER TABLE stu alter 成绩;
SET CHECK 成绩>450 error “成绩必须在450分以上”
删除stu表成绩字段的有效性规则
ALTER TABLE stu alter 成绩 drop check
4、表的删除
命令格式:DROP TABLE 表名
功能:从数据库和磁盘上将表直接删除掉。
5、数据的操纵功能
主要包括记录的插入insert、更新update、删除delete
格式1:INSERT INTO 表名 [(字段名表)] VALUES (表达式表)
格式2:INSERT INTO 表名 from array 数组名
更新格式:UPDATE 表名
删除格式:DELETE FROM 表名 [WHERE 条件]
第五章 查询和视图
查询可以从指定的表或视图中筛选出给定条件的记录,并可以对记录进行排序和分类汇总。
打开查询设计器的方法:
菜单:文件→ 新建→查询文件类型
命令:CREATE QUERY
查询设计器的上部显示的是在查询中用到的数据表及数据表间存在关联关系。

查询设计器选项卡,对查询的字段、联接、筛选、排序依据、分组依据、杂项进行设置。
运行、保存和修改查询:在“查询设计器”中点击右键,选择“运行查询”,可得到查询的结果。关闭“查询设计器”窗口或按组合键Ctrl+w就可以保存查询。
菜单方式:查询→ 运行查询
命令格式:DO <查询名.QPR >
命令功能:运行指定的查询。
注:运行查询必段加上qpr扩展名

视图可以从指定的本地表、其他视图、放在服务器上的表以及其他关系数据库管理系统中筛选出满足给定条件的记录,并对记录进行排序和分类汇总。视图不是“图”, 视图是根据表定义的,是一个定制的虚拟表定义,是观察表中信息的一个窗口 。视图可以分为本地视图和远程视图。
视图是存储于数据库中的虚拟表,可以是本地的、远程的或带参数的
创建视图语法
Create View view_name
As select_statement
修改视图语法
Alter View view_name
As select_statement
删除视图语法
Drop View view_name
命令功能:创建一个本地或远程视图。
CREATE [SQL] VIEW [<视图名> ] [REMOTE]
[CONNECTION <联接名> [SHARE]
| CONNECTION <数据源名>]
[AS SQLSELECT 语句]
CREATE VIEW [<视图名> ] [REMOTE]
[CONNECTION <联接名> [SHARE]
| CONNECTION <数据源名>]
[AS SQLSELECT 语句]
重新命名视图1的名字为视图2。
RENAME VIEW <视图1> TO <视图2 >
第六章 表单
表单(Form)在系统中是用户的主要界面,其扩展名为.scx,它为数据库信息的显示、输入和编辑提供了非常简便的方法。
1、建立表单
菜单:文件→新建→表单
命令:Create Form [表单名]
2、表单设计步骤
? 创建表单 Create Form FormName
? 添加控件 表单控件→选定→表单绘出
? 设置属性,界面设计
选定对象→属性窗口→设置相应属性
? 编写代码
双击对象→选择事件→编写程序
? 保存、运行调试
运行:工具栏→! 命令: Do Form 表单名
3、修改表单
菜单:文件→打开→表单名
命令:Modi Form 表单名
4、数据记录操作表单
? &&设置工作目录 Set Default to c:\wexam\000000
? &&建立学生成绩管理项目
文件→新建→项目(StudScoreManageSystem)
? &&建立数据库
Create Database StudScoreDB
? &&打开数据库
Open DataBase StudScoreDB
? &&建立数据表 Create StudInfo
&&输入表结构
&&添加记录
1).打开数据表 use StudInfo
2).添加记录 Append
3).修改记录 Browse /edit
4).输入条件物理删除记录
Delete all for StudNo=’99070470’
Pack
5).输入条件查询记录
Browse all for StudNo=’99070470’
6).宏替换符&
tj=thisform.txttj.value &&tj='1=1’
browse all for &tj
7).输入条件统计人数
Tj=“StudSex=‘男’”
Calculate Cnt() To PersonCount For &Tj
8

).关闭数据表 Use
5、数据记录的浏览
1).打开数据表(表单的Init事件中)
Open DataBase StudScoreDB
Use StudInfo
2).记录下移 Skip 1
3).记录上移 Skip -1
4).第一条 Go top
5).最后一条 Go bottom
6).记录定位 Locate for StudNo=‘99070470’
7).关闭数据表(表单的Unload事件中) Use
6、常用控件介绍
(1)标签、文本框、编辑框、微调按钮
(2)列表框、组合框、计时器、图像
常用控件的公共属性和基本操作
公共属性:Name、FontName、FontBold、FontSize、FontItalic、ForeColor Top、Left、Height、Width、Visible、Enabled
控件的基本操作(1)选定控件、(2)移动控件、(3)调整控件大小、(4)复制控件、(5)删除控件
? 设置控件的Tab键次序



第七章 菜单

第八章 报表



相关主题
文本预览
相关文档 最新文档