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