500 likes | 668 Views
命. 令. 与. 数. 据. 表. Visual FoxPro 程序设计之. 2012 级 VFP 程序设计教程 第二讲. 计算机与数学教研室:靳瑞霞 邮箱: sqjcbjsj@126.com. 字 组词 造句 写作文. 有效地进行 VFP 的学习:一步一个脚印. 数据类型、常量和变量 表达式和函数 VF 命令 写程序. 学习步骤:. VF 的常量与变量. 常量( 35 ). 1. 1 )数值型常量 : 如: 20 , 16 , 100 , 1 2 )字符型常量 : 用单引号或双引号括起的 字符串,如: "ABCD"
E N D
命 令 与 数 据 表 Visual FoxPro程序设计之 2012级 VFP程序设计教程 第二讲 计算机与数学教研室:靳瑞霞 邮箱:sqjcbjsj@126.com
字 组词 造句 写作文 有效地进行VFP的学习:一步一个脚印 • 数据类型、常量和变量 • 表达式和函数 • VF命令 • 写程序 学习步骤:
VF的常量与变量 常量(35) 1 1)数值型常量:如:20,16,100,1 2)字符型常量:用单引号或双引号括起的 字符串,如:"ABCD" 3)逻辑型常量,只有两种:.T.和.F. 4)日期型常量和日期时间型常量: 如{^1999-04-22},{^1999-04-24 10:00am} 5)货币型常量:$1234
VF的常量与变量 变量(38) 1 • 内存变量——存放单个数据的内存单元 • 数组变量——存放多个数据的内存单元组 • 字段变量——存放在二维表中的数据项 • 系统变量——VFP提供了一批系统内存变量,它们都以下划线开头,分别用于控制外部设备(如打印机、鼠标器等),屏幕输出格式等方面的信息。
VF的常量与变量 变量(38) 1 变量命名规则 • 以字母、数字及下划线组成,中文VFP可以 使用汉字作变量名。 • 以字母或下划线开始,中文VFP可以汉字开始。 • 长度为1-128个字符,每个汉字占2个字符。 • 不能使用VFP的保留字。
VF的常量与变量 变量 1 内存变量 内存变量是一般意义下的简单变量。每一个内存变量都必须有一个固定的名称,以标识该内存单元的存储位置。用户可以通过变量标识符使用内存单元存取数据。 内存变量的类型有数值型、浮点型、字符型、逻辑型、日期型和日期时间型6种,它的定义是通过赋值语句来进行的。
VF的常量与变量 变量 1 1、<内存变量>=<表达式> 2、STORE <表达式> TO <内存变量表> 功能:计算表达式,然后将计算结果赋给内存变量。格式1只能给一个内存变量赋值,而格式2可以将同一数据赋给多个内存变量。 说明: ①内存变量在赋值时定义了它的值及类型,其类型与所赋的值的类型相同。 ②STORE命令的<内存变量表>可包括多个内存变量,但须用逗号来分隔。 内存变量赋值语句
VF的常量与变量 变量 1 s="计算机" &&字符串计算机赋给变量s,s成为字符型变量 STORE 2*4 TO x,y,z &&计算2*4得8,x、y、z值都为8,均是数值型变量 &&: 注释语句
VF的常量与变量 变量 1 内存变量赋值后有两种输出方式: 1、list memory 内存变量名 2、?或??输出(?进行换行输出,??不换行输出) ***切记不可边赋值边输出,即?A=2*3×
VF的函数 函数(42) 2 • 函数一般格式:函数名([参数表]) • 1.数值函数 • 求绝对值函数:ABS(<数值型表达式>) • 例:?abs(-16) 结果:16 • 求平方根函数:SQRT(<数值型表达式>) • 例:?sqrt(16) 结果:4 • 取整函数:INT(<数值型表达式>) • CEILING (<数值型表达式>) • FLOOR (<数值型表达式>) • 例:?int(56.72) 结果:56
VF的函数 函数 2 • 求余数函数 • MOD(<数值型表达式1>,<数值型表达式2>) • 注意:如果被除数与除数同号,函数值为两数相除的余数,如果被除数与除数异号,函数值为两数的余数再加上除数的值。所得余数的符号和表达式2相同。 • 例:?mod(25,7) 结果:4 • ?mod(25,—7) 结果:—3 • 四舍五入函数 • ROUND(<数值型表达式1>,<数值型表达式2>) • 求最大值和最小值函数 • MAX(<表达式1>,<表达式2>,…, <表达式n>) • MIN(<表达式1>,<表达式2>,…, <表达式n>)
VF的函数 函数 2 2、字符函数: 计算字符串长度函数LEN() 格式:LEN(<字符表达式>) 示例:?LEN(“ABCDF”) X=“首都经贸大学” ?LEN(X) 生成空格函数SPACE() 格式:SPACE(<数值表达式>) 示例:?“北京”+SPACE(3)+“首都”
VF的函数 函数 2 取子字符串函数 SUBSTR()、LEFT()、RIGHT() 格式:SUBSTR(<字符表达式>,<数值表达式1>[,<数值表达式2>]) 示例:?SUBSTR(“城市经济”,5,4) LEFT(<字符表达式>,<数值表达式> RIGHT(<字符表达式>,<数值表达式>
VF的函数 函数 2 转换函数(48) STR()、val()、CTOD()、DTOC() 格式:STR(<数值型表达式1>[,<数值型表达式2>[,<数值型表达式3>]] 功能:将数值型表达式1的值转换成字符串, <数值型表达式2>决定转换后字符串的长度, <数值型表达式3>决定保留的小数位数 。
VF的表达式 表达式(50) 3 ?2*(3+6) ?65/43 ?2^16 ?100%13 a=3 b=6 c=2 X1=(-b+(b^2-4*a*c)^(1/2))/(2*a) • 算术表达式 • 算术运算符 • 括号 ( ) • 乘方 ** 或 ^ • 乘 * • 除 / • 求余 % • 加 + • 减 -
VF的表达式 表达式 3 • 字符表达式 • 连接运算符:+和- • 例:x=‘中国 ’ • y=‘新乡’ • ?x+y 结果:中国 新乡 • ?x-y 结果:中国新乡 • 包含运算符:$(结果是逻辑值) • 例: ?’old’ $ ’hold’ • 结果: .T.
VF的表达式 表达式 3 • 日期和时间表达式 • 运算符:+和- • 例:{^2010-05-01}-{^2010-04-08} • {^2010-05-01}-DATE( ) • DATE( )函数:取系统当前日期(P46)
VF的表达式 表达式 3 • 关系表达式(p51) • 关系运算符:=、<、<=、>、>=、<>或!= • 结果是逻辑值 • 字符的比较规则: • Machine • PinYin • Stroke • 例:?12<23/5+6 结果:.F. • ?”张三”<“李四” 结果:.F. • ?’HE’>’he’ 结果:.T.
VF的表达式 表达式 3 • 逻辑表达式 • 逻辑运算符: • 非 NOT .NOT. ! • 与 AND .AND. • 或 OR .OR. • 例:!12>8 结果:.F. • 12>8 AND 6<3 结果:.F. • 12>8 OR 6<3 结果:.T.
VF表的基本操作 表的建立(57) 4 二维表的两个组成部分:表结构、表记录,建立表的关键在于表结构的设计。 CREATE命令或文件/新建菜单方式可打开表设计器,表的扩展名默认为.DBF,表建好后放置在默认目录中
VF表的基本操作 表的建立 4 • 设计表结构的关键要素: • 1、字段名(字段变量):由汉字、字母、数字或下划线组成,以汉字、字母或下划线开头,自由表的字段名最多为10个字符,数据库表的字段名最多为128个字符。 • 2、字段类型: • 3、字段宽度: • 4、小数位数: • 5、是否允许 • 为空值NULL
VF表的基本操作 表的建立 4 • 表结构的修改命令:P63 Modify structure • 表结构的显示:P62 List/Display Structure [to printer[prompt] ︱ to file<文件名>] • 表结构的复制:P69 Copy structure to <文件名> [fields<字段名表>]
VF表的基本操作 记录指针与定位(66) 4 VF系统给表中每个记录提供一个记录号并自动设置一个指针,表打开时记录指针指向第一个记录
VF表的基本操作 记录指针与定位 4 绝对定位与相对定位 • 相对定位:go <数值型表达式> go top go bottom • 在当前记录指针位置的基础上,将记录指针向前或向后移动N条(N为正数向后移动,N为负数向前移动)。 格式: SKIP N
VF表的基本操作 记录指针与定位 4 表头、表尾定位 BOF Begin of file GO TOP EOF End of file GO BOTTOM
VF表的基本操作 记录指针与定位 4 表中记录定位的相关函数
VF表的基本操作 LIST/DISPLAY命令(62) 4 List /Display [Fields <字段名表>] [<范围>] [FOR <条件>][While<条件>] [To Printer[Prompt]][To File<文件名>] [OFF] 1、 [Fields <字段名表>] 举例:List/disp fiel 学号,姓名,籍贯 2、 [<范围>] [FOR <条件>][While<条件>] 举例:List for mod(recno(),2)=1 3、 [To Printer[Prompt]] 4、 [To File<文件名>] 5、[OFF] 说明:
VF表的基本操作 LIST/DISPLAY命令 4 范围子句
VF表的基本操作 LIST/DISPLAY命令 4 FOR子句 • FOR子句的<条件>为逻辑表达式,它指定选择记录的条件。FOR子句默认的搜索范围为全部记录。若命令中还含有范围子句,则在指定范围中筛选出符合条件的记录。 举例: LIST FOR !少数民族否 .AND. 性别=“男” LIST 姓名,性别,year(date())-year(出生日期),简历 for “湖”$籍贯
VF表的基本操作 LIST/DISPLAY命令 4 WHILE子句 该子句也用于指明操作条件,但它仅在当前记录符合<条件>时开始依次筛选记录,一旦遇到不满足条件的记录时就停止操作。 LIST WHILE 性别=“男”
VF表的基本操作 LIST/DISPLAY命令 4 注意: • LIST / DISPLAY命令兼有查询的功能 • 另有定位查询命令:LOCATE[范围]FOR<条件>︳WHILE<条件>(必须与DISPLAY命令结合使用) Use student Locate for !少数民族否 and 性别=“男” Disp 姓名,入学成绩, year(dae())-year(出生日期) Continue disp
VF表的基本操作 表的修改 4 • 1)窗口浏览式修改命令(p64) • BROWSE [FIELDS<字段名表>][for<条件>] • 功能:浏览或编辑表文件中数据,在该窗口可 以进行修改数据、添加数据、删除数据等操作。 FIELDS<字段名表>可以指定字段进行显示或 修改数据。 • 举例: brow fiel 学号,姓名,入学成绩 for 性别=“女”
VF表的基本操作 表的修改 4 2)数据的批量修改命令(p66) REPLACE <字段名1> WITH <表达式1> [ADDITIVE][ , <字段名2> WITH <表达式2> [ADDITIVE] … ] [ 范围 ] [ FOR︱while<条件> ] 功能:用表达式的值自动替换指定字段值 注意(1)范围或条件缺省,只替换当前记录 (2)[ADDITIVE]选项,表达式值添加到备注字段中已有数据的尾部,否则表达式值将覆盖字段的原有数据。
VF表的基本操作 表的修改 4 举例:p66(例题4.3) • USE STUDENT • REPLACE 入学成绩 WITH 入学成绩+20 ; • for 少数民族否 • List • Go 6 • REPLACE 出生日期 with {^1983-09-07} • Disp
VF表的基本操作 表的删除 4 表数据的删除及恢复 • 删除机制: • 逻辑删除:加删除标记(放入回收站) • 物理删除:将加删除标记的记录从表中真正清除(清空回收站) • 恢复:去删除标记(还原)
(四)VF的表 表的删除 4 逻辑删除 格式:DELETE [ 范围 ] [ FOR ︱While<条件> ] 说明:若无范围或条件,只删除当前记录 恢复被逻辑删除的命令 格式:RECALL [ 范围 ] [ FOR︱while <条件> ] 物理删除 格式:PACK &&彻底删除被逻辑删除的记录 数据表清空 ZAP &&彻底删除所有记录(除表结构)
VF表的基本操作 饭卡信息管理命令实例 4 • 查询余额: LIST 余额 FOR 卡号=“20060612” • 消费: REPLACE 余额 WITH 余额-3.2 • 加钱: REPLACE 余额 WITH 余额+50 • 开卡: APPEND BLANK REPLACE 卡号 WITH “20060612”,姓名 WITH “赵军” ,余额 WITH 100 • 销户: DELETE FOR 卡号=“20060612” PACK
VF表的基本操作 表的复制 4 • 命令格式:P69 • Copy to< 文件名>[fields]<字段名表>[<范围>] • [for<条件>][while<条件>][[type]sdf︱delimited︱xls][with<定界符>︱blank] • 举例: • Use student • Copy to newb1 for 入学成绩>600 • Use newb1 • List
VF表的基本操作 表的排序(p73) 4 排序是根据不同的字段对当前表的记录做出不同的排列,产生一个新表。 • Sort to < 文件名> on <字段1>[/a︱/d][/c] [,<字段2>[/a︱/d][/c] …][fields<字段名表>] [<范围>][for<条件>][while<条件>] 举例: Use student Sort on 入学成绩/d to cjb Use cjb List next 5
VF表的基本操作 表的索引(p74) 4 索引并不是重新排列表记录的物理顺序,而是另外形成一个索引关键表达式与记录号之间的对照表(索引文件)。
VF表的基本操作 表的索引 4 • 索引文件的种类: • 1)单索引文件:只能保存一个索引,单索引文件的扩展名为:.idx • 2)复合索引文件:可以存储多个索引,是一个压缩的索引文件,其扩展名为:.cdx ***有一类特殊的复合索引文件叫做结构复合索引文件,此类索引文件的文件名与相应的表文件名相同,扩展名为.cdx,无论何时打开表,该类索引文件由系统同时打开。所以对表的记录进行修改时,结构复合索引文件会进行自动更新!
VF表的基本操作 表的索引 4 索引的类型: • 1)主索引:不允许在指定字段或表达式中出现重复值的索引,只有数据库表才能建立主索引而且每一个表只能建立一个主索引。 • 2)候选索引:也是不允许在指定字段或表达式中出现重复值的索引,数据库表和自由表都可以建立候选索引,并且一个表可以建立多个候选索引。 • 3)惟一索引:系统只在索引文件中保留第一次出现的索引关键字值,数据库表和自由表都可以建立惟一索引。 • 4)普通索引:允许索引关键字值重复出现,适合用来进行表中记录的排序和查询,数据库表和自由表都可以建立普通索引。
VF表的基本操作 表的索引 4 Index on <索引表达式> To <单索引文件名>︱tag<索引标志名>[of<复合索引文件名>] [for<条件>][compact][ascending︱descending][unique][additive] • (1)索引表达式的操作数应具有相同的数据类型。 • (2)选择竖线左侧的to <单索引文件名>则产生单索引文 件,否则产生复合索引文件。 • (3)建立复合索引时,系统默认或选用ascending,按索引表达式的升序建立索引,选用descending按降序建立索引,单索引文件只能按升序索引。 • (4)选用unique,对于索引表达式相同的记录,只选第一个记录
VF表的基本操作 表的索引 4 • 例题1:就学生表,显示入学成绩最高的5名学生的记录 • Use student • Index on –入学成绩 to sy • List next 5 • 例题2: • 1)按学号的升序排序,不允许有编号相同的记录 • 2)先按性别排序,性别相同再按入学成绩降序排序 • Use student • Index on 学号 tag sy1 unique • List • Index on 性别+str(1000-入学成绩) tag sy2 • List
VF表的基本操作 表的索引 4 • 1、索引文件的打开: • Use<表文件名> index<索引文件名表> • Set index to [<索引文件名表>][additive] • 2、主控索引 • Set order to [<索引文件顺序号>︱<单索引文件名>] ︱[tag]<索引标志名> [of<复合索引文件名>] • 3、关闭索引文件 • Close index • Set index to
VF表的基本操作 表的索引 4 • 4、删除索引 • Delete file <索引文件名> 删除单索引文件 • Delete tag all︱<索引标志名表> 删除复合索引文件 • 5、更新索引:Reindex [compact] • 6、索引定位查询:Seek<表达式> • 举例:就学生表查询1983年9月7日出生的学生的记录 Use student Index on 出生日期 tag sy4 D={^1983-09-07} Seek D Disp
VF表的基本操作 VFP的命令格式 5 • 1)每条命令必须以命令动词开头,以回车键结束,若一行不能写完,可以用“;”标注,在下一行继续输入该命令。一条VFP的最大长度为8192个字符。 • 2)命令动词与子句、子句与子句、子句内的各部分之间必须用空格隔开。 • 3)命令动词与各子句中的保留字等都可简写为前4个字 符,而且不区分大小写。 • 4)命令格式中以“|”分隔的两项表示两者之中选其一; 用中括号“[ ]”括起来的部分表示可选项; 用尖括号“< >”括起来的部分表示不能省略的内容。 • 5)命令行中所出现的标点符号必须是英文状态的
实验作业 1.p55页:6 2.p55页:7 3.第四章重要例题
课件制作 参考书目: 谢谢 《数据库系统概论》 《数据库系统简明教程》 《数据库技术与应用》 我们见证: 计算机应用已进入菜鸟时代!