60003 vfp电子课件全第4章数据库及操作_第1页
60003 vfp电子课件全第4章数据库及操作_第2页
60003 vfp电子课件全第4章数据库及操作_第3页
60003 vfp电子课件全第4章数据库及操作_第4页
60003 vfp电子课件全第4章数据库及操作_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章:数据库和数据表操作一、VFP数据库和数据表(20分钟)二、数据表结构的建立、修改和显示(50分钟)三、数据表的基本操作(20分钟)四、索引文件及其应用(30分钟)五、数据表的统计计算(20分钟)六、多数据表操作、管理数据库、数据交换(50分钟)目的要求:掌握程序设计的各种结构重点难点:程序设计的各种结构教学方法:课堂讲授为主,用精讲多练的方法突出重点,用日常生活中的例子启发学生,突出重点,突破难点。教学手段:以口述、粉笔加黑板的手段为主,概念陈述和图形多用多媒体课件教学进程:详见上方给出第一节

Visual

FoxPro数据库及其建立一、基本概念1数据库:通过一组系统文件将相互联系的数据库表及其相关的数据库对象统一组织和管理。表及其它数据库对象2

扩展名(.dbc)二、建立数据库(库都处于打开状态)1在项目管理器中建立数据库2通过“文件”或工具栏中的“新建”对话框建立数据库3使用命令交互建立数据库格式:Create

database

[databasename]注:使用此命令并不显示数据库设计器三、使用数据库1在项目管理器中打开数据库2通过“打开”对话框打开数据库3

使用命令打开数据库(1)open

database

[filename|?][exclusive][shared][noupdate][validate](2)指定数据库Set

database

to

[databasename]通过数据库下拉列表指定当前数据库共享方式只读方式检查引用对象的合法性独占方式四、修改数据库从项目管理器中打开数据库设计器从“打开”对话框中打开数据库设计器使用命令打开数据库设计器Modify

databade

[databasename]五、删除数据库在项目管理器中删除数据库注:不能删除数据库中的表等对象命令方式Delete

database

databasename[deletetables]数据库必须关闭Set

safety

on/off第二节建立数据库表一、在数据库中建立表(一)创建过程及界面(二)基本内容简介1

字段名自由表中字段名最长为10个字符数据库表字段名最长为128个字符字段名必须以字母或汉字开头字段名可以由字母、汉字、数字和下划线组成字段名不能包含空格2

字段类型和宽度字符型(C),254数值型(N),20位,有效数字为16位,包括符号位和小数点,小数位至少比字段宽度小2位,例如高考成绩为(6,2)货币型(Y),8日期型(D),8时间日期型(T),8逻辑型(L),1备注型(M),4通用型(G),4备注型数据的输入:打开输入数据的表,进入表‘编辑’窗口或‘浏览’窗口,将光标移到备注型字段下双击,即

可进入备注字段的编辑窗口,用户可在此窗口输入或修改备注型数据。通用型数据的输入:通用型字段数据多数是用于存储OLE对象。如:图像、声音、电子表格和文字处理文档等输入方法:打开数据的表,进入表‘编辑’或‘浏览’窗口,将光标移到通用型字段下双击,即可进入该

字段的数据编辑窗口。再打开‘编辑’菜单,选择

‘插入对象’,在它的窗口中,选择插入对象类型。双精度,8整型,4字符型(二进制)备注型(二进制)空值(NULL)字段有效性组框显示组框字段注释(三)使用命令创建数据库表Open

database打开数据库Create命令建立表打开表用use命令(四)举例字段名类型长度精度NULL学号C8NOT姓名C6NOT性别T地址M出生日期D高考成绩N62NOT注意:一个表只能注册到唯一的一个数据库中。二、修改表结构(一)打开表设计器在数据库中打开表设计器命令方式打开表设计器•USE<tablename>•Modify

structure(二)修改内容简介修改已有的字段增加新字段删除不用的字段第二节(续)自由表一、数据库与自由表自由表:不属于任何数据库的表。建立自由表的方法在项目管理器中建立。 在确认当前没有打开的数据库时,用菜单可学用工具栏建立。 在确认当前没有打开的数据库时,用命令建立。其格式为:Create<表名>3

数据库表的特点可以使用长表名和长字段名。可以为表中的字段指定标题和添加注释。可以为表的字段指定默认值和输入掩码。表的字段有默认的控件类。规定字段级规则和记录级规则。支持主关键字、参照完整性和表之间的联系。支持insert,update和delete事件的触发器。二、将自由表添加到数据库在项目管理器中操作在数据库设计器中操作3

命令方式Open

database<数据库名>Add

table<表名>三、从数据库中移去表在项目管理器中操作。在数据库设计器中操作命令方式Open

database<数据库名>Remove

table<表名>第三节表的基本操作一、使用浏览器操作表(一)打开浏览器的方法1在项目管理器中打开浏览器2在数据库设计器选择要操作的表,然后从“数据库”菜单中选择“浏览”或者从快捷菜单中选择“浏览”3使用命令•Use<表名>•Browse<表名>(二)记录浏览操作1命令操作

2

菜单操作(三)修改记录(四)删除记录1逻辑删除:只作删除标志,可恢复。2物理删除:从表中彻底删除,不可恢复。二、增加记录的命令(一)append命令1格式1:append2格式2:append

blank(二)、以追加方式输入数据打开要输入数据的表,打开‘显示’菜单,选择‘浏览’,然后在‘显示’菜单中,再选择‘浏览’或‘编辑’,进入‘浏览’或

‘编辑’窗口,再选择‘显示’菜单下的

‘追加方式’向表中输入记录或修改表中的记录。(三)追加其它表中已有的记录选择‘表’菜单中的‘追加记录’命令,进入‘追加来源’对话框,选择类型和源表。按‘确定’按钮,即可完成追加任务。注:主菜单中的‘显示’菜单是动态变化的。(四)insert命令格式:insert [before]

[blank]三、删除记录命令(一)逻辑删除格式:delete

[for<条件>](二)恢复逻辑删除记录格式:recall

[for<条件>](三)物理删除格式:pack(四)彻底删除表中的全部记录格式:zap四、修改记录的命令edit和change命令:界面同append命令,可编辑与修改。replace命令格式:replace[<范围>]<字段名1>with<表达式1>[,<字段名2>with<表达式2>[,…]][for<条件>]注:范围有以下四种情况All:表中的所有记录Next

n:从当前记录开始的n条记录Rest:从当前记录开始到表结束的所有记录当前记录(默认)例1:将学生表中的学号的第3个字母改为Hrepl

all

学号

with subs(学号,1,2)+‘H’+SUBS(学号,4)例2:将学生表中性别为F的学生学号第2、3二个字母改为KKrepl

all

学号

with subs(学号

,1,1)+‘KK’+SUBS(学号

,4) FOR

性别=.f.例3:将学生表中性别为F且出生日期在82年5月1日以前的学生的姓改为李,学号最后一位改为Prepl

all

学号

with

subs(学号

,1,7)+‘P’,姓名

with

“李”+SUBS(姓名

,3) FOR

(性别=.f.

)and出生日期〈{^1982-05-01}五、表中数据与数组数据之间的交换(1)将表中的当前记录复制到数组

P121页例格式1:scatter

[fields<字段名表>]

[memo]to

<数组名>

[blank]格式2:scatter

[fields like

<通配符>|

fields

except<通配符>]

[memo] to

<数组名>[blank]例:职工.dbf中,包括5个字段:职工号(C,4)、姓名(C,6)、性别(C,2)、婚否(L)、简历(M),

当前记录为第一条,把它复制到数组ZG中。解:USE

职工SCATTER

TO

ZG

MEMO?ZG(1),ZG(2),ZG(3),ZG(4),

ZG(5)SCATTER

TO

BB

FIELDS

LIKE

职*

(格式2)(2)将数组中的数据复制到表的当前记录格式1:GATHER

FROM<数组名>[FIELDS<字段名表>][MEMO]格式2:GATHERFROM<数组名>[FIELDSLIKE<通配符>|FIELDS

EXCEPT<通配符>][MEMO]例:在职工.dbf中,追加一条空记录,将数组RR中的内容复制到空记录中。注意数组中各个数组元素的数据类型必须与字段的类型对应一致。解:DIMENSION

RR(1,3)RR(1,1)=“1001”RR(1,2)=“张三”RR(1,3)=“女”APPEND

BLANKGATHER

FROM

RR?职工号,姓名,性别六、显示记录的命令格式:list/display[<范围>][off][fields]<字段表>][for<条件>]注:list与display的区别七、查询定位命令go与goto命令

格式:go

n/top/bottomskip命令格式:skip

<n>注:n可为负数,但必须为整数locate命令(continue)格式:locate

for<条件>记录1-2记录2-1记录3当前记录41记录52…….八、记录或整个数据表及结构的复制1、复制部分记录或整个数据表COPY

TO<文件名>[<范围>][FOR|WHILE<逻辑表达式>] [FIELDS

<字段名表>]2、复制数据表的结构COPY

STRUCTURE

TO<表文件名>[FIELDS<字段名表>]第四节索引及应用一、基本概念(一)索引文件及其类型索引值记录号…….4…….3…….15……..2记录1记录2记录3记录4记录5索引文件

表文件(二)VFP常用的索引主索引(库中一个表的主关键字):在字段或表达式中不允许出现重复值的索引。候选索引:候选索引和主索引具有相同的

特性建立候选索引的字段可看作是候选关

键字,所以一个表可以建立多个候选索引。索引文件单索引文件(.idx)(命令)复合索引文(.cdx)(设计器中或命令)非压缩(默认)压缩(compact)非结构(of<索引文件名>)结构(tag<索引标志>)(全压缩)唯一索引(现一般不用):为保持同早期版本的兼容性而设立的。它的“唯一性”是指索引项目的唯一,而不是字段值的唯一,一个表可建立多个唯一索引,重复的字段值只有一项在索引文件中。普通索引(多用):它不仅允许字段中出现重复值,而且允许索引项中出现重复值。二、用命令建立索引(一)单索引文件格式:index

on<表达式>to<文件名>[compact]注:(1)<表达式>由常量、变量和函数组成,其类型可以是字符型、数值型、日期型或逻辑型。(2)单索引文件只能按索引表达式升序排序。例:学生数据库表中的记录如下记录号学号姓名性别出生日期高考成绩10001王二F81-10-2559020002张三T79-01-1163030003李四T80-02-12639若按姓名建立索引其命令为:Index

on

姓名to

l1则索引文件的内容为:索引表达式的值记录号李四3王二1张三2(二)复合索引格式:index

on<表达式>tag<索引标志>[of<索引文件名>][ascending/descending]注:(1)索引表达式的组成和类型同单索引文件。 非结构复合索引文件的建立必须具有of<索引文件名>子句。默认是按升序排列。例1:关于姓名索引index

on

姓名tag

x1例2:关于高考成绩索引

index

on

高考成绩tag

x2

例3:关于高考成绩+姓名索引index

on

str(高考成绩,6)+姓名

tag

x3例4:关于高考成绩建非结构复合索引index

on

高考成绩

tag

x4

of xxx

(.cdx)三、在表设计器中建立索引(结构复合索引)(一)单项索引在表设计器中的字段选项中建立(二)复合字段索引在表设计器中的索引选项中建立四、使用索引(一)打开索引文件格式:set

index

to<索引文件列表>注:(1)各索引文件可以是单索引、复合索引(2)各索引文件以“,”分开例:打开刚才所建的索引文件Set

indexto

x1,x2,x3(二)设置当前索引格式:set

order

to<索引号>/tag<索引标志>[ascending/descending]例:将x2设置为当前索引文件Set

order

to

x2(三)使用索引快速定位记录格式:seek

<索引表达式值>

order

<索引号>/tag<索引标志>[ascending/descending]例:在关于成绩的索引中查找630seek

630例:在关于姓名的索引中查找张三seek “张三”(四)删除索引格式1:delete

tag

<索引标志>例:删除关于姓名的索引delete

tag

x2格式2:delete

tag

all例:删除一切索引delete

tag

all第五节 排序一、排序与索引的区别排序生成一个新表,记录中相关内容与原表相同,顺序不同。查看排序结果时,必须打开排序的新表。二、排序命令Sort to<排序表名>on<字段名1>[A/D/C][<字段名2>[A/D/C],…][for<条件>][FIELDS<字段名表>]第六节:数据表的统计计算一、累加求和及求平均值格式:Sum|average [<表达式表>]

[范围] [for

<条件>] [to<内存变量>]功能:对当前数据表中指定范围内满足条件的记录进行纵向求和/平均值二、统计记录个数格式:Count

[范围] [for

<条件>]

[to

<内存变量>]功能:统计当前表中指定范围内满足条件的记录个数三、分类汇总格式:Total

on <关键字表达式> to

<新表名>[FIELDS

<字段名表>]

[范围] [for

<条件>]第七节多个表的同时使用一、多工作区的概念(一)几个概念工作区:一个工作区只能打开一个表。工作区编号:1~32767。工作区别名:默认为A~J(前10个工作区),W11~W32767(10个以后的工作区)。(二)指定工作区select

工作区号/别名/0二、使用不同工作区的表(一)使用命令短语在相关命令中带in<工作区号>/<别名>子句。Seek<表达式>in<工作区号>/<别名>(二)直接利用表名及表的别名引用另一个表中的数据<表名或表的别名>.字段名<表名或表的别名>->字段名三、表之间的关联Set

relation

to<索引式>into<工作区号>/别名移动父表记录时,子表相应移动此关系是临时的。Use

学生IN

1

ORDER

学号Use练习学生表IN

2

ORDER学号set

relation

to

学号

into

学生第八节数据完整性一、实体完整性与主关键字 实体完整性:保证记录唯一的特性,即在一个表中不允许有重复的记录主关键字 候选关键字:一个字段的值或几个字段的值能够唯一标识表中的一条记录。二、域完整性与约束规则域完整性:数据的取值范围 约束规则:当用户输入数据超出范围的约束条件三、参照完整性与表之间的联系1参照完整性:表之间的相互联系与制约。例如:学生管理系统。学生成绩的录入。学生被开除。学生取消选修课程时。学生档案选课表学生成绩2

建立表之间的联系父表为主索引子表为普通索引或候选索引3

设置参照完整性约束(首先清理数据库)更新规则:更新父表中的连接字段(主关键字)时如何处理子表中的记录。级联:用新的连接字段值自动修改子表中的相关所有记录。限制:若子表中有相关的记录,则禁止修改父表中的连接字段值。忽略:则不作参照完整性检查。(2)删除规则:当删除父表时,如何处理子表中的相关记录。级联:自动删除子表中的相关记录。限制:若子表中有相关的记录,则禁止禁止删除父表中的记录。忽略:则有作参照完整性检查。(3)插入:当插入子表中的记录时,是否进行参照完整性检查。限制:若父表中没有相匹配的连接字段值则禁止插入子记录。忽略:则不作参照完整性检查。补充:怎样对表实现编程例1:查找库中第一个男同学(假设存在)set

talk

offuse

学生listloca

for

性别(=‘男’)dispuseset

talk

onreturn打开库显示记录查找显示关库返回例2:在学生库中查询姓名为李四的同学,若有则显示。set

talk

offUse

学生loca

for

姓名=‘李四’if

found()dispendifset

talk

onusereturn打开库查找T

找到吗F显示关库返回例3:在学生库中查找学生的总分,如果总分大于300分,则显示相应的学号、姓名、总分。set

talk

offUse

学生input“请输入要查的总分值”to

xloca

for

总分=xif

总分>300?学号,姓名,总分

endifset

talk

onusereturn例4:在职工库中,随机查询职工的工资,若工资小于500元则可提升一级,否则不可升级(假设有)set

talk

offUse

职工accept“请输入某一职工号”toxloca

for

职工号=xif

工资<500?职工号+“工资小于500元,可升一级!”

else?职工号+“工资不小于500元,不可升一级!”

endifset

talk

onusereturn例5:在da库中,查找考生成绩等级,若输入的考号不存在,则输出“无此考生”,否则根据分数值输出相应等级,大于85分为优秀,小于60分为不合格,其它为合格。set

talk

offuse

daaccept“请输入6位的准考证号”toxloca

for

准考证号=xiffound()?准考证号,姓名,“证书级别:”if

分数>=85

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论