第三章数据库和表的操作_第1页
第三章数据库和表的操作_第2页
第三章数据库和表的操作_第3页
第三章数据库和表的操作_第4页
第三章数据库和表的操作_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

第三章数据库和表的操作http://V/vfpVFP课程建设组目录数据库的建立1表的建立2表的基本操作3数据库表的其他属性设置

4排序和索引

5统计操作

6多表操作

7http://V/vfpVFP课程建设组数据库的建立基本概念

数据库的设计数据库的建立

打开数据库数据库的建立http://V/vfpVFP课程建设组基本概念基本概念数据表(Tabel)数据库(DataBaseContainer)数据库表和自由表http://V/vfpVFP课程建设组数据库的设计例3-1

设计学生成绩管理系统的数据库http://V/vfpVFP课程建设组数据库的建立命令格式:CREATEDATABASE[数据库名|?]说明:数据库名指要创建的数据库的名称;?或不带任何参数则显示创建对话框,要求用户输入数据库名。例3-2利用系统菜单建立数据库例3-3用命令方式创建一个名为ABC的数据库http://V/vfpVFP课程建设组打开数据库命令格式:

MODIFYDATABASE[数据库名|?]说明:这种方法实际上是将数据库打开,并启动数据库设计器进行修改设计。例3-4

打开“学生成绩数据库”

例3-5使用用命令方式打开数据库设计器http://V/vfpVFP课程建设组表的建立创建数据库表“字段名”列“类型”列字段宽度“NULL”选项

命令格式:CREATE<表名>

例3-6在学生成绩数据库中建立数据库表“student.dbf”例3-7

用命令方式创建数据库表coursehttp://V/vfpVFP课程建设组表的建立表记录的输入例3-8建立好“student”表结构后立即输入记录http://V/vfpVFP课程建设组表的建立自由表与数据库表例3-9创建一个名为“assign”的自由表例3-11把“assign”数据库表变成自由表例3-10

把“assign”自由表添加到数据库“学生成绩数据库”中http://V/vfpVFP课程建设组表的基本操作表的打开与关闭

表的显示

表记录指针的定位

表记录的追加

表的修改表的基本操作删除记录

表的复制

http://V/vfpVFP课程建设组表的基本操作表的打开方法一:从项目管理器打开方法二:从数据库中打开方法三:文件菜单的“打开”方式方法四:命令方式表的打开与关闭表的关闭方法一:在命令窗口输入“USE”命令,可关闭当前打开的表。方法二:选择“窗口”菜单下的“数据工作期”,在弹出的“数据工作期”窗口选择“关闭”命令。http://V/vfpVFP课程建设组表的打开例3-12从数据库中打开表student.dbf例3-13用菜单方式打开表student.dbfhttp://V/vfpVFP课程建设组表的打开例3-14用命令方式打开表student.dbf命令格式:USE表名[NOUPDATE][EXCLUSIVE|SHARED]说明:其中NOUPDATE指定以只读方式打开,EXCLUSIVE指定以独占方式打开,SHARED指定以共享方式打开表,缺省是以独占方式打开。

http://V/vfpVFP课程建设组表的显示表结构的显示命令格式:LIST|DISPLAYSTRUCTURE[TOPRINTER|TOFILE<文件名>]说明:该命令屏幕上列出指定表的结构,包括记录个数,记录长度及各字段的名称、宽度、类型等。LIST是连续显示,DISPLAY是分屏显示。例3-15在VFP主窗口屏幕上显示表student.dbf的结构http://V/vfpVFP课程建设组表的显示查看表的记录1、用命令方式在VFP主窗口显示记录

命令格式:LIST|DISPLAY[范围][[FIELDS<表达式表>][FOR<条件>][WHILE<条件>][TOPRINT[PROMPT]|TOFILE<文件>][OFF]说明:FIELDS表达式表:指定要显示的字段,各字段间用逗号分开,缺少为全部。表达式表不一定是字段名,可以是字段的组合。FOR条件和WHILE条件:显示满足给定条件的结果。二者的区别见第1章。范围:可以用第1章介绍的ALL、REST、RECORDN、NEXTN四种范围。例3-16

在命令窗口中输入教材相应的命令逐条执行,观察结果。http://V/vfpVFP课程建设组表的显示查看表的记录2、用命令方式在浏览窗口显示记录命令格式:

BROWSE[LAST][FIELDS<字段表>[FOR<条件>][FREEZE<字段名>][LOCK<数值表达式>]说明:可选项FREEZE<字段名>用来定义惟一允许修改的字段,其他的字段只能显示不能修改。LOCATE<数值表达式>选项用来定义水平方向翻动屏幕时,屏幕左边连续不参加滚动的字段数。例3-17在命令窗口中输入教材相应的命令逐条执行,观察结果http://V/vfpVFP课程建设组表的显示查看表的记录3、通过菜单方式在浏览窗口定制要显示的记录

命令格式:

BROWSE[LAST][FIELDS<字段表>[FOR<条件>][FREEZE<字段名>][LOCK<数值表达式>]说明:可选项FREEZE<字段名>用来定义惟一允许修改的字段,其他的字段只能显示不能修改。LOCATE<数值表达式>选项用来定义水平方向翻动屏幕时,屏幕左边连续不参加滚动的字段数。例3-18定制表student.dbf显示总分大于等于580分的学生的记录http://V/vfpVFP课程建设组表的显示查看表的记录4、定制要显示的字段

例3-19定制表student.dbf显示的字段

http://V/vfpVFP课程建设组表记录指针的定位

数据表中每条记录都有一个记录号,对于打开的表,系统会自动产生一个记录指针,用以指示当前指向哪条记录。所谓记录指针的定位,就是根据需要将移动记录指针到某条记录上,然后对其进行操作。一、在“浏览”窗口中移动记录指针二、使用命令移动记录指针1.绝对定位命令格式:[GO[TO]]记录号|BOTTOM|TOP说明:BOTTOM表示末记录,TOP表示首记录,<记录号>是一个数值表达式,按四舍五入取整数,但是必须保证其值为正数且位于有效的记录数范围之内。

例3-20打开一个表后,在命令窗口逐条执行教材命令,观察执行结果。http://V/vfpVFP课程建设组表记录指针的定位

2.相对定位命令格式:SKIP[+|-]n说明:n为数值表达式,四舍五入取整数。若是正数,向记录号增加的方向移动,若是负数,向记录号减少的方向移动。若省略n,则指记录指针向后移一条。例3-21打开表后,在命令窗口逐条执行教材命令,观察执行结果。http://V/vfpVFP课程建设组表记录指针的定位

3.查找定位命令格式:LOCATE[范围]FOR<条件>[WHILE<条件>]说明:搜索满足条件的第一个记录。若找到,记录指针指向该记录;若文件中无此记录,搜索后VisualFoxPro主屏幕的状态栏中将显示“已定位范围未尾”,此时记录指针指向文件结束处。如果没有指定范围,则缺省为ALL,查到记录后,要继续往下查找满足<条件>的记录必须用CONTINUE命令。例3-22在“student”表中查找总分在540分以上的学生http://V/vfpVFP课程建设组表记录的追加

用菜单方式追加记录使用命令添加记录1.使用APPEND命令命令格式:APPEND[BLANK]功能:在当前表的末尾添加一个或多个记录。说明:如果后面跟参数BLANK则在末尾添加一条空记录。如果不选BLANK,则进入全屏幕记录输入窗口。例3-23向“student”表中追加5条记录http://V/vfpVFP课程建设组表记录的追加

使用命令添加记录2.使用INSERT命令命令格式:INSERT[BLANK][BEFORE]功能:用于在表文件的指定位置上插入一个新记录。说明:新记录的插入位置与可选项BEFORE有关。如果不指定BEFORE选项,则在当前记录之后插入一条新记录,反之则将新记录插在当前记录之前;如果不选BLANK选项,则在屏幕上出现编辑窗口等待用户输入新记录,反之则插入一条空记录。

http://V/vfpVFP课程建设组表的修改

例3-24进入表设计器修改表“assign”的结构,要求:在“课程号”和“成绩”之间增加“选课时间”字段,类型为日期型;删除“学分”字段;并修改“课程号”宽度为8。修改表结构修改表记录

1.使用“浏览”窗口修改表记录2.用EDIT或CHANGE命令修改记录命令格式:EDIT|CHANGE[范围][FOR<条件>][WHILE<条件>]http://V/vfpVFP课程建设组表的修改

修改表记录

3.替换命令

命令格式:

REPLACE[范围]<字段1>WITH<表达式1>[,<字段2>WITH<表达式2>…][FOR<条件>][WHILE<条件>]功能:对指定范围内满足条件的各记录,以<表达式1>的值替换<字段名1>的内容,<表达式2>的值替换<字段名2>的内容…(备注型,通用型字段除外)。

http://V/vfpVFP课程建设组表的修改

修改表记录

3.替换命令

例3-26将course表中所有“公共基础课”的学分增加1例3-27将course表中所有类别为“专业选修课”的改为“专业基础课”例3-25将assign表中所有学分增加2http://V/vfpVFP课程建设组删除记录在“浏览”或“编辑”窗口中实现例3-29在“student”表中逻辑删除总分小于540分的学生例3-28在“student”表中先逻辑删除第3、8、12、16、20记录,再恢复第12条记录。http://V/vfpVFP课程建设组删除记录使用命令1.添加删除标记命令命令格式:DELETE[<范围>][FOR<条件>][WHILE<条件>]说明:对数据表中指定范围内满足条件的记录加上删除标记。若无可选项,则是对当前记录操作。2.取消删除标记命令命令格式:RECALL[<范围>][FOR<条件>][WHILE<条件>]说明:取消指定记录上的删除标记,若无可选项,则只对当前记录操作。RECALL是DELETE的逆操作。http://V/vfpVFP课程建设组删除记录使用命令3.物理删除命令命令格式:PACK[MEMO][DBF]说明:该命令可以将数据表中所有具有删除标记的记录正式永久的从表文件是删掉。它要求表必须以独占的方式打开,还同时更新表及索引。如果跟有参数MEMO,则删除备注文件中未使用空间,但不删除做了标记的记录。如带参数DBF,则删除做了标记的记录,但不影响备注文件。4.快速删除命令命令格式:ZAP[IN工作区号|表和别名]说明:该命令可一次删除表中的全部记录,只保留表结构。

例3-30对student表执行教材所示命令,并观察结果。

http://V/vfpVFP课程建设组表的复制1.单独复制表的结构命令格式:COPYSTRUCTURETO<文件名>[FIELDS<字段名表>]功能:仅复制当前表文件的结构,不复制其中的数据。若有可选项FIELDS<字段名表>,则复新表文件的结构只包含其中指明的字段,同时也决定了这些字段在新表文件中的排列次序。2.复制表命令格式:COPYTO<文件名>[<范围>][FIELDS<字段名表>][FOR<条件>][WHILE<条件>][[TYPE]SDF|DELIMITED|XLS][WITH定界符|BLANK]功能:将当前表的数据和结构复制到一个指定表中或生成其他格式的文件。具体说明详见教材。例3-31将student表中的女生复制到新表girl,将student表中的计算机系的学生记录生成一个文本文件new.txt。http://V/vfpVFP课程建设组数据库表的其他属性设置

设置数据库表的字段属性

一、显示方式二、设置字段有效性规则数据库表的其他属性设置

设置表属性

一、记录有效性规则二、设置触发器http://V/vfpVFP课程建设组设置数据库表的字段属性显示方式1.格式2.输入掩码3.标题4.为字段输入注释

例3-32

设置“student”表中字段“备注”的标题为“个人简历”,注释为“输入该学生的个人简历”,学号不允许输入字母,前后不能有空格。http://V/vfpVFP课程建设组设置数据库表的字段属性设置字段有效性规则1.默认值

2.规则3.信息

4.为字段输入注释

例3-33设置“student”表中“学号”的有效性规则是学号是以2008开头的数字。提示信息为“学号不符号要求!”,设置字段“性别”默认值为“男”。http://V/vfpVFP课程建设组设置表的属性记录有效性规则设置触发器例3-34在“course”表中,设置“课程号”字段必须为5位字符,并且学时数不能超过160。(假定该表中没有做任何字段设置)例3-35设置在“student”表中,只能在每月的15日添加记录;只能更新统招生的记录;只能删除数学专业的学生的记录。http://V/vfpVFP课程建设组排序和索引排序

排序是依据表中某个字段的顺序对当前表的记录重新排列,并将重新排列后的结果保存成为一个新的有序表。

命令格式:SORTTO<排序文件名>ON<字段名1>[/A|/D][/C][,<字段名2>[/A|/D][/C]…][<范围>][FOR<条件1>][WHILE<条件2>][FIELDS<字段名表>|FIELDSLIKE<通配符>|FIELDSEXCEPT<通配符>],使用说明详见教材。例3-36对“assign”中的成绩字段降序排列,成绩相同时按学号升序排列。http://V/vfpVFP课程建设组排序和索引索引一、什么是索引一个表可以建立多个索引,索引实际上是一种逻辑排序,并不改变表中记录的物理存储结构,而且,索引文件只是表文件的附属文件,它不能脱离表文件而单独使用。

二、索引的种类1.索引文件类型两类:单索引文件和复合索引文件。2.索引的种类VFP中的索引通常分为四种类型:主索引、候选索引、唯一索引、普通索引。http://V/vfpVFP课程建设组排序和索引索引三、索引的建立1.利用表设计器建立索引例3-37在“student”表中,以“学号”为索引表达式建立主索引,索引名为XH。例3-38对“assign”表,以“学号+课程号”为索引表达式建立主索引,以“学号”为索引表达式建立普通索引,并设定“学号”为主控索引。http://V/vfpVFP课程建设组排序和索引索引三、索引的建立2.用命令建立索引命令格式:INDEXON<索引表达式>TO<单索引文件名>|TAG<索引标识名>[OF<复合索引文件名>][FOR<条件>][COMPACT][ASCENDING|DESCINDING][UNIQUE|CANDIDATE][ADDITIVE]功能:建立索引文件或增加索引标识。使用说明详见教材。

例3-39用命令方式为表student建立一个单索引文件,按“出生日期”索引;再增加一个结构复合索引,索引表达式为“姓名”,索引标识名为“XM”,索引顺序为降序。http://V/vfpVFP课程建设组排序和索引索引四、索引的使用1.利用菜单方式打开索引文件,设定主控索引

例3-40【例3-37】中,已对assign表建立了多个索引,要求显示按“学号+课程”降序排列后的结果。http://V/vfpVFP课程建设组排序和索引索引四、索引的使用2.用命令方式打开索引文件并使用命令格式一:USE表文件INDEX索引文件名表功能:在表文件打开的同时打开索引文件。命令格式二:SETINDEXTO[<索引文件名表>][ADDITIVE]功能:在表文件已打开的情况下,单独打开索引文件,并指定控制索引文件或标识。说明:索引文件名表是用逗号分开的相关索引文件名,可以包含.idx文件和.cdx文件,列表中的第一个索引文件是主控索引文件;若缺省所有选项,则关闭当前表的所有索引文件(结构复合索引文件除外),同时取消主控索引。http://V/vfpVFP课程建设组排序和索引索引四、索引的使用命令格式三:SETORDERTO[<索引序号>|<单索引文件名>|[TAG]<索引标识>[OF<复合索引文件名>][ASCENDING|DESCENDING]]功能:设定主控索引文件或主控索引标识。例3-41

前已为“Student”表建立结构复合索引文件student.cdx,其中有两个索引项“xm”、“xh”,还建立了单索引文件csrq.idx,要求分别使用这些显示表记录。http://V/vfpVFP课程建设组排序和索引索引四、索引的使用3.使用索引查找记录命令格式一:SEEK<表达式>功能:将记录指针定位到“索引关键字值=<表达式>”的第一条记录。命令格式二:find<字符串表达式>功能:将记录指针定位到“索引关键字值=<字符串表达式>”的第一条记录。说明:该命令是为向后提供兼容性,可用seek命令代替,并且该命令只支持索引表达式为字符串类型。例3-42按课程号字段对“assign”表建立索引,然后进行查找。http://V/vfpVFP课程建设组排序和索引索引四、索引的使用4.关闭索引的命令命令格式一:CLOSEINDEXS命令格式二:SETINDEXTO功能:关闭当前工作区内所有打开的索引文件(结构复合索引文件除外)。五、删除索引1.在“表设计器”中删除索引在“表计器”窗口的“索引”选项卡中,选中某个需要删除的索引,单击“删除”按钮,可删除索引。2.用命令删除索引命令格式一:DELETETAGALL|索引标识名表功能:删除全部打开的复合索引文件中的所有索引标识或指定索引。命令格式二:DELETEFILE<索引文件名表>功能:删除单索引文件。http://V/vfpVFP课程建设组统计操作

计数命令格式:COUNT[<范围>][FOR<条件>][WHILE<条件>][TO<内存变量>]功能:计算指定范围内满足条件的记录数,并将结果存于指定的内存变量。说明:[TO<内存变量>]:指定结果存放的内存变量名,若该变量不存在,系统会自动创建。若设置了命令SETDELETEDON,则作了删除标记的记录不被计数。

例3-43

统计“assign”表中成绩超过85分的学生人数http://V/vfpVFP课程建设组统计操作

求和命令格式:SUM[<数值型字段表达式表>][<范围>][FOR<条件>][WHILE<条件>]

[TO<内存变量表>|ARRAY<数组>]功能:在打开的表中,对数值型字段表达式求和。说明:1.[<数值型字段表达式表>]:对指定表达式求和,省略该选项,则对所有数值型字段求和。2.[TO<内存变量表>|ARRAY<数组>]:指定结果存放的内存变量名表或数组名,若该变量或数组不存在,系统会自动创建。若数组存在但太小,系统会自动增加数组大小。

http://V/vfpVFP课程建设组统计操作

求平均值格式:AVERAGE[<数值表达式表>][<范围>][FOR<条件>][WHILE<条件>][TO<内存变量表>|ARRAY<数组>]功能:在打开的表中,对数值表达式求平均值。

例3-44求“assign”表中成绩的总和和平均值http://V/vfpVFP课程建设组统计操作

计算格式:CALCULATE<表达式表>

[<范围>][FOR<条件>][WHILE<条件>]

[TO<内存变量表>|ARRAY<数组>]功能:在打开的表中,对指定表达式进行金融和统计操作。说明:1.有null值的记录不包含在CALCULATE操作中;2.表达式中可以包含下列函数的任意组合:AVG(<数值表达式>):计算平均值;CNT():返回表中记录数;MAX(<表达式>):返回最大值;MIN(<表达式>):返回最小值;SUM(<数值表达式>):求和;NPV(<数值表达式1>,<数值表达式2>,<数值表达式3>):计算净现值;STD(<数值表达式>):计算标准偏差;VAR(<数值表达式>):计算方差。

http://V/vfpVFP课程建设组统计操作

计算汇总格式:TOTALTO<表文件名>ON<关键字段>[FIELDS<数值型字段表>][<范围>][FOR<条件>][WHILE<条件>]功能:在打开的表中,按关键字分类,汇总计算,将结果存入新文件中。说明详见教材例3-45

统计“assign”表中成绩超过85分的学生人数、平均成绩、最高成绩、最低成绩、成绩总和。例3-46统计“assign”表中每个学生的总成绩。http://V/vfpVFP课程建设组多表操作

工作区的概念工作区实质上是指每个打开的表所占用的内存空间。VisualFoxPro提供了32767个工作区,每个工作区只能打开一个表文件,各表在各自的工作区中被操作。同一时刻只能有一个工作区是处于活动的,该工作区被称为“当前工作区”,即最后一个被选中的工作区。一、工作区号和别名VFP中的每个工作区都有一个编号,称为工作区号,编号从1到32767。系统默认编号为1的工作区为当前工作区。别名是给工作区取的除编号以外的名字。VFP为1~10号工作区指定了别名,分别用A~J单个字母来表示。在一个工作区打开数据表时的同时也可以给这个工作区定义一个别名。命令格式:USE<表名>[ALIAS<别名>][IN<工作区号>]

http://V/vfpVFP课程建设组多表操作

二、选择工作区命令命令格式:SELECT<工作区号>|<别名>功能:选择工作区

温馨提示

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

评论

0/150

提交评论