1、 Visual FoxPro 程序设计第一章:数据库的基础知识1、基本概念1.1 数据库(DataBase)指存储在计算机存储设备上、结构化的相关数据集和(包括描述事务的数据本身及相关数据之间的联系) 。特点:、数据共享,减少数据冗余,具有较高的数据独立性,加强了对数据安全和完整性的保护1.2 数据模型表示实体与实体间联系的模型。 (任何一个数据库管理系统都是基于某种数据模型的,数据模型不同,相应的数据库系统也不同)数据模型的三种类型:层次模型、网状模型、关系模型1.3 数据库管理系统指帮助用户建立、使用和管理数据库的软件系统,它处理数据库中数据的定义、存取、管理、控制等。(它是数据库系统的核
2、心)主要功能:数据库的定义和建立,数据库的操作,数据库的运行控制,通讯功能2、关系数据库关系数据库用关系模型来描述数据之间的联系,所建立的数据库。2.1 关系:一张二维表就是一个关系,通常一个关系没有重复行、重复列,每个关系都有一个关系名。2.2 元组:一个关系中(二维表)每一行上的所有数据。2.3 属性:二维表中的每一列。2.4 域:属性的取值范围。2.5 关键字:能唯一确定一个元组的单个属性或多个属性组合。2.6 外部关键字:一个关系中的单个属性或多个属性的组合不是本关系中的主关键字,而是引用另一个关系中的关键字。2.7 关系模式:对关系的描述。3、关系的特点、关系必须规范化、在同一关系中
3、不允许出现完全相同的元组、在同一关系中不允许出现相同的属性名、在同一关系中元组及属性的先后次序无关紧要4、关系运算4.1 选择:从关系中(二维表中)找出满足条件的元组的操作。4.2 投影:从关系中指定若干个属性组成新的关系。4.3 联接:将两个关系的属性名拼接成一个更宽的关系,生成的新关系中包含满足联接条件的元组。5、数据的一致性和完整性数据完整性是指存储在数据库中的所有数据值均保持正确的状态。如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性。、实体完整性约束:指每一个关系应有一个主关键字,其值唯一标示关系中的一个元组,并且主关键字的值不能重复,不能为空(NULL) 。、域完整
4、性约束:关系中的属性值应是域中的值。、参照完整性:同一属性在不同关系中要有值的对应关系。第二章:Visual FoxPro 概述1、 Visual FoxPro(for Windows)版本的特点、良好的用户界面、支持面向对象的编程技术、增强的项目及数据库管理、简便快速的应用程序开发、数据库操作简便、多个用户可以一起开发程序、可与其它应用程序交互操作2、 主要文件类型(P23)3、 各种设计器和向导、项目管理器、向导、设计器、生成器4、Visual FoxPro 的工作方式及用户界面5、Visual FoxPro 系统的工作方式、交互方式(命令方式、可视化操作)、程序运行方式(自动处理方式)第
5、三章:Visual FoxPro 基础知识本章知识点:数据类型、常量、变量、运算符、表达式及常用函数。函数:字符处理函数、数值计算函数、日期时间函数、数据类型转换函数及测试函数。1、Visual FoxPro 系统的数据类型数据类型:字符型、货币型、数值型、浮点型、双精度型、整数型、日期型、日期时间逻辑型、通用型和备注型。字符型(Character)用来存储文字字符表示的数据,包括汉字、字母、数字、特殊符号及空格等,最大长度可达 254 个字符。 (不能用于数学运算)货币型(Currency)用来存储货币类型的数据,数据长度为 8 字节,小数部分为 4 位,超过 4 位则四舍五入,整数位数可达
6、 15 位。数字类型(Numeric)存储可以进行算术运算的数据,长度可达 20 位,在内存中一般占 8 个字节。浮点型(Float)功能上等价数字类型,存储时采用浮点格式。它由尾数、阶数及字母E 组成。双精度型(Double)存储数值精度要求更高的数据,数据长度为 8 字节,最多可有 7位小数。整型(Integer)存储整型数据,数据长度固定为 4 个字节。日期型(Date)存储表示日期的数据,数据长度固定为 8 字节。日期型数据的严格格式为yyyy-mm-dd(其中:-表示分隔符,还有/ 、 .、 空格 , 表示脱字符, 表示定界字符) ,日期的取值范围为公元 0000 年 01 月 01
7、 日至 9999 年 12 月 31 日。(严格的日期格式不受 Set Date To 语句的影响)日期时间型(Date Time ) 用来存储日期和时间数据。格式为 yyyy-mm-dd,hh:mm:ssa | p.逻辑型(Logic)存储逻辑数据,逻辑数据只有两个值,即真(.T.),假(.F.) ,数据类型长度为 1 字节。备注型(Memo)用于长度难于确定的数据块,它不同于其它的数据类型,该类型的数据存储在单独的文件中(备注文件) ,文件以.fpt 为扩展名,文件名与表名相同,最大可达到 2GB通用型(General)用来存储电子表格、文档、图片等 OLE 对象,信息的存储方式与备注型类
8、似。2、常量常量(Constant)是指运算过程中其值固定不变。 (使用地方:数据输入,或在命令的表达式中直接给出数值时。Visual FoxProx 系统中提供了字符型、数值型、货币型、逻辑型、日期时间型、日期型 6 种)字符型常量用定界符括起来的字符串。字符型常量的定界符有半角单引号、双引号和方括号三种。定界符本身不作为字符串的一部分,而是作为字符串的起始和中止界限。 (注意:定界符必须成对出现,如果定界符本身也要作为字符串的一部分输出,则必须要用另一种定界符为该字符串定界) 。数字型常量由数字、小数点和正负号构成,不能用分数表示,可用十进制和科学计数法表示。货币型常量由数字、小数点和正负
9、号构成,数据前要加一个美元符号($),只能用十进制表示,不能用科学计数法表示。逻辑型常量只能从逻辑真或逻辑假两个值中取一个,描述对事物状态的判断结果。逻辑型常量的定界符为原点。 (取值有:.T. .t. .Y. .y. .F. .f. .N. .n.)日期型常量用来表示一个确定的日期,其定界符为大括号。(日月中的 0 不能省略)日期时间型常量包含日期和时间两部分。, (注意:不能在指定时间为 p 时,同时指定时间大于等于 12)3、变量变量(Variable )是指运算过程中其值允许变化的量。变量值可以改变,但其名称和存储区域可以一直使用。变量名由汉字或字母开头,用字母、汉字、数字、和下画线构
10、成。变量名的长度一般不超过 10 个字符(数据库表中的字段变量名可以达到 128 个字符) 。、字段变量字段变量隶属于表文件中,所以字段变量也称为段变量,它随表文件的打开而存在,并随表文件的关闭而消失。、内存变量内存变量是内存中的一个存储区,变量的值存储在这个区域中,内存变量的类型取决于变量值的类型,并且内存变量的类型不是固定的,即可以把不同类型的变量值赋给同一个内存变量。内存变量的数据类型:字符型(C) 、数值型(N) 、货币型(Y) 、逻辑型(L) 、日期型(D) 、日期时间型( T)注意:当字段变量和内存变量同名时,字段变量名优先于内存变量名,使用时可以在内存变量名前加上“M-”与字段变
11、量以示区别。内存变量的分类:简单内存变量指内存中的简单变量,可以直接对它赋值而不用事先定义。A、 数组变量是一组内存变量的集合,由一系列元素组成,每个数组元素通过数组名和下标来访问,且每个数组元素相当于一个简单内存变量。注意:在 Visual FoxPro 系统中,只有一维数组和二维数组,一维数组中各元素按线性排列,二维数组相当于一张二维表,可以用一维数组的形式访问,且数组名不能和简单内存变量名相同,否则造成混乱;当改变数组的维数时,不管数组是几维,系统均将数组当一维数组来复制;二维数组也可以当成一维数组来访问。数组的定义:格式:DIMENSION | DECLARE (下标下限 1,下标下限
12、 2),B、 系统内存变量系统已经定义好的一些变量,用以表示系统的各种状态,通常以下划线“_”开头。 (注意:用户在定义内存变量时,内存变量名最好不要以下划线开头,以免与系统内存变量重名)、操作内存变量的常用命令及格式A、 内存变量建立格式:STORE TO |B、 显示和打印内存变量格式:LIST|DISPLAY MEMORY LIKE TO PRINTERPROMPT | TO FILE NOCONSOLE是指“?”或“*”“?”代表内存变量名中的任意一个字符。“*”代表内存变量名中任意一个或多个字符。PROMPT表示显示打印对话框。NOCONSOLE表示将结果不送屏幕。C、 输出内存变量
13、? | ??表示在当前光标的下一行显示表达式的值,缺省,则只起换行。内存变量简单内存变量数组变量系统内存变量?表示在当前光标位置开始显示各表达式的值。D、 清除内存变量、RELEASE 命令格式 1:RELEASE 格式 2:RELEASE ALL EXTENDED格式 3:RELEASE ALL LIKE | EXCEPT、CLEAR MEMORY 命令(与 RELEASE ALL 完全相同)E、 内存变量的保存与恢复、保存内存变量格式:SAVE TO ALL LIKE | EXCEPT、恢复内存变量格式:RESTORE FROM ADDITIVEADDITIVE表示将附加的内存变量添加到当
14、前内存变量的后面,而不覆盖当前变量,否则将覆盖原有的内存变量。4、 表达式表达式用变量、操作符、常量、函数、字段名、控件属性等组合成的式子。表达式的类型变量值的类型确定。、数值表达式由算术运算符将数值型常量、变量或变量连接起来形成的。算术运算符如下表:优先级 运算符 说明1 () 用于表示子表达式2 或* 乘方运算3 *、/、% 乘、除和取模运算4 +、- 加、减运算、字符表达式用字符串运算符将字符型常量、变量或函数连接起来的表达式,其运算结果是字符型数据。字符串运算符:+、-(优先级相同 )+ :前后两个字符串首尾连接组成一个新的字符串。- :连接前后两个字符串并将前字符串 尾部的空格移到合
15、并后的新字符串尾部。、日期(或日期时间)表达式是用日期运算符将日期(或日期时间)型(或数值型)常量、变量或函数连接起来组成的表达式,运算的结果是日期(或日期时间)数据类型。日期时间运算符:+、-格式 1: - 格式 2: - 格式 3: + 格式 4: - 格式 5: - 格式 6: + 、逻辑表达式(包含关系表达式)由逻辑运算符连接的逻辑型变量、函数或关系表达式构成的表达式,运算结果为逻辑型数据。A、 简单逻辑表达式由关系运算符将两个运算对象连接形成的表达式,也称为关系表达式。注:关系运算符只能在数值型数据、字符型数据、货币型数据和日期型数据之间进行。格式:关系运算符如下表:关系运算符 说明
16、 关系运算符 说明= 等于 大于 = 大于或等于 “选项” “数据” 选项卡 、命令方式格式:SET COLLATE TO “”B、 复合逻辑表达式用一个或多个逻辑表达式组合起来,进行逻辑运算。格式:逻辑运算符如下表:逻辑符 功能 说明() 括 号 优先级最高!或 NOT 逻辑非 对原逻辑值取反AND 逻辑与 自由相连的表达式全为真时结果才为真OR 逻辑或 只要相连的表达式中任一个为真结果就为真注意:表达式中出现多种运算符时,括号优先级最高,其次是:函数、算术运算、字符运算、日期运算、日期时间运算、比较关系运算、逻辑运算。运算规则如下表:.NOT .AND. .OR.T. .T. .F. .T
17、. .T.T. .F. .F. .F. .T.F. .T. .T. .F. .T.F. .F. .T. .F. .F.、宏替换把内存变量和数组元素中的内容当作原义字符串。当连接字符(&)位于内存变量或数组元素前面时,内存变量和数组元素的内容将替代宏引用。格式:& MemVarName .cExpression例如:ab=Fox?&ab.Pro、名称表达式名称不是内存变量或数组,名称表达式可以被创建,创建后可以用该名称表达式替换字符型变量或数组元素的值。例如:STORE 姓名 TO XMREPLACE (XM) WITH 黄斌将姓名字段名保存于变量 XM 中,然后再“姓名”字段中放入“黄斌”值,
18、而“姓名”便是名称表达式 XM 的值。5、常用函数函数是用来实现某些特定运算,表示形式是:函数名称后跟一个圆括号,圆括号内给出函数的自变量,对于某些没有自变量或者可以缺省自变量的函数,圆括号内为空。每个函数都有一个结果,称为函数的返回值。字符处理函数、数值计算函数、日期时间函数、数据类型转换函数、测试函数、数值运算函数、绝对值函数 ABS()格式:ABS()、符号函数 SIGN()格式:SIGN()、指数函数 EXP()格式:EXP()、取整函数 INT()格式 1:INT() (舍弃小数部分 )格式 2:CEILING()(返回大于或等于的最小整数)格式 3:FLOOR() (返回小于或等于
19、 的最大整数)、对数函数 LOG()格式:LOG()、平方根函数 SQRT()格式:SQRT()、最大值函数 MAX(),最小值函数 MIN()格式:MAX(,)MIN(,)、求余数函数 MOD()格式:MOD(,)、四舍五入函数 ROUND()格式:ROUND(,) (数值表达式 2 表示保留小数的位数)、圆周率函数 PI()和三角函数格式:PI()SIN()COS()TAN()、字符函数、日期和日期时间函数、数据类型转换函数、求 ASCII 码函数 ASC()格式:ASC()、ASCII 码值转换成字符函数 CHR()格式:CHR()、字符串转换成日期或日期时间函数格式 1:CTOD( )
20、格式 2:CTOT()、日期或日期时间转换成字符串函数格式 1:DTOC( | ,1) 将转换为:YYYYMMDD 格式格式 2:TTOC(,1 | 2)格式 3:DTOS( | )、数值转换成字符串函数 STR()格式:STR(,)、字符型转换成数值型函数 VAL()格式:VAL()诶、测试函数、值域测试函数 BETWEEN()、NULL 值测试函数 ISNULL()、空值测试函数 EMPTY()、数据类型测试函数、文件查找函数 FILE()、条件测试函数 IIF()、表文件结束标识测试函数 EOF()、表文件起始标识测试函数 BOF()、记录号测试函数 RECNO()、记录个数测试函数 R
21、ECCOUNT()、记录大小测试函数 RECSIZE()、记录删除标记测试函数 DELETED()6、命令及其常用子句VFP 中的操作均可通过命令方式来实现,命令一般由命令动词和命令子句构成。、常用命令子句、命令动词(如:USE, CREATE, DISPLAY, LIST)、范围子句ALL (库文件中所有记录)NEXT n (从当前记录开始的 n 个记录)REST (从当前记录到文件结束)RECORD n (记录号为 n 的记录)、表达式表、FIELDS 子句 (FIELDS 子句后跟 ,字段间用逗号分开)、FOR 子句格式:FOR 在给定范围中查出所有满足条件的记录、WHILE 子句 (从
22、当前记录开始,在指定的范围内按顺序查找,若遇到第一个不满足停止操作)、命令和命令子句的书写规则(P88)第四章:数据库的操作本章知识点:表结构的建立与修改、表记录的浏览、增加、删除与修改、创建数据库及向数据添加表或从数据库删除表、设定字段级规则和记录级规则等操作及相关命令。数据库除了包含存储数据的表以外,还包含与表相关联的视图、连接和存储过程等。表是数据库的主要组成部分,是收集和存储信息的基本单元。1、 数据库的创建及其操作在 Visual FoxPro 系统中,数据库中存储一系列的表,它可以单独使用,也可以在项目中使用,数据库是以数据文件形式存在,其文件扩展名为.dbc、数据库的创建或打开三
23、种方式:利用项目管理器、菜单方式、命令方式(CREATE | OPEN DATABASE | ?)、当前数据库的设置格式:SET DATABASE TO 、数据库的修改 、利用项目管理器 、利用菜单方式 、命令方式MODIFY DATABASE |?NOWAITNOEDITNOWAIT:在交互方式中无效,在程序中,系统将在该命令后继续执行后继命令NOEDIT:禁止修改数据库。、数据库的关闭(或打开)格式:CLOSE DATABASES ALL格式:OPEN DATABASE|?EXCLUSIVE|SHAREDNOUPDATENOUPDATE:表示以只读方式打开数据库。、数据完整性和正确性的保证
24、可以通过字段有效性、记录的有效性、表的触发器和对照完整性来保证数据的完整性和正确性。、字段级限制、记录级限制、创建触发器触发器在规则之后运行,一个表最多有三个触发器,触发器必须返回“真”(.T.)或“ 假”(.F.) 、参照完整性的建立参照完整性是指当插入、删除、或修改一个表中的数据时,通过参照引用另一个表中的数据,来检查对表的数据操作是否正确。、存储过程建立存储过程指存储在数据库中的过程,过程可以包含允许在用户自定义函数中出现的命令或函数。、创建本地视图视图是一个定制的虚拟表定义,可以是本地、远程或带有参数的定义。可以在项目管理其中创建视图。2、 表的创建及操作表由两部分组成:结构定义部分和
25、数据部分。、自由表自由表是一个独立的文件。自由表的创建: 、利用项目管理器创建 、用菜单方式创建 、用命令方式创建格式:CREATE | ?注意:若要创建一个自由表,在用命令方式创建是不能打开任何数据库,否则创建的是一个数据库表。 、数据库表数据库表是包含于数据库中的对象,它依附于所在的数据库。 (创建数据库表时必须先打开数据库,否则创建的是自由表)数据库表的创建: 、利用项目管理器创建 、利用数据库设计器创建数据库表 、用菜单方式创建 、用命令方式创建 (CREATE | ?)数据库表的添加: 、在项目管理其中添加 、在数据库设计器中添加 、用命令方式添加格式:ADD TABLE |NAME
26、 、表的操作表的打开: 、命令方式:格式:USE 、菜单方式:“文件” 菜单 “打开”命令在打开的对话框中选择文件文型为“表(*dbf) ”,在选择相应的表,单击 “打开”按钮。 、利用数据工作期方式(单击工具栏上“数据工作期窗口”按钮)表的关闭: 、命令方式:格式 1:USE (关闭当前表)格式 2:CLOSE TABLE ALL (关闭当前数据库中所有打开的表)格式 3:CLEAR ALL (关闭所有表)格式 4:CLOSE ALL (关闭所有打开的数据库和表)格式 5:CLOSE DATABASE ALL (关闭当前数据库及其中的的表) 、利用数据工作期方式(单击工具栏上“数据工作期窗口
27、”按钮) 、通过退出 Visual FoxPro 系统来关闭表表记录的输入: 、命令方式追加记录格式:APPEND BLANK 、直接输入表记录在刚建立完表结构后,单击提示框的“是”按钮则可以直接输入数据。表结构的修改: 、命令方式:格式:MODIFY STRUCTURE 、菜单方式:第一步:选择系统菜单“文件”命令,选择相应的表。 第二步:选择系统菜单“显示”命令,即可进入表设计器进行修改。表及表结构的复制: 、表文件的复制格式:COPY FILE TO 说明:在对表进行复制时,该表必须处于关闭状态。 、表复制到表及其它类型文件(P107)copy to 范围 for while field
28、s | fields like | fields except type sdf | xls | delimited | with | with blank | with tab格式:COPY TO FORWHILE 、表结构的复制格式:COPY STRUCTURE TO FIELDS记录的操作: 、记录的显示格式:LIST | DISPLAYOFFFIELDSFORWHILETO PRINTERPROMPT | TO FILE LIST 和 DISPLAY 的区别:DISPLAY 每显示一屏记录暂定一次,按任意键后继续;LIST 把所有的记录一次显示完,没有周期性暂停。DISPLAY 后的所
29、有的选项全部省略则只显示当前记录。 、记录指针的操作格式 1:GO | GOTORECORD | TOP|BOTTOM说明:将记录指针直接定位到指定的记录上。格式 2:SKIP说明:将记录指针向前或向后做相对若干条记录的移动 、使用浏览器操作表格式:BROWSENOAPPENDFIELDSFOR 、添加记录格式 1:INSERT BLANKBEFORE格式 2:INSERT INTO (字段名 1,字段命 2,) VALUES(表达式 1,表达式 2,)格式 3:APPEND FROM |?FIELDSFORTYPEDELIMITEDWITH|WITH BLANK |WITH TAB|SDF|
30、XLS 、修改记录EDIT 和 CHANGE 命令交互修改Edit | change fields for while font ,数值表达式 style 、记录的删除格式 1:DELETEFORWHILE格式 2:ZAP (清除当前表中的全部记录 )格式 3:PACKDBFMEMO ( 清除带有删除标记的记录) 、记录的恢复格式:RECALLFORWHILE记录与数组的数据传送 、SCATTER FIELDS|Fields LIKE |Fields EXCEPT MEMO TO blank|MEMVAR blank将数组或内存变量内容传到表中去。Gather from | memvar fi
31、elds | fields like| fields except memo、将表中的一批纪录送到数组中:copy to array fields 范围 for | while 、从数组向表中追加纪录append from array for | fields | fields like | fileds except 、数据库的高级操作如下:表的排序:表的排序是指把表文件中的记录按照某个字段值的大小顺序重新排列,作为排序的依据字段称为“关键字” 。(由小到大排列称为升序,由大到小排列称为降序)格式:(PAGE131)注:排序后将有一个新表产生,记录在表中的物理顺序被改变。表的索引:索引是由记
32、录指针构成的文件,这些指针指向表文件中的记录,并在逻辑上按照索引关键字进行排序,以加快数据检索的速度。索引分类:、按功能分:A、主索引 设定为主关键字的索引,主关键字能惟一确定记录的顺序,一个表中只能有一个主索引。B、候选索引 类似于主索引,能够确定记录在表中的惟一性,一个表可以有多个候选索引。C、惟一索引 指同一张表中,索引关键字的内容具有惟一性,没有内容相同的两个以上的记录,一个表中可有多个惟一索引。D、普通索引 主要用于逻辑排序,以便快速查询,索引关键字的内容不具有惟一性,可以重复,一个表中可以加入多个普通索引。、按索引文件分:(PAGE133)A、单索引文件(文件扩展名为 .IDX)B
33、、复合索引文件(文件扩展名为 .CDX)在数据库表和自由表中索引的情况:(T 表示存在,F 表示不存在)主索引 候选索引 惟一索引 普通索引数据库表 T T T T自由表 F T T T索引的创建:、在表设计器中建立索引、命令方式索引文件的打开与关闭:A、打开表的同时打开索引文件B、在表以打开的情况下打开索引文件C、在打开的索引文件中设置主控索引重新索引:A、自动索引B、重新索引格式:REINDEX COMPACT删除索引格式 1:DELETE TAG OF ,标示2OF格式 2:DELETE ALL OF 注:索引建立后将产生一个新文件,记录在表中的物理顺序不改变。表的查询:4 种查询命令(
34、LOCATE、CONTINUE、FIND、SEEK)LOCATE 和 CONTINUE 配合使用,称为顺序查询;FIND 和 SEEK 只能在索引文件中查询,称为快速查询。表的统计:、计数命令、求和命令、求平均值命令、综合计算多表操作:工作区的选择格式:SELECT (别名的定义:USEALIAS)数据工作期及视图文件是用不同工作区的表表的关联SET RELATION TO eExpression1 INTO nWorkArea1 | cTableAlias1 , eExpression2 INTO nWorkArea2 | cTableAlias2 . IN nWorkArea | cTab
35、leAlias ADDITIVE 参数 eExpression1 指定用来在父表和子表之间建立关系的关系表达式。关系表达式通常是子表主控索引的索引表达式。 子表的索引可以是单项索引 (.IDX)、多项结构复合索引 (.CDX) 或独立复合索引。如果是复合索引,应指定适当的索引标识来排序子表。SET ORDER 可用来指定排序子表的索引标识。 例如,考虑“说明”部分描述的 customer 和 orders 两表。假定子表 orders 已经建立索引,并且使用如下命令用顾客编号进行排序: SET ORDER TO TAG cust_id 要在 customer 和 orders 两表的顾客编号上
36、建立关系,应选择包含父表 customer 的工作区或使用 IN 子句来指定父表的工作区或别名。然后,发出 SET RELATION 命令,用如下关系表达式指定索引表达式: SET RELATION TO cust_id INTO orders 除非关系表达式是数值型的,否则子表必须建立索引。如果发出包含非数值关系表达式的 SET RELATION 命令时,子表没有使用索引进行排序, Visual FoxPro 显示错误信息。 如果 eExpression1 是数值型表达式,那么当记录指针在父表中移动时,将计算此表达式。然后,子表的记录指针移到记录编号为 eExpression1 的记录上。
37、INTO nWorkArea1 | cTableAlias1 指定子表的工作区编号 (nWorkArea1) 或子表的表别名 (cTableAlias1)。 eExpression2 INTO nWorkArea2 | cTableAlias2 . 指定其他关系表达式 (eExpression2) 和子表,建立另一个父表和子表之间的关系。在一条 SET RELATION 命令中可以创建单个父表与多个子表之间的关系,但是各个关系之间要用逗号隔开。 nWorkArea2 指定工作区编号,cTableAlias2 指定子表的别名。 IN nWorkArea 指定父表的工作区。 IN cTableAl
38、ias 指定父表的别名。 IN 子句允许创建关系时不必首先选择父表工作区。如果 SET RELATION 命令中省略了 nWorkArea 和 cTableAlias,父表必须在当前选定的工作区中打开。 ADDITIVE 保留当前工作区中所有已存在的关系并创建指定的新关系。如果命令中不包括 ADDITIVE 子句,将断开当前工作区中的所有关系,然后再创建指定的关系。 备注 在建立关系之前,必须打开一个表(父表),而且还必须在另一个工作区内打开其他表(子表)。 相关的各表通常有一个相同的字段。例如,假定表 customer 包含顾客信息,有顾客姓名、地址和唯一的顾客编号等字段。表 orders
39、包含订货信息,也有顾客编号字段,同时还有日期和发货信息等字段。 SET RELATION 通过相同的字段,即顾客编号字段来联系两个表。要建立这种关系,子表必须在公共字段上建立索引。建立关系后,不论何时在父表 customer 中移动记录指针到指定顾客编号的记录上时,子表 orders 中的记录指针也将同时移到相同顾客编号的记录上。如果子表中找不到相匹配的记录,子表中的记录指针将停在表尾。 不带任何参数的 SET RELATION TO 命令将移去当前选定工作区中的所有关系。可用 SET RELATION OFF 移去指定的父子关系。 表之间的连接JOIN 命令 join with to for
40、 fields 查询和视图、查询查询就是向数据库发出的检索信息请求,它通过一些限定条件提取特定的记录,共用户查看和分析数据。查询功能:用户可以选择要显示的字段,定义一些过滤条件,并将结果保存(扩展名为.qpr) ,在查询数据时,只需调出查询文件并执行即可,查询结果仅供输出,不影响原数据表文件。结构化查询语言 SQL 基础知识SQL 的数据定义功能(数据定义就是创建数据库,对于关系数据库,就是建立表、编辑表) 。数据定义语句建立新表:create table为表添加新字段:alter table add编辑表中已有字段:alter table alter (rename)删除表中指定字段:alt
41、er table drop删除表:drop tableSQL 的数据更新功能插入记录 insert更新纪录 update删除记录 deleteSQL 的数据查询功能创建查询A、利用【查询向导】创建查询选择【文件】 (向导) 、选择【工具】 、在【项目管理器】 (向导)B、利用【查询设计器】创建查询选择【文件】 (新建) 、在【项目管理器】 (新建)中查询输出输出的形式有多中运行查询多表连接查询内部连接:当左表和右表中的联接字段的值相匹配时,才列出连个表中的记录。左连接:列出左表中的所有记录以及右表中所有选定字段与左表的字段相匹配的记录。右连接:列出右表中的所有记录以及左表中所有选定字段与右表的
42、字段相匹配的记录。完全连接:在查询结果中,列出左表和右表中的所有记录。交叉表查询、视图视图通查询一样,是从一个或多个表中检索符合特定条件的记录;视图中只存放相应的数据逻辑关系,并不保存表的记录的值;因此视图不能单独存在,只能丛属于某个数据库。视图与查询的区别功能不同。视图可以更新字段内容并返回原表;查询文件中的记录数据不能修改。归属不同。视图不是一个独立的文件,它保存在数据库中;查询文件是一个独立的文件,不属于数据库。访问限制不同。视图的数据来源可以是本地数据源,也可以是远程数据源;而查询不能访问远程数据源。输出去向不同。视图只能当表使用,而查询可以选择多种查询去向,如表、图表、报表、标签等。
43、使用方法不同。视图可以作为数据源被引用,而查询去向不能被引用。使用方式不同。视图只有所属的数据库被打开时,才能使用;而查询可在“命令”窗口中执行。建立视图本地视图的建立使用【本地视图向导】创建、使用【视图设计器】创建远程视图的建立(远程视图使用当前数据库之外的数据源,通过远程视图用户无需将所有的远程记录下载到本地机即可提取远程数据信息,并在本地操作选定的记录,然后修改结果送回到远程数据库中)创建连接:在【项目管理器】 【数据】选项卡连接在“文件”下的新建命令选择“远程视图”新建新建使用【远程视图向导】创建、使用【视图设计器】创建使用视图参数视图的创建(p188)第五章:Visual FoxPr
44、o 程序设计Visual FoxPro 是一种结构化程序设计语言,它的语句没有标号,没有无条件转移语句,程序的流向由语句的逻辑结构来决定。从形式上看,Visual FoxPro 的程序,由若干有序的命令行组成,且满足下面的规则:、一个命令行只能写一条语句,命令行的长度不得超过 2048 个字符,命令行以回车键结束。 、一个命令行可以由若干个物理行组成,即一条命令在一个物理行内写不下时,可以分成几行。 (换行的两种方法:A 、在物理行的末尾加上“;” ,B、系统自动换行(当输入的程序达到屏幕的最大限度时系统自动换行) ) 。 、为便于阅读,可以按一定格式输入程序。1、 命令文件在 Visual
45、FoxPro 中,命令文件(即程序)是包含一系列命令的文本文件。、基本命令:字符接受语句 ACCEPT TO 通用数据接受命令 INPUT TO ACCEPT 和 INPUT 的区别:ACCEPT 命令只能接收字符串,而 INPUT 语句可以接收任意类型的表达式;如果输入的是字符串,ACCEPT 语句不必使用字符型定界符,而 INPUT 语句必须用定界符括起来。输入一个字符语句 WAIT TO 、程序设计辅助命令中止程序运行:CANCEL:结束程序的运行,返回到命令窗口,同时关闭所有打开的文件。SUSPEND:暂时终止程序的运行,返回到命令窗口。当选择“程序”下的“继续执行”时,或在命令窗口输
46、入“RESUME”命令时,程序从中止的地方继续执行。注释命令:NOTE/*&文本显示命令:TEXTENDTEXT、命令文件的建立 、项目管理器“代码”选项卡“程序”新建 、 “文件”菜单新建程序新建文件 、在命令窗口中输入:MODIFY COMMAND、命令文件的编辑、书写程序的规则:大小写:Visual FoxPro 不区分大小写,但为阅读方便,通常约定命令和函数使用大写字母,其他名称使用小写字母。缩写:命令和函数可以只写前 4 个字符。续写:如果一条命令在一行写不下时,可以在行尾加“;”后在下一行继续输入。注解:注解符有“*”和“&” ;“*”是整行注释,在行首加上此符号表示此行内容为注解
47、, “&”是尾端注解,在一行的尾端加上此符号表示其后的内容是注解。note2、 程序设计的三种结构、顺序结构顺序结构程序(直接结构)自始至终按照语句序列的排列顺序,依次逐条执行的简单程序,命令顺序与执行顺序一致,它是一种最基本的程序结构。、选择结构根据条件的计算结果的不同执行不同的操作逻辑流程图如下:语句序列 1 语句序列 2出口入口条件判断选择结构的两种语句:、单条件选择语句IF ELSEENDIF、多条件选择语句DO CASECASE CASE CASE OTHERWISEENDCASE、循环结构三条循环语句: 、循环语句 DO WHILE格式:DO WHILE EXITLOOPENDDO 、循环语句 FOR格式:FOR = TO STEP ENDFOR/NEXT 、循环语句 SCAN格式:SCAN FOR WHILELOOPEXITENDSCAN3、 过程与过程的调用过程把需要再多处重复使用的程序段编写成一个相对独立的程序模块。主程序调用程序或程序