第一章VF数据库基础
1.VisualFoxPro就是一种在计算机上运行的数据库管理系统软件。
2.数据库管理系统(DBMS)是数据库系统(DBS)的核心。
DBS=DB(数据库)+DBMS
3.两个实体间的联系主要归结为以下三种类型:一对一联系、一对多联系、多对多联系。
4.数据模型分三种:层次模型、网状模型、关系模型。关系模型就是用二维表结构来表示实体以及实体之间联系的模型。一张二维表就是一个关系,每一个关系都是一个二维表。VF属于关系数据模型。
5.关系的基本运算有两类:一类是传统的集合运算(并、差、交等),另一类是专门的关系运算(选择、投影、连接)。选择:从关系中找出满足给定条件的元组(记录)的操作。投影:从关系模式中指定若干个属性(字段)组成新的关系。连接:连接是关系的横向结合。连接运算将两个关系模式拼接成一个更宽的关系模式,生成的新关系中包含满足连接条件的元组。
6. 扩展名:表文件:.dbf 项目文件:.pjx 数据库:.dbc查询文件:.qpr表单:.scx菜单定义文件:.mnx菜单程序文件:.mpr 索引文件:.cdx程序:.prg
第二章VF程序设计基础
1.命令格式:set centuryon/offon显示世纪,即用四位数字表示年份
Off不显示世纪,即用二位数字表示年份。是系统的默认设置
2.命令格式:set mark to“日期分隔符(-或、)”
3.当出现内存变量与字段变量同名时,若简单的用变量名访问,则系统默认为字段变量。如果要访问内存变量,则必须在变量名前加上前缀M.(或M->)。
4.取子串函数
格式:left/right(<字符表达式>,<长度>) 功能:从指定表达式值的左/右端取一个指定长度的子串作为函数值。
格式:substr(<字符表达式>,<起始位置>[,<长度>]) 功能:从指定表达式值的指定起始位置取指定长度的子串作为函数值。在此函数中,若缺省第三个自变量<长度>,则函数从指定位置一直取到最后一个字符。
例如: store”GOOD BYE!” tox
?left(x,2), substr(x,6,2)+substr(x,6), right(x,3)
GOBYBYE!YE!
5.计算子串出现次数函数
格式:occurs(<字符表达式1>,<字符表达式2>)
功能:返回第一个字符串在第二个字符串中出现的次数,函数值为数值型。若第一个字符串不是第二个字符串的子串,函数值为0。
6.求子串位置函数
格式:at(<字符表达式1>,<字符表达式2>[,<数值表达式>])
atc(<字符表达式1>,<字符表达式2>[,<数值表达式>])
功能:如果字符表达式1是字符表达式2的子串,则返回<字符表达式1>值的首字符在<字符表达式2>值中的位置。若不是子串,则返回0。atc( )与at( )功能类似,但在子串比较时不区分字母大小写。第三个自变量<数值表达式>用来表明要在<字符表达式2>值中搜索
<字符表达式1>值的第几次出现,其默认值是1。
7.数据类型转换函数
1)数值转换成字符串 格式:str(<数值表达式>[,<长度>[,<小数位数>]])
功能:<数值表达式>值转换成字符串,转换时根据需要自动进行四舍五入。返回字符串的理想长度L应该是<数值表达式>值的整数部分的位数加上<小数位数>值,再加上一位小数点。如果<长度>值大于L,则字符串加前导空格以满足规定的长度要求;如果<长度>值大于等于<数值表达式>值的整数部分位数(包括负号)但又小于L,择优先满足整数部分而自动调节小数位数;如果<长度>值小于<数值表达式>值的整数部分位数,则返回一串星号(*)。<小数位数>的默认值为0,<长度>默认值为10。
例如:store -123.456 ton
?str(n,6,2)str(n,3)str(n,6)str(n)
-123.46***-123-123
2)字符串转换成数值
格式:val(<字符表达式>)
功能:将由数字符号(包括正负号、小数点)组成的字符型数据转换成相应的数值型数据。若字符串内出现非数字字符,那么只转换前面部分;若字符串的首字符不是数字符号,则返回数值零,但忽略前导空格。
3)字符串转换成日期或日期时间
格式:ctod(<字符表达式>)功能:将<字符表达式>值转换成日期型数据
ctot(<字符表达式>)将<字符表达式>值转换成日期时间型数据
4)日期或日期时间转换成字符串
相应的是dtoc( )和ttoc( )
8.表文件尾测试函数
最上面的记录是首记录,记为TOP;最下面的记录是尾记录,记为BOTTOM。在第一个记录之前有一个文件起始标识(BOF);在最后一个记录的后面有一个文件结束标识(EOF)。刚刚打开表时,记录指针总是指向首记录。
格式:EOF([<工作区号>|<表别名>])
功能:测试指定表文件中的记录指针是否指向文件尾,若是就返回逻辑真(.T.),否则返回逻辑假(.F.)。
如果对表中的记录进行查找,若查不到记录的话,则返回结果为.T.;如果在指定工作区上没有打开表文件,则返回结果.F.
9.变量的作用域
在VF中,若以变量的作用域来分,内存变量可分为全局变量、私有变量和局部变量三类。其中私有变量不需要事先建立,可直接使用。默认建立的变量是私有变量。
命令 | 作用域 | |
全局变量 | public | 一直有效 |
私有变量 | 无 | 建立它的模块以及下属模块 |
局部变量 | local | 建立模块 |
隐藏主程序中的变量 | private | 本模块及下属模块 |
第三章VF数据库及其操作
1.创建:数据库 create database数据库1.dbc
表create学生表.dbf
2.打开:数据库opendatabase
表use表名
3.修改:数据库modifydatabase
表modifystructure
4.VF中的记录删除分为逻辑删除和物理删除
1)逻辑删除或置删除标记的命令是delete例如:delete for成绩<60
2)被逻辑删除的记录可以恢复,恢复记录的命令是recall 例如:recall for性别=”女”
recallall是恢复所有。
3)物理删除有删除标记记录的命令是pack,执行该命令后不可能再恢复。
例如:物理删除年龄<18的命令是Dele for 年龄<18
Pack
4)使用ZAP命令可以物理删除表中的全部记录(不管是否有删除标记),该命令只是删除全部记录,并没有删除表,执行完该命令后表结构依然存在。
5.索引作用是为了提高查找的速度,它相当于一种逻辑排序。
VF索引是由指针构成的文件,这些指针逻辑上按照索引关键字的值进行排序。索引文件和表的.dbf文件分别存储,并且不改变表中记录的物理顺序。
VF中的索引分为主索引、候选索引、惟一索引和普通索引四种。默认的索引为普通索引。
一个表中只能有一个主关键字,所以一个表只能创建一个主索引。但是一个表可以建立多个候选索引或多个惟一索引或多个普通索引。
不允许出现重复值的索引是主索引和候选索引。
6.数据的完整性
数据完整性一般包括实体完整性、域完整性和参照完整性。
实体完整性是保证表中记录惟一的特性,即在一个表中不允许有重复的记录。在VF中利用主关键字或候选关键字来保证表中的记录惟一,即保证实体惟一性。
域约束规则也称作字段有效性规则,在插入或修改字段值时被激活,主要用于数据输入正确性的检验。只有数据库表才有字段有效性。字段有效性里有规则、信息、默认值。
注意:“规则”是逻辑表达式,“信息”是字符串表达式,“默认值”的类型则视字段的类型而定。
建立表关联的步骤:1.在父表中建立主索引,在子表中建立普通索引。
2.由父表向子表拖一条连线。
3.清理数据库。(在“数据库”菜单中选择“清理数据库”)
4.用鼠标右击连线,点“参照完整性”。
参照完整性规则包括更新规则、删除规则和插入规则。
更新规则规定了当更新父表中的连接字段(主关键字)值时,如何处理相关的子表中的记录。
l级联:父表改子表也跟着改。
l限制:若子表中有相关的记录,则禁止修改父表中的连接字段值。
l忽略:不作参照完整性检查,即随意更新父记录中的连接字段值。
删除规则规定了当删除父表中的记录时,如何处理子表中的相关记录。
l级联:自动删除子表中的所有相关记录。
l限制:若子表中有相关的记录,则禁止删除父表中的记录。
l忽略:不作参照完整性检查,即删除父表的记录时与子表无关。
插入规则规定了当在子表中插入记录时,是否进行参照完整性检查。
l限制:若父表中没有相匹配的连接字段值则禁止插入子记录。
l忽略:不作参照完整性检查,即可以随意插入子记录。