




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2015.9 日常生活工作中,我们每天都要接触大量的信息,比如学生成绩、人事档案、工资表、货物清单等。那么,它们都可以表示为数据的形式,这么多的数据,单靠纸、笔、算盘进行统计几乎是不可能的,计算机的出现解决了这个复杂的问题,它将大批量的数据信息存储在大容量磁盘上,并方便地进行管理。那么,这些数据是怎样存储的,怎样被访问、修改和删除呢?这就用到了数据库技术。数据库技术将各种各样的数据分门别类地存储起来,用户可以很容易地查看、管理、操作这些数据。 数据不仅仅是文本,多媒体数据库的发展可以让数据是图片、声音、视频等内容。 a. 数据的共享性 b. 数据的独立性 c. 数据的完整性 d. 数据的集中性
2、数据模型系名系名 系号系号 系主任系主任专业号专业名专业号专业名教师号教师号 姓名姓名 职称职称学号学号 姓名姓名 性别性别 年龄年龄课程号课程号 课程名课程名 学分学分课程课程学生学生选修选修系部系部 关系模型中每个关系对应一张二维表,它由一些行和列组成。关系模型中,实体和实体之间的联系都使用关系(二维表)来表示的。关系模型结构单一、操作方便,容易被用户接收,且有坚实的数学理论基础,因而得到了广泛的应用,成为目前最流行的一种数据模型。当前的一些数据库,从Oracle到SQL Server,以及Access和VFP,都毫无例外地采用了关系模型。1、字符型(C) 由字母(汉字)、数字、空格等任意
3、字符串组成。每个字符占1字节,汉字占2字节。长度0-254。2、货币型(Y) 存储与货币有关的数据,如工资、价格等。3、日期型(D) 保存不带时间的日期,存储格式为“yyyymmdd”。字段宽度8字节。4、日期时间型(T) 包括年、月、日、时、分、秒。 5、逻辑型 用于存储只有两个值的数据,存入的值只有(.T.)和(.F.)两种状态,占一个字节。如婚否,及格否等。6、数值型用来存储由数字、小数点和正负号组成的,可以进行计算的数据,如成绩、重量、体积、订货数量等。7、双精度型(B) 存储高精度的试验数据。8、浮点型(F)9、整型 存放由数字和正负号构成的整数型数据。其字段宽度为4字节。使用整型比
4、使用其它类型节省空间,运算速度也快。10、备注型(M) 占用10个字节的空间,单独存在于一个备注文件中,备注文件扩展名为.DBT。1、常量 值不变的数据项。 数值型常量:5、2.345、-100。 字符型常量:“XUV”、“欢迎!”、Hello。 逻辑型常量:.T. 和 .F. 。 日期型常量和日期时间型常量:2008-11-11、2009-1-12 11:11am 。2、变量 可以变化,有名字的数据。 命名规则:变量名只能由组成。以字母或下划线,长度为1128个字符。不能使用VFP的保留字。每个汉字占2字符。 “A_XX” 、“_UU” 、“运算结果”。 “7abc” 、“IF”、 “ELS
5、E” 、“A2”、“2” 、“8开始” 。1、算术运算符2、字符串运算符3、日期时间运算符4、关系运算符5、逻辑运算符 2+3 1+4 .AND. .NOT. 68运算符名称示例加减乘除乘方X*3, X100求余250%50=0表达式的书写规则: 每个符号占格,所有符号都必须排在同一横线上,不能出现上标或下标。 例如:102写为102或10*2、3xy写为3*x*y、2x+5(y+z)写为2*(x+5*(y+z)、r2写为pi*r2。练习:将下式写为VFP算术表达式。运算符名称说明连接将字符型数据进行连接空格移位连接两字符串连接时,前一数据尾部的空格移到后面数据的尾部。字符串表达式: “ab1
6、23”+”88xy” 结果为:“ab12388xy”。 “欢迎光临”“谢谢惠顾!”结果为:“欢迎光临谢谢惠顾!”。 “abc “+” 123 “+” xyz “结果为:”abc 123 xyz “。 “ABC “+”DEF”结果为:”ABCDEF ”。日期之间只能进行加减运算,有下面3种情况: (1) 日期相减,得到相差的天数。 (2) 日期加数值,得到新的日期。 (3) 日期减数值,得到以前某个日期。例如:2008/11/11 2008/11/1 结果为数值10。2008/11/11 + 5 结果为日期型数据: 2008/11/16。2008/11/11 - 3 结果为日期型数据: 2008
7、/11/8。运算符运算符名称名称示例示例110 值为:值为: .T.=3=、#、!=不等于不等于72+5 值为:值为:.F. $包含于包含于“ABC”$”ABCDE”值为:值为: .T.=等同于等同于 说明:关系运算符两边的表达式只能是数值型、字符串型、日期型,不能是逻辑型的表达式或值 。 字符型数据按其ASCII码值进行比较,ASCII码大的字符所在的串值大。(ASCII码用0-127的数字表示字母和一些符号,其中(的ASCII码) “=”表示精确匹配。例如,使用条件UPPER(NAME)=“SMITH”进行查找时,可以找到SMITHSON、SMITHERS、SMITH等串,而如果用“=”,
8、将得到SMITH的串。.NOT. 非 .AND. 与.OR. 或逻辑运算真值表:ab.NOT. aa .AND. ba .OR. b.T.T.F.T.T.T.F.F.F.T.F.T.T.F.T.F.F.T.F.F.运算符的优先顺序:优先级降低算数运算符的优先级为( ) 或* *和/ % +和- 。关系运算符: 、 1+4 .AND. .NOT. 65 .AND. .NOT. 682) 关系运算:.F. .AND. .NOT. .T.3) 非运算: .F. .AND. .F.4) 结果; .F.例:根据所给条件,写出例:根据所给条件,写出VFP逻辑表达式。逻辑表达式。(1) 一元二次方程ax2+
9、bx+c=0有实根的条件是: a0,并且b2-4ac0。结果为:a0 .AND. B2-4*a*c=0。 MAX(表达式1,表达式2,) 求各表达式中的最大值。 MIN( ) 求各表达式中最小值。 MOD(表达式1,表达式2) 求表达式1除以表达式2的余数。 ?BETWEEN(15,10,30) &结果显示结果显示 .T. score=80 ?IIF(score=90,”优优”,”合格合格”) &显示:合格。显示:合格。 LEN(表达式表达式) 求字符串表达式长度。求字符串表达式长度。 SUBSTR(表达式表达式 ,n,m ) 从字符串表达式中提取从从字符串表达式中提取从n开始
10、的开始的m个字符的字符串,若省略个字符的字符串,若省略m,则取,则取n开始的所有字符串。开始的所有字符串。 SUBSTR(“11/30/03”,7,2)=“03 LOWER(表达式) 将字符串表达式中的大写字母转化为小写字母,其余不变。 UPPER(表达式) 与上相反。 DATE( ) 取系统当前日期。 TIME( ) 取系统当前时间。 DATETIME( ) YEAR(日期表达式) 取日期表达式的年份值,返回整数。 MONTH(日期表达式) 取日期表达式的月份值,返回整数。 DAY(日期表达式) 取日期表达式的月份值,返回整数。 STR(数值表达式) 转换数值表达式为数字字符串。 CTOD(
11、表达式) 将字符串转化为日期型。 DTOC(表达式) 将日期型表达式转化为字符串。 86年出生的表达式: SUBSTR(DTOC(出生时间出生时间),7,2)=86 等价于:等价于: YEAR(出生时间出生时间)=1986 出生时间必须为日期型。出生时间必须为日期型。1、求3的10次方。2、求199除以5得的余数。3、 1995 + 年+ 8 + 月+ 日 结果为什么?4、 闻鸡 起舞 + 枕戈 待旦 5、 闻鸡 起舞 枕戈 待旦6、2008/11/11 - 3 结果为?7、3#9 结果为 ?(或、!=)8、菊$采菊东篱下 结果为?9、陶潜=陶 精确匹配,结果为?10、(18).AND.(28
12、).OR.(24) 12、求 a$bca .AND. (3!=5 .OR. .F.) 的值。13、ALLTRIM( 123 ) =?14、STR(表达式) 的作用?15、CTOD(表达式) 的作用?16、DTOC(表达式) 的作用?17、YEAR(CTOD(01/01/08) 的值为什么?18、MONTH(CTOD(11/01/86) 的值为什么?19、DATE()、TIME()、DATETIME() 的值为什么?VFP命令由命令动词(关键字)+短语。CREATE 数据库文件名。USE SHARED EXCLUSIVE NOUPDATE 以共享方式打开,以独占方式打开,以只读方式打开。以共享方
13、式打开,以独占方式打开,以只读方式打开。VFP中有些中有些命令要求以命令要求以独占独占的方式打开才能执行,如的方式打开才能执行,如ALTER TABLE 、INDEX、INSERT、MODIFY STRUCTURE 、PACK等。等。对记录进行操作的命令:命令动词命令动词 FIELDS FOR OFF ( 表示可选,表示必选。)LIST | DISPLAY STRUCTURE &多出来的一个字节是存放删除标记多出来的一个字节是存放删除标记用的。用的。BROWSE &打开表的浏览窗口打开表的浏览窗口。LIST (列出当前表中所有记录项)。命令:LIST &默认范围为ALL
14、LIST NEXT 3 &只对包含当前记录在内的n 个记录进行操作。LIST RECORD 5 &只对第5条记录进行操作。Go 6 &跳转到第6条记录。LISTREST &从当前记录一直到文件尾。记录范围一般有种选择:ALL: 对数据表文件的全部记录进行操作,省略时,默认为ALL。NEXT n: 对包含当前记录在内的以下n个记录操作。RECORD n : 只对第n个记录操作。REST :从当前位置开始到文件尾。默认的数据表记录范围:默认的数据表记录范围:DELETENEXT 1 (当前记录)ALLDISPLAYRECALLREPLACE其它命令ALLDELETE
15、 & 删除当前记录行。(不带FOR语句)DISPLAY & 显示当前记录。RECALL & 取消当前记录的删除标记DELETE FOR 性别 &(删除所有性别为男的学生,仅打上删除标记,非物理删除)。DISPLAY FOR 入学成绩=480 & 显示入学成绩大于480的所有记录。Go 2RECALL ALL & 取消当前表中所有记录的删除标记。后面可以跟字段名和表达式。LIST FIELDS 姓名,性别,出生时间,入学成绩 & 后跟字段名LIST FIELDS “姓名”+姓名,”性别”,性别FOR子句:LIST FOR 性别 .AND.
16、入学成绩=480LIST FIELDS 姓名,入学成绩 FOR 性别 .AND. 入学成绩=480LIST FIELDS “姓名”+姓名,”性别”,性别 FOR .NOT. 性别LIST ALL FIELDS 学号,入学成绩 FOR 入学成绩=460 .AND. 性别DISPLAY FOR 出生时间CTOD(“03/16/86”) FOR的作用是:在规定的中,按检查全部记录。即从第1条记录开始,满足条件的就执行该命令,不满足条件就跳过去继续搜索,直到最后一条记录。若省略,则默认为ALL。命令书写规则:命令书写规则:1)每条命令必须以一个命令动词开头。2).T. .F. 两个逻辑值中的小数点与字
17、母间不能有空格。3)一个命令行的最大长度是254个字符,空格数也包括在内。4)如果一个命令太长,一行写不下,可以使用续行符“”。5)不区分大小写。6)命令动词和子句中的短语可以用其前4个字符缩写表示。如DISPLAY STRUCTURE 可简写为DISP STRU。7)不要用A到I之间的单个字母作为表名,因为它们已被保留作数据库工作区的名称。8)不要用VFP的保留字作文件名、字段名、变量名等。9)一行只能写一条命令,每条命令的结束标志是回车键。10)数据库文件后缀为数据库文件后缀为.DBC、表文件名后缀为、表文件名后缀为.DBF、备注文件、备注文件.FPT。数据表的基本概念数据表的基本概念 数
18、据表: 一些有组织数据的集合,由行、列组成的二维表格。简称表(Table)。一个数据库包含一个或多个二维表,表表示现实世界的关系或实体,各个数据表之间可能存在某种关系。 字段:数据表中的每一列称为一个字段,它对应表格中的数据项,每个数据项的名称称为字段名(属性),如“年龄”、“性别”、“学号”、“入学时间”等都是字段名。 记录:表中每一数据行成为一条记录,每条记录由许多字段组成,如“2006001、赵小霞、女、1987年6月12日、490、计算机、程家吉”。St.dbf数据表数据表启动启动VFP建立数据表建立数据表 可以在VFP中建立两种表:数据表和自由表。数据表是数据库的一部分,自由表可以独
19、立存在于任何数据库之外。数据库文件后缀为.DBC、表文件名后缀为.DBF、备注文件.FPT。 1) 利用“表设计器”创建新表。 2) 追加记录。 3) 使用命令创建新表 CREATE TABLE ( () ,() 字符型(C) 由字母(汉字)、数字、空格等任意字符串组成。每个字符占1字节,汉字占2字节。长度0-254。货币型(Y) 存储与货币有关的数据,如工资、价格等。日期型(D) 保存不带时间的日期,存储格式为“yyyymmdd”。字段宽度 字节。日期时间型(T) 包括年、月、日、时、分、秒。 逻辑型 用于存储只有两个值的数据,存入的值只有(.T.)和(.F.)两种状态,占 个字节。如婚否,
20、及格否等。数值型 用来存储由数字、小数点和正负号组成的,可以进行计算的数据,如成绩、重量、体积、订货数量等。整型 存放由数字和正负号构成的整数型数据。其字段宽度为4字节。使用整型比使用其它类型节省空间,运算速度也快。备注型(M) 占用10个字节的空间,单独存在于一个备注文件中,备注文件扩展名为.DBT。CREATE TABLE St_1(学号 c(7), 姓名 C(6), 性别 L(1), 出生时间 d(8),入学成绩 n(6,1), 所在系 c(10), 系负责人 c(8) )2、打开表命令 USE St3、关闭表命令 USE4、添加记录命令 APPEND浏览数据表 USE St (如果当前
21、表不在如果当前表不在默认路径默认路径下下,一定要加路径一定要加路径) BROWSE USE “d:vfpst.dbf” 显示数据还可以使用LIST和DISPLAY命令。命令格式如下: LIST或DISPLAY FIELDS FOR OFF (DISPLAY若没有FOR语句,则只显示当前行。若不指定FIELDS,则输出所有字段。加上OFF,则显示系统加上的记录号,反之,不显示。)显示所有数据: LIST 或 DISPLAY ALL。显示当前记录: DISPLAY不带记录号现实当前记录: DISP OFF显示男同学的姓名和出生时间: DISPLAY 姓名,出生时间 FOR 性别 或 LIST 姓名
22、,出生时间 FOR 性别显示入学成绩在480分以上的女生的学号、姓名、性别、入学成绩。 LIST OFF “学号:”+学号,姓名,性别,入学成绩 FOR .not. 性别 .and. 入学成绩=480显示女同学的姓名和年龄: DISP 姓名,year(date()-year(出生时间) FOR 性别:EDIT与CHANGE命令等价。例如: 修改当前记录 EDIT 修改第n条记录 EDIT n 修改包括当前记录在内的n条记录:EDIT NEXT n列出列出8月份出生的女同学的姓名和出生时间月份出生的女同学的姓名和出生时间?列出年龄大于等于列出年龄大于等于20岁的学生纪录岁的学生纪录,要求不显示记
23、录号要求不显示记录号? 记录指针的移动: 绝对定位: GO TOP、GO BOTTOM、GO 。 相对定位: SKIP 。 n0 下移、n0 上移、无n向下移动一条记录,n包含小数,则四舍五入取整。 条件定位:LOCATE FOR条件范围 按顺序搜索表,直到找到满足制定条件的第一个记录,若无满足条件的记录,指针停在指定范围的最后一条记录。(所谓的“范围”包括ALL、NEXT n、RECORD n、REST)若要继续查找满足条件的记录,用CONTINUE(必须在LOCATE之后出现)。定位到第1条记录: GO TOP。定位到最后一条记录:GO BOTTOM。下一个: SKIP。上一个: SKIP
24、-1。定位到第n条记录: GO n 。当前记录的记录号可用函数 返回。当前表中记录的总个数可用 函数返回。指向文件头的函数和指向文件尾的函数。 由于大多数的操作都是针对表记录的,那么就引入了一个概念:当前记录。刚打开一个表时,指针指向表的第一条记录。第一条记录前还有一个位置称为文件头,在最后一条记录的后面有一个位置称为文件尾。记录指针记录指针文件头文件头12n文件尾文件尾第第1条记录条记录第第2条记录条记录第第n条记录条记录 指针指向文件头时:函数指针指向文件头时:函数BOF( )的值为的值为 .T. 。当指针指向文件尾。当指针指向文件尾时,文件尾函数时,文件尾函数EOF( )值为真。如果打开
25、的是一个空表,则两函数同值为真。如果打开的是一个空表,则两函数同时为时为 .T. 。USE st?BOF(),EOF(),RECNO() &结果为 .F. .F. 1SKIP?BOF(),EOF(),RECNO() &结果为 .F. .F. 2GO TOP?BOF(),EOF(),RECNO() &结果为 .F. .F. 1SKIP-1?BOF(),EOF(),RECNO() &结果为 .T. .F. 1GO BOTTOMSKIP?BOF(),EOF(),RECNO() &结果为 .F. .T. 12 1、在“浏览”模式下修改记录 2、在“编辑”模式下修
26、改记录 EDIT 3、使用批替换命令 例:给女同学的“入学成绩”加10分,将某数据表的总分字段设置为“语文”和“数学”的成绩和。 命令如下: REPLACE ALL 入学成绩 WITH 入学成绩+10 FOR 性别 REPLACE ALL 入学成绩 WITH 语文+数学将计算机系学生的成绩加将计算机系学生的成绩加10分分?将计算机系学生的系负责人改为将计算机系学生的系负责人改为”丁老师丁老师”? 批替换命令REPLACE可对字段内容成批自动地进行修改(替换),而不必在编辑状态下逐条修改。语法格式如下: REPLACE WITH , WITH FOR 说明: 选项只能是ALL、NEXT、RECO
27、RD、REST4种。 若不选择、FOR 子句,默认为当前记录。 REPLACE 命令不重新定位记录指针,因此在执行该命令时,必须先把记录指针定位到要修改的那个记录,如果没有FOR条件限制,只更改当前行。 如果要用REPLACE命令填充一个新记录的数据,那么这个记录应先用APPEND BLANK或INSERT BLANK命令生成一个空记录,再填入数据。例如: APPEND BLANK REPLACE 学号 WITH “2006200”,姓名 WITH “丁一”,性别WITH .T.,出生时间 WITH CTOD(“07/19/87”),入学成绩 WITH 505,所在系 WITH “计算机”,系
28、负责人 WITH “程家吉”将第将第2条记录的名字改为条记录的名字改为“朱勤朱勤”。例例:新表的创建和数据的添加:新表的创建和数据的添加:create table ScoreTable(学号 c(8), 课程号 c(3), 成绩 n(6,1)append blankreplace 学号 with 2002001, 课程号 with 003,成绩 with 99append blankreplace 学号 with 2002200, 课程号 with 001,成绩 with 80.5append blankreplace 学号 with 2002020, 课程号 with 002,成绩 with
29、 89list1、在“浏览”或“编辑”模式下删除记录 标记删除属于逻辑删除,不等同于物理删除,要想真正删除记录(物理删除),应选择“表”菜单”彻底删除”。2、删除满足条件的记录3、删除的命令 DELETE FOR &该命令属于逻辑删除,删除后记录仍能够被修改、复制、显示等,只是前面多了删除标记“*”。 例:将所有记录加上删除标记。 DELETE ALL 例:删除所有入学成绩小于等于470的学生记录。 DELETE ALL FOR 入学成绩=470 例:删除所有中文系的女生记录。(VFP 中,逻辑运算符两侧的点号可以省略。) DELETE ALL FOR st.所在系=“中文” .and
30、. .not. 性别 RECALL FOR RECALL是DELETE的逆操作,作用是取消标记,恢复成正常记录。删除出生时间在删除出生时间在1986年及以前的学生信息?年及以前的学生信息? 删除中文系的所有学生?删除中文系的所有学生? 物理删除所有男同学的信息?物理删除所有男同学的信息? 将数据表中所有具有删除标记的记录正式从表中删除。 PACK 为物理删除命令,一旦执行,无法恢复。 ZAP 命令等价于DELETE ALL 与 PACK连用,但速度更快,一旦执行,无法恢复。 例如:彻底删除表中所有记录。 DELETE ALL PACK7.2.6 修改数据表结构修改数据表结构 使用下面命令打开表
31、设计器: MODIFY STRUCTURE 或 MODI STRU 。 通常我们输入的数据是无序的,当数据量很大,表中有成千上万条记录时,如果不按照某种顺序排列,寻找数据必须从头到尾搜索整个数据表,这样效率就大大降低了。为了解决这个问题,可以让记录按照某种顺序(如数字大小或字符顺序)来排列,在数据库中该方法称为索引 。有了索引,用户可以快速查到所需的数据。 索引就是根据某字段值,创建一个有序的索引文件,并不实际调整数据表中每个记录的位置,因而记录在数据表中的位置不变,而索引文件中的项是有序的。索引相当于基本表的目录,如同有一本书,它前面设有目录,目录包括摘要内容和对应页码,索引则相应地含有和。
32、基于学号的索引基本表(无序)索引包括两项内容:索引包括两项内容:无序表无序表和和有序表有序表的查询时间区别很大。的查询时间区别很大。 在没有索引的表上进行数据查询,显然,是对无序表的查询,需要花费相当多的时间,从第一行记录开始一行一行地进行查询,这种方法显然效率很低。那么,如果是对于一个有序表,在查询它的某一行记录时,就可采用查询速度快的快速查找方法。 这样,对于数据含量非常大的表,就必须提取一列或若干列,建立有序索引,才能大大加快数据的查询速度。1nx折半查找法有序树 主索引、候选索引、唯一索引、普通索引。 主索引强调“不允许出现重复值”,一个表只能有一个主索引。 候选索引也要求字段的唯一性
33、,可建立多个候选索引。 普通索引允许字段中出现重复值,可建立多个普通索引。 独立索引后缀为 .IDX,复合索引后缀为 .CDX。 表设计器建立 命令建立 在VFP中,有时需要临时建立一些普通索引或唯一索引,可以用命令来建立,语法如下: INDEX ON TO FOR 注意:组合索引(多列)要将非字符串类型的数据转化为字符串数据,然后按照主关键字在前,次关键字在后的次序用“+”号连接在一起。 例如:要按语文、数学的顺序对记录建立组合索引,则各关键字转化为字符后用“+”连接。索引表达式为:STR(语文,5,1)+STR(数学,5,1) 如果用多个数值型字段建立一个索引表达式,索引则按照表达式的值进
34、行排序。STR(语文,5,1)+STR(数学,5,1)与 语文+数学这两个索引含义不同,前者建立有主次关系的组合索引,后者按照两个数值和的值进行排序。 若选用FOR子句,则只有符合条件的记录才被索引。这样,既缩短了索引建立时间,又提高了FIND或SEEK命令的检索速度。索引默认按升序排列,执行创建命令后,索引就被打开,其记录指针指向逻辑首记录(GO TOP处)。 几个创建普通索引的命令: INDEX ON 学号 TO xh LIST INDEX ON -入学成绩 TO cj LIST INDEX ON 姓名 TO xm LIST 筛选年龄在19岁以上的记录:(条件为YEAR(DATE( )-Y
35、EAR(出生时间)19)。 INDEX ON 学号 to xh for year(date()-year(出生时间)=22 LIST 使用普通索引、候选索引或主索引,可以进行记录排序,以便提高显示、查询或打印的速度。 例:在已经建立的索引文件的基础上,查找姓名为“李才”和学号为“2006011”的记录。 SET ORDER TO xm FIND 李才 DISP SET ORDER TO xh FIND 2006011 DISP FIND 2006001 DISP 注意:使用SET ORDER命令,可以改变表单中记录的顺序。格式为:SET ORDER TO (索引名为已存在的索引)。FIND字符
36、查找命令,查找关键字与所给字符串相匹配的第一个记录。若找到,指针指向该记录,否则指向文件尾。 FIND | : 例:以性别为关键字建立索引,并查找第一个男生记录和第一个女生记录. INDEX ON 性别 TO xb SET ORDER TO xb LIST SEEK .T. DISP SEEK .F. DISP SEEK 命令查找关键字与所给字符串相匹配的第一个记录。若找到,指针指向该记录,否则指向文件尾,给出信息“没找到”。语法格式为: SEEK 删除所有索引: 删除索引:DELETE TAG 索引名。说明:只能找出符合条件的第一条记录,该命令可以查找字符、数值、日期和逻辑型索引关键字。若为
37、字符串,则必须用界限符号括起来(,“”,)。 若是找到了符合条件的首记录,则函数FOUND( )的值为 .T. ,否则为 .F. 。例:在数据表中依次查找86年出生的学生记录。 USE ST LIST LOCATE FOR SUBSTR(DTOC(出生时间),7,2)=“86” DISP CONTINUE DISP CONTINUE DISP将记录指针定位在第一条中文系学生纪录上?将记录指针定位在第一条中文系学生纪录上?将记录指针定位在第一条成绩大于将记录指针定位在第一条成绩大于500分的学生分的学生纪录上?纪录上? LOCATE命令是在不建立索引的条件下,查找当前数据表中满足条件的。语法格式
38、为: LOCATE FOR 建立数据表后,常常要对数据表中数值型字段的记录进行统计。 例:分别统计女生人数和入学成绩480分的学生记录。 USE st LIST COUNT FOR .NOT. 性别 TO n COUNT FOR 入学成绩=480 TO x ? n,x统计函数使用COUNT命令,格式为: COUNT FOR TO 例:求女生入学成绩之和。 SUM 入学成绩 FOR .NOT. 性别 TO nu 例:求86年出生的学生的平均入学成绩,以及中文系男学生的平均入学成绩。 AVERAGE 入学成绩 FOR SUBSTR(DTOC(出生时间),7,2)=“86” TO pjcj AVER
39、AGE 入学成绩 FOR SUBSTR(DTOC(出生时间),7,2)=“86” 另外一种写法: AVERAGE 入学成绩入学成绩 FOR YEAR(出生时间出生时间)=1986 LIST YEAR(出生时间出生时间) &返回返回4位数整数。位数整数。 LIST FOR YEAR(出生时间出生时间)=1987 AVERAGE FOR 所在系“中文”TO pjszx ? “86年出生的学生的平均入学成绩为:”+str(pjcj) ? “中文系学生的平均入学成绩为:” +str(pjszx) AVERAGE命令格式为: AVERAGE FOR TO 补充内容补充内容: 如果是数字,可直接在
40、前面加“-”号。如果是字符串,则格式如下: INDEX ON 出生时间出生时间 TAG sj DESC CALCULATE SUM(入学成绩入学成绩),MAX(入学成绩入学成绩),MIN(入学成入学成绩绩),AVG(入学成绩入学成绩) CALCULATE MAX(入学成绩入学成绩) TO maxcj 命令如下:COPY TO FIELDS FOR COPY TO FIELDS 姓名,补助,出生日期 FOR 专业=计算机对计算机专业的学生按年龄的降序排列,生产新表对计算机专业的学生按年龄的降序排列,生产新表table1.dbf,且只包含姓且只包含姓名、性别、出生时间名、性别、出生时间3字段?字段?将将1986年出生的同学按分数升序排列,并生成新表年出生的同学按
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论