表与数据库的基本操作.ppt_第1页
表与数据库的基本操作.ppt_第2页
表与数据库的基本操作.ppt_第3页
表与数据库的基本操作.ppt_第4页
表与数据库的基本操作.ppt_第5页
已阅读5页,还剩173页未读 继续免费阅读

下载本文档

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

文档简介

第 4 章,表与数据库的基本操作,本 章 要 点,1、建立数据库与表 (1)基本概念(项目、数据库、数据库表及其之间的关系,自由表与数据库表的异同) (2)数据库的建立与操作 (3)表的建立与基本操作 (4)排序与索引 (5)查询,2、数据完整性 3、数据统计与计算 4、多表的操作,4.1 概述,4.1.1 VFP中表、数据库、项目之间的关系,在VFP中数据库不仅存储表,而且也存储表与表之间的关联、基于表的视图和查询以及有效管理数据库的存储过程。数据库对应磁盘上一个扩展名为.DBC的文件,并且在建立数据库的同时,系统自动生成一个与数据库同名的.DCT数据库备注文件和.DCX的数据库索引文件。作为一个数据库既可以独立管理,也可以和与其相关的表单文件、报表文件、程序文件等组织成为一个项目,由这个项目来统一管理。VFP中的表、数据库、项目之间的关系如下图所示。,1、项目、数据库、数据库表之间的关系,什么是项目? 项目管理器的功能作用?,2、数据库表、自由表之间的关系,自由表,思考题 对于一个自由表,能否添加到多个数据库中?,3、数据库的概念,数据库是表的集合。 数据库文件具有.dbc扩展名,其中可以包含一个或多个表、关系、视图和存储过程等。 注意:.dct,.dcx文件的特点,一个Visual FoxPro表或.dbf文件,能够存在以下两种状态之一: 与数据库相关联的数据库表; 与数据库不关联的自由表。 二者的绝大多数操作相同且可以相互转换。相比之下,数据库表的优点要多一些,具有以下优点:,、数据库表与自由表的异同与特点,表中的长字段名 表中字段的标题和注释 默认值、输入掩码和表中字段格式化 建立字段级规则和记录级规则 支持参照完整性的主关键字索引和表间关系 设置INSERT、UPDATE或DELETE事件的触发器,1)命令格式 VFP命令通常由2部分组成。第1部分是命令动词,指明了该命令的功能。第2部分是跟随在命令动词后面的短语,这些短语通常用来对所要执行的命令进行某些限制性的说明。 一般情况下,命令动词表示了命令的功能,命令短语提供执行命令所需要的各种参数。命令短语本身可分为两类,一类是必选短语,另一类是可选短语。 通常,命令动词后面一般都有几个可选短语,用户根据需要选择不同的短语,使得同一个命令可实现多种任务,从而可以大大地丰富命令的功能。 VFP命令格式为: ,4.1.2 VFP命令格式及使用规则,【例4.1】 USE 和DISPLAY的命令格式。 USE DISPLAY FIELDS FOR|WHILE TO PRINTER PROMPT|TO FILE 第1条命令是打开数据表,命令动词是USE,命令短语可缺省;第2条命令是显示当前表中记录,命令动词是DISPLAY,其余部分为命令短语。,2)命令短语 命令动词规定要执行的操作,而命令短语指出操作的范围、条件、字段、结果输出位置等内容。命令短语又称为子句。常用子句的含义如下表所示。,说明: FOR 的作用是:在规定的范围中,按条件检查全部记录,即从第一条记录开始,满足条件的记录就执行该命令,不满足就跳过该记录,继续搜索下一条记录,直到最后一条记录。若省略则默认为ALL。 WHILE 的作用是:在规定的范围中,只要条件成立,就对当前记录执行该命令,并把记录指针指向下一条记录,一旦遇到使条件不满足的记录,就停止搜索并结束该命令的执行。即遇到第一个不满足条件的记录时,就停止执行该命令,即使后面还有满足条件的记录也不执行。若省略范围则默认为REST。,3)命令及子句的使用规则 VFP的命令有的比较短,而有的则相当长,书写时应遵循如下规则: 任何命令必须以命令动词开头,命令中的各个子句可以按任意次序排列,各个子句以一个或多个空格隔开。 一条命令的最大长度为254个字符,一行写不下时,可以使用“;”续行。 命令动词和子句的动词可以用其前4个字母缩写表示,例如,DISPLAY可写成DISP。但从程序的可读性来考虑,不提倡略写命令动词。 命令中的字符大小写可以混合使用,系统不区分大小写,为了美观可以将命令关键字大写,而其他内容小写。,4.2 数据表的创建及其基本操作,在VFP中,存储数据的表和经常使用的表格基本相似,表中的列代表记录中的字段(Field),字段包含字段名和字段值。所有字段名的集合构成了表的第1行(表头),即数据表的结构(Structure);所有字段值的集合分别构成了表的每一行,即表的记录(Record)。 要创建一个存储数据的新表,首先必须对有关用户的需求进行分析,也就是应清楚表中存储的数据的用途,以便明确如何使用表中的数据、该收集什么样的数据以及如何收集这些数据等。然后根据存储这些数据的要求来设计表的结构。,4.2.1 表结构及字段的基本要素,1)表的结构,2)表中存储数据的数据类型 为了正确存储数据、处理数据和有效利用存储空间,创建表时必须定义字段的数据类型。 对于要存储的数据,有2点必须清楚,一是它们的数据类型(如字符数据,数值数据、日期数据等);二是数据的范围(大小),以及存储这些数据的有效数据空间的最小值和最大值,这是表结构设计的关键。 字段的数据类型决定了:该字段可以存放哪种类型的值。例如,不能在数值型字段存放文本数据。该字段存放数据占用的存储空间大小。例如,货币型数据的值都用8个字节存储。该字段可进行哪些操作。例如,对于备注型和通用型数据不能进行排序和建立索引。 字段的数据类型有13种,见书上表4.3,3)字段的基本要素 (1)字段名 字段名是表中列的名称,是数据库的变量,即字段变量。对表和数据库操作时,可根据字段名引用表中数据。字段的命名应满足以下要求: 字段名由字母、汉字、数字及下划线组成,但必须以字母或汉字开头,中间不能有空格。 数据库表的字段名最长为128个字符(自由表字段名长度不得超过10个字符)。,(2)字段类型和宽度 字段类型决定存储在字段中的值的数据类型,字段宽度决定存储数据的宽度和取值范围。VFP中可使用的字段类型如表4.3中所示,常用的有字符型、数值型、日期型、逻辑型、备注型、通用型等几种。 (3)空值(NULL) 选择是否允许字段为空。字段空值与空字符串、数值0具有不同的含义,是指尚未输入具体数值的数据。如果字段不允许为空,则输入数据时必须输入相应的数据,否则被设置为默认值(例如,数值型被默认为0)。允许字段为空时,可暂时不输入数据,而且不会出错。,(4)显示控制(数据库表所具有的属性) 用来定义字段的显示格式、输入掩码和字段标题。格式为字段在表单、浏览窗口等界面中的显示格式;输入掩码用来限制或控制用户输入的格式,以避免一些错误格式的输入;而标题可以设定字段名显示时的文字内容,默认为字段名。 (5)字段有效性检验(数据库表所具有的属性) 用来定义字段的有效性规则、违反规则的提示信息和字段的默认值。有效性检验可以防止用户输入错误数据。 (6)字段注释(数据库表所具有的属性) 为字段添加注释便于数据库维护。注释只起提示作用,不会对具体操作带来任何影响。,4.2.2 表的创建,在VFP中数据表的建立有2种方法:一种方法是使用表设计器;另一种方法是使用表向导。无论是使用表设计器,还是用表向导,都必须按照以下步骤进行: 创建表结构。 输入记录。 1)创建表结构 表结构的设计可以通过VFP提供的【表设计向导】和【表设计器】来实现,也可以用SQL命令来建立。这里主要介绍用【表设计器】来创建表结构的步骤。,(1)启动表设计器 可以用下述方法启动表设计器: 用菜单方式启动表设计器 VFP启动后,选择【文件】菜单中的【新建】命令,则弹出【新建】对话框。 在该对话框中选择【表】,再单击【新建文件】按钮,弹出【创建】对话框。在【输入表名】文本框中输入新建数据表的表名(例如输入dab),选择保存类型为“表/DBF(.dbf)”,单击【保存】按钮,即启动表设计器对话框。表设计器对话框如下图所示。 ,表设计器对话框:,用Create命令启动表设计器 格式:Create 功能:启动表设计器并创建表。 说明:为指定要创建的表名,包括路径信息。例如,在命令窗口中输入“Create c:dab.dbf”,按回车键就可启动表设计器。创建的表(dab.dbf)将保存在C盘根目录下。,(2)创建表结构 启动表设计器后,通过表设计器能方便地设计出符合自己需要的表结构。 2)输入记录 数据表结构建立好后,就可以向数据表中输入记录了。VFP提供了两种记录输入方式: 立即输入方式。 追加输入方式。,立即输入方式:是指用表设计器建立好表结构后,当出现如图4.4所示的对话框时选择【是】按钮,,即进入如图4.5所示的画面,光标停留在第一个字段上,表示可以开始输入数据。, 追加输入方式:是向已存在的表的末尾追加记录。要向打开的数据表中追加新记录,可以用菜单操作方式或命令操作方式。 用菜单命令追加记录 追加单个记录:选择【表】菜单下的【追加新记录】命令,则只能在表的末尾添加一个空记录,该记录成为当前记录,用户即可输入记录数据。 追加多个记录:选择【显示】菜单下的【追加方式】命令,则在表的末尾添加一个空记录,用户即可输入记录数据;当向该记录输完数据时,其后又出现一空记录,即可进行多条记录的追加。,用APPEND命令来追加记录 格式:APPEND BLANK 功能:在当前表的末尾追加新记录。 说明: 如果无BLANK选项,则进入全屏幕编辑窗口,在该窗口可以输入多条记录。 若有BLANK选项,则直接在数据表末尾增加一条空记录,而不进入全屏幕编辑窗口。,特别指出的是:备注型和通用型字段的内容不能直接输入到表中。备注型字段数据的输入方法是在该记录的备注字段(memo)处双击鼠标,或当光标移到备注字段后按Ctrl+PgDnCtrl+PgUp/Ctrl+Home组合键,系统打开一文本编辑窗口,在该窗口即可输入相应的备注字段的内容。输入结束可单击窗口关闭按钮,或使用Ctrl+W组合键保存内容,系统返回到记录输入界面。这时备注字段将变为Memo(第一个字母为大写),表示该记录的备注字段已有数据。如果按Esc键,则放弃存盘并返回到记录输入界面。,在该记录的备注字段(memo)处双击鼠标; 或当光标移到备注字段后按Ctrl+PgDn Ctrl+PgUp Ctrl+Home组合键; 系统打开一文本编辑窗口,在该窗口即可输入相应的备注字段的内容。 输入结束可单击窗口关闭按钮,或使用Ctrl+W组合键保存内容,系统返回到记录输入界面。这时备注字段将变为Memo(第一个字母为大写),,备注型和通用型字段的输入 备注型字段和通用型字段的内容不能直接输入到表中。 备注型字段数据的输入方法:,通用型字段接受的数据是一个嵌入或链接的OLE对象。其链接方法是先将链接的对象放入剪贴板中,然后用鼠标双击该通用型字段,即进入通用型字段编辑窗口,再选择【编辑】菜单下的【选择性粘贴】选项,即进入“链接”对话框。 嵌入方法的操作同上,只是选择【编辑】菜单下的【插入对象】选项,进入【插入对象】对话框,选择要插入的对象,如下图所示。,通用型字段数据的输入方法,再通过word插入菜单的插入图片操作方法进行: 要清除备注型字段或通用型字段的内容,方法是在该记录的备注型字段或通用型字段处双击鼠标,然后选择【编辑】菜单下的【清除】命令即可。,插入word图片 选择【编辑】菜单下的【插入对象】选项,进入【插入对象】对话框,如图:,4.2.3 表的打开与关闭,在VFP中,使用表时都必须先打开它,操作完成后都要关闭。表的打开实质上就是将存储在外部存储器上的表文件调入内存;表的关闭就是将表文件从内存保存到外部存储器上,同时释放占用的内存和工作区。 1)表的打开 可以通过下述方法来打开表文件: (1)用菜单打开表 选择【文件】菜单中的【打开】命令,弹出【打开】对话框,在【文件类型】列表中选取“表(*.dbf)”项,再选择所要打开的表文件,单击【确定】按钮后就打开选中的表。表文件打开后,就可以对其进行操作,如浏览表中的记录、向表中追加新记录、修改表结构等操作。,(2)用USE命令打开表 格式:USE IN 工作区号 Alias 功能:打开一个表文件。 说明: USE命令的用法相当灵活,这里给出的仅是USE命令的一种基本形式。 一个工作区同时只能打开一个表,所以使用USE命令在一个工作区打开一个表时,该工作区中先前打开的表自动关闭。工作区与别名的概念参看4.7节。,如果表中含有备注型字段,则打开表时,相应的备注文件(FPT)同时打开。 刚建立的表自动处于打开状态,不需再用USE命令打开。 例如,假设在当前目录下有文件名为“dab.dbf”的数据表,在命令窗口中输入如下命令就能将该表打开。 USE dab.dbf &打开表文件时,扩展名可以缺省,2)表的关闭 对数据表的操作完成后,应将表关闭,关闭表有多种命令。 (1)关闭当前工作区打开的表 格式:USE 功能:关闭当前工作区打开的表。 (2)关闭当前打开的所有表 格式1:CLOSE ALL 功能:关闭所有打开的数据库;关闭所有工作区中的表和索引,并选择1号工作区为当前工作区。 格式2:CLEAR ALL 功能:关闭所有工作区中打开的表,选择1号工作区为当前工作区,同时释放所有内存变量。,当数据表建立好后,必要时需要显示(查看)数据表中的内容,显示数据表中的记录可通过下列操作完成。 1)菜单操作 (1)浏览显示 选择【文件】菜单中的【打开】命令,打开要浏览显示的数据表。 选择【显示】菜单中的【浏览】命令。 数据表中的记录显示在浏览窗口上,如下图所示。,4.2.4 表中记录的显示,(2)编辑显示 第一步与浏览显示操作相同;第二步是从【显示】菜单中选择【编辑】菜单命令。此时,屏幕上就以编辑方式显示数据表的内容。编辑显示窗口如下图所示。,浏览和编辑显示数据表中的记录时,属于全屏幕编辑操作,用户可以任意移动光标到需要的记录、字段上,并可直接对记录数据进行修改,也可向表中追加新记录。,格式: LIST|DISPLAY FIELDS FOR|WHILE OFF TO PRINTER PROMPT TO FILE ,2、命令操作 DISPLAY命令和LIST命令用于将当前表中的记录显示到VF的主窗口。,LIST FIELDS FOR DISPLAY FIELDS FOR ,【例4.2】在VFP主窗口中显示学生档案表(dab.dbf)中的全部记录。在命令窗口中输入下列命令序列: USE dab &打开dab.dbf表 LIST USE &关闭dab.dbf表 在主窗口中显示结果如下图所示。,【例4.3】显示学生档案表(dab.dbf)中机械制造4班的所有女学生的记录,且只显示学号、姓名、性别、出生日期和专业班级字段,不显示记录号。 在命令窗口中输入如下命令序列: USE dab DISP ALL FOR 专业班级=“机械制造4班“ AND 性别=“女“ FIELDS 学号,姓名,性别,出生日期,专业班级OFF USE 在主窗口中显示结果如下图所示。,通过对xsmd中的记录按照要求显示,掌握范围子句,条件子句,字段子句的使用,命令使用演示,问题1:显示表中所有王姓同学的基本信息? 问题2:显示表中所有王姓女同学的基本信息? 问题3:显示表中会计专业所有王姓女同学的基本信息?,条件表示方法1 disp all for like(“王“,left(姓名,2) disp all for like(“王“,left(姓名,2) and 性别=“女“ disp all for like(“王“,left(姓名,2) and 性别=“女“ and 专业=“会计学“,条件表示方法2 disp all for left(姓名,2)=“王“and 性别=“女“ disp all for left(姓名,2)=“王“and 性别=“女“ disp all for left(姓名,2)=“王“and 性别=“女“and 专业=“会计学“,显示单名的所有同学 disp all for len(substr(姓名,1)=4-能显示吗?如果不能,什么原因 disp all for len(substr(alltrim(姓名),1)=4 disp all for len(substr(alltrim(姓名),1)=4 and left(姓名,2)=“王“,1、记录指针的概念,4.2.5 记录指针的定位,1)当前记录: 记录指针指向的记录称为当前记录。刚打开的数据表,记录指针总是指向第一条记录(首记录) 2)记录指针的改变: 对数据表的操作将改变记录指针的位置,每一个数据表都有开始和结尾标志,可以用BOF()函数和EOF()函数来测试,根据函数的返回值“.T.”或“.F.”判断记录指针的位置。,一个数据表文件中可能包含成千上万条记录,要对哪一条记录操作,就存在记录定位的问题。在VF中,对任何打开的数据表文件,都提供了一个记录指针,用于完成记录的定位。,2)记录指针的定位(移动) 在建立数据表时,每条记录都有一个编号,称为记录号,记录号依据输入记录的顺序从1开始编号。对记录指针的定位,实际上就是将记录指针移到相应的记录号上。移动记录指针的方法有菜单操作方式和命令操作方式2种。 (1)菜单操作方式 在浏览窗口或编辑窗口显示数据记录时,选择【表】菜单中的【转到记录】命令,出现移动记录指针的下级菜单命令选项,如下图所示,根据这些选项可迅速移动记录指针到需要的记录位置。 命令选项的具体含义如下: 第一个:将记录指针移到第1条记录。 最后一个:将记录指针移到最后一条记录。 下一个:将记录指针移到当前记录的下一条记录。 上一个:将记录指针移到当前记录的上一条记录。 记录号:将记录指针移到指定记录号的记录上。 定位:将记录指针移到符合条件的记录上。当选择此菜单命令时将出现如图4.11所示的对话框。,(2)命令操作方式 记录指针的绝对移动 绝对移动是将记录指针直接定位到指定的记录上。 格式:GOTO |TOP|BOTTOM 功能:将记录指针定位到指定的记录上。 说明: 的值指明记录号,即直接按给定的记录号定位。 选择TOP或BOTTOM则分别将记录指针定位到表文件的首、尾记录上。,【例4.4】 用GO命令移动学生档案表(dab.dbf)中的记录指针。在【命令】窗口输入如下命令序列: USE dab GO 5 &记录指针指向记录号为5的记录 GO TOP &记录指针指向首记录 GO BOTTOM &记录指针指向尾记录 USE,记录指针的相对移动 格式:SKIP 功能:以当前记录为基准向上或向下移动记录指针。 说明:的值指明记录指针移动的相对记录数;若为负数时,则表示记录指针向上移动,否则向下移动。缺省,则记录指针向下移动1条记录。,【例4.5】用SKIP命令移动学生档案表(dab.dbf)中的记录指针。 在命令窗口输入如下命令序列: USE dab GO 5 SKIP 3 &指针从当前记录开始向下移动3条记录 SKIP &指针从当前记录开始向下移动1条记录 SKIP -2 &指针从当前记录向上移动2条记录 USE,按条件定位记录位置 Locate For 与命令联合使用 Continue,use xsmd locate for 姓名=“王芳“ disp conti disp,43 表的编辑与维护,1)表结构的修改 在创建数据表结构时,难免会考虑不周或出错,在使用过程中如果发现某些字段设计不符合要求等问题,就要对表结构进行必要的修改。在VFP中,利用表设计器来修改表结构。具体操作如下: 打开需要修改结构的表文件。 选择【显示】菜单中的【表设计器】命令,弹出【表设计器】对话框。 在【表设计器】对话框中修改表的各字段要素的值(如字段名、数据类型等)。 也可以在【命令】窗口中输入MODIFY STRUCTURE命令来启动表设计器,然后对表结构进行修改。,431 数据表的修改,说明: 对表结构可做的更改包括添加和删除字段;修改字段名称、大小和数据类型;添加、删除或修改索引标识等。 在更改表结构之前,VFP自动备份当前表。当修改完之后,将备份表中包含的数据追加到新修改的表结构中。如果表有一个备注字段,也将创建一个备注备份文件。 表备份文件的扩展名为 .BAK,备注备份文件的扩展名是 .TBK。VFP为原表文件创建一个 .BAK文件,并且为原备注文件(如果存在)创建一个 .TBK备份文件。如果使用 MODIFY STRUCTURE命令时出现问题,可以删除新文件,并把 .BAK文件和 .TBK文件改回原文件扩展名(.DBF和 .FPT)。,2)记录数据的修改 (1)使用菜单命令修改记录 首先打开数据表文件,再选择【显示】菜单中的【浏览】或【编辑】命令,这时当前数据表的记录显示在浏览窗口或编辑窗口中,再将光标移到需要修改的记录字段上进行修改即可,修改完成后使用Ctrl+W存盘。 (2)用BROWSE命令修改记录 该命令有许多控制记录显示的子句,这里仅介绍它的常用命令格式。 格式:BROWSE FIELDS FOR 功能:在浏览窗口显示记录,同时也可以修改记录。,【例4.6】用BROWSE命令对学生档案表(dab.dbf)中的记录进行修改。要求按指定的姓名、性别、专业班级、学号字段顺序显示。 USE dab BROWSE FIELDS 姓名,性别,专业班级,学号 显示结果如下图所示。,【说明】: 1)该命令适合对当前库进行成批地、有规律地修改。 2)缺省范围、条件时,仅替换当前记录 3)ADDITIVE,只对备注型字段修改有效。 选择ADDITIVE :表示添加内容 不选择ADDITIVE :表示替换内 4)表达式的值不能超出字段宽度,否则,数据无效。,(3)替换修改 1)命令方式 【格式】 REPLACE WITH ADDITIVE, WITH ADDITIVE . FOR ,【功能】用指定表达式的值替换当前表中满足条件记录的指定字段的值。,应用事例,int(date()-出生日期)/365),ADDITIVE把对备注字段的替代内容追加到备注字段的后面。ADDITIVE只对替换备注字段有用。如果省略 ADDITIVE,则用表达式的值改写备注字段原有内容。,【例4.7】用REPLACE命令对学生档案表(dab.dbf)进行如下操作:将机械制造4班所有同学的“专业班级”字段的数据清空。 USE dab REPLACE ALL 专业班级 WITH “ FOR 专业班级=“机械制造4班“ LIST,前面介绍的APPEND命令是将记录追加到数据表末尾,如果想在2条记录之间插入记录,只能在命令窗口中用插入记录命令来实现。 格式:INSERT BLANK BEFORE 功能:在当前记录之后或之前插入一条记录。,4.3.2 插入记录,说明: BLANK:表示插入一条空白记录,无此选项时,进入全屏幕编辑状态。 BEFORE:表示在当前记录之前插入,否则在当前记录之后插入。,【例4.8】 在学生档案表(dab.dbf)中,要求在3号与4号记录之间插入1条空白记录。在命令窗口中输入如下命令: USE dab GO 4 INSERT BLANK BEFORE 表示在3号记录之后插入了一条空白记录,其记录号为4,原表中之后记录的记录号均依次增加1。,在VFP中,删除记录是经过2步完成的。第1步是给要删除的记录加上删除标记,称为逻辑删除,做了逻辑删除标记的记录并没有真正从数据表中删除,以后还可以恢复;要真正删除表中的记录,则执行第2步,删除带有删除标记的记录,称为物理删除。 1)记录的逻辑删除 (1)使用菜单命令对记录作逻辑删除标记 首先打开要操作的数据表,用浏览方式或编辑方式显示该数据表中的记录,例如用浏览显示学生档案表(dab.dbf)中的记录;,4.3.3 记录的删除与恢复,再用鼠标单击记录左边的逻辑删除标记块,标记块颜色变成黑色,代表此记录已作了逻辑删除标记,如下图中学号为20050015和20050020的记录已作了逻辑删除。,另外,也可以选择【表】菜单中的【切换删除标记】命令来设置删除标记。,【例4.9】对学生档案表(dab.dbf)中专业班级是“英语3班”的所有学生记录作逻辑删除。操作过程如下: 打开学生档案表。 用浏览或编辑方式显示该数据表。 选择【表】菜单中的【删除记录】命令,弹出【删除】记录对话框,如下图所示。,将【作用范围】选项设定为“All”。 单击【For】选项右边的 按钮,显示【表达式生成器】对话框,如下图所示。,利用图4.15所示的对话框来建立条件表达式。先双击【字段】列表框中“专业班级”字段,选取该字段;再在【逻辑】下拉列表框中选择“=”;然后输入“英语3班”,则在【表达式】列表框中显示建立的条件表达式,再单击【确定】按钮,将在【删除记录】对话框的【For】文本框中显示同样的条件表达式。 确认无误后,单击【删除】按钮,即将所有英语3班的学生记录作了逻辑删除。如下图所示,共有4条记录作了逻辑删除标记。,(2)用命令对记录作逻辑删除 格式:DELETE 范围 FOR|WHILE 功能:对当前数据表中在指定范围内满足条件的记录作逻辑删除。若缺省范围和FOR|WHILE 选项,则只对当前记录作逻辑删除。,【例4.10】 对学生档案表(dab.dbf)中的记录做如下操作: 对姓名为“那措央中”的记录作逻辑删除。命令序列为: USE dab DELE FOR 姓名=“那措央中“ LIST &查看删除效果 USE &关闭表,对学生档案表(dab.dbf)中专业班级是“计算机1班”和“机械制造4班”的所有记录作逻辑删除。命令序列为: USE dab DELE FOR 专业班级=“计算机1班“ OR 专业班级=“机械制造4班“ ALL LIST & 查看删除效果 USE,从图上显示的结果可以看出,作了逻辑删除的记录号后面有一个“*”,即逻辑删除标记。,(3)显示、隐藏逻辑删除记录 【格式】SET DELETED ON | OFF 【功能】将表文件中已逻辑删除的记录隐藏或显示。 说明3点,1)、逻辑删除是在该记录上加一个删除标记,当SET DELETED设置为OFF时,对该表文件的各种操作,对被删除的记录同样有效。 2)、当SET DELETED ON时,对表文件中数据的各种操作,一般均不包括有删除标记的记录 3)、SET DELETED的缺省状态是OFF。,set dele off count to x ? x,set dele on count to y ? y,2)恢复逻辑删除记录 恢复逻辑删除是将被逻辑删除的记录恢复为正常记录。即去掉“*”号。,(1)命令方式 RECALL FOR ,功能: 将当前表文件中指定范围内满足条件的已作删除标记“*”的记录恢复,即去掉这些删除记录的删除标记,使之成为正常记录。,说明: ,FOR、WHILE等各项选项意义同前;如果同时缺省和 子句,则仅仅恢复当前记录 事例演示操作,【例4.11】 恢复学生档案表(dab.dbf)中机械制造4班所有作了逻辑删除的记录。命令序列为: USE dab RECALL ALL FOR 专业班级=“机械制造4班“ LIST USE,3)记录的物理删除 逻辑删除记录只是为记录加上一删除标记,并未真正从数据表中删除该记录。要将这些记录真正从数据表中删除称为物理删除。 (1)使用菜单命令删除作了逻辑删除标记的记录 其具体操作步骤如下: 打开要删除记录的表。 用浏览或编辑方式显示该数据表。 选择【表】菜单中的【彻底删除】命令。,3)物理删除记录 物理删除是将当前表文件中被逻辑删除的记录全部清除。 (1)命令方式 PACK MEMODBF 【功能】将当前表文件中所有带删除标记(*)的记录全部真正地删除掉。 PACK命令将删除数据库文件中作了删除标记的记录,同时压缩相应的备注文件。,说明: MEMO子句:从备注文件中删除未使用空间,但不从表中删除标有删除标记的记录。备注字段的信息保存在一个相关的备注文件内。备注文件的文件名与表相同,扩展名 .FPT。 DBF子句:从表中删除带删除标记的记录,但不影响备注文件。 当使用 PACK命令时,VFP把所有没作删除标记的记录复制到一个临时表(Temporary Table)中。执行完 PACK命令后,VFP把原表从磁盘上删除,同时用原表名命名临时表。,【例4.12】 对学生档案表(dab.dbf)进行如下操作,逻辑删除专业班级是“英语3班”的所有记录,再从表中物理删除这些记录,并查看结果。命令序列如下: USE dab DELETE ALL FOR 专业班级=“英语3班” &逻辑删除 PACK &物理删除表中作了逻辑删除的记录 BROWSE &查看结果 USE,4)清空数据表命令 格式:ZAP 功能:从表中删除所有记录,只保留表的结构。,说明: ZAP命令等价于 DELETE ALL和 PACK联用,但 ZAP速度更快。 如果SET SAFETY为 ON,VFP会提示是否要从当前表中删除记录。 发出ZAP命令,不会引发删除触发器。有关为表创建触发器的详细内容,将在后面介绍。,【例4.13】删除dab.dbf数据表文件中的全部记录。 USE dab ZAP 这时,数据表dab.dbf中全部记录被彻底删除,记录数为0,但该数据表的结构仍存在。,4.3.4 表的复制,1)表结构的复制 格式:COPY STRUCTURE TO FIELDS 功能:将当前数据表的结构复制到指定的数据表文件中,新表的字段数和字段顺序由“FIELDS ”子句决定。,【例4.14】 把学生档案表(dab.dbf)中的学号、姓名、性别、专业班级字段复制成一个新表XSXX.DBF,新表中只包含结构定义,而不包含记录数据。命令序列为:,USE dab COPY STRU TO XSXX FIEL 学号,姓名,性别,专业班级 USE XSXX &打开XSXX表 LIST STRU &显示XSXX表的结构,2)表记录的复制 格式: COPY TO FIELDS FOR 功能:将当前表中在指定范围内满足条件的记录,按指定的字段复制生成一新表文件。,【例4.15】将dab表中专业班级为“计算机1班”的所有学生的记录按学号、姓名、性别、专业班级字段顺序复制到一新数据表文件xsda.DBF中。,USE dab COPY TO xsda FOR 专业班级=“计算机1班“ FIELDS 学号,姓名,性别,专业班级 USE xsda BROW,新表xsda.dbf中的记录数如下图所示。,4.4 数据表的排序、索引与查询,表中数据记录的排列顺序是按记录输入的先后顺序排列的。而在实际应用中往往需要将记录按某些条件重新排序,以提高数据的处理速度。VFP是通过数据表的分类排序或索引排序来实现的。,4.4.1 数据表的分类排序(物理排序),格式: SORT TO ON /A/D/C,/A/D/C ASCENDING|DESCENDING范围FIELDS FOR|WHILE 功能:将当前数据表中指定范围内满足条件的记录,按字段名1、字段名2、关键字段的值的大小重新排列,并将排序结果放到指定的新表文件中。,排序是指根据数据表文件中某个或多个字段(称为关键字段)的值将表中的记录重新排列生成一个新的数据表文件。,说明: 排序的结果放入由“”指定的表中,产生的新表是关闭的。,缺省“范围”和“FOR|WHILE ”时,则对当前表中的所有记录排序。,排序字段可以是字符型、数字型、日期型、逻辑型等字段,不能是备注型和通用型字段。,“A”表示按字段值升序排序,为缺省方式;“D”表示按字段值降序排序;“C”对于字符型字段不区分大小写字母。,“ASCENDINGDESCENDING”决定除用“/A”或“/D”指明了排序方式的字段外的所有字段的排序方式,前者为升序,后者为降序。,【例4.16】对数据表文件dab.dbf中的记录按下列要求排序: 将数据表文件dab.dbf中的记录按“出生日期”升序排列。排序后的文件名为dab_sor1.dbf,命令序列如下:,USE dab SORT TO dab_sor1 ON 出生日期/A USE dab_sor1 &打开生成的新表文件 BROWSE 排序后dab_sor1.dbf表中的记录顺序如下图所示。,将数据表文件dab.dbf中的记录按“专业班级”升序排列,专业班级相同时按“出生日期”降序排列,排序后的文件名为dab_sor2.dbf。命令序列如下:,USE dab SORT TO dab_sor2 ON 专业班级/A,出生日期/D USE dab_sor2 &打开生成的新表文件 BROWSE 排序后dab_sor2.dbf表中的记录顺序如下图所示。,由于排序要产生一个新的数据表文件,且其内容与原数据表完全相同,只是记录的排列顺序改变了,这样将占用较大的磁盘空间。例如:在例4.16中,采用不同的排序方式后产生了两个新数据表文件dab_sor1和dab_sor2,并且当修改了原数据表(dab.dbf)的数据后,排序文件不能自动更新,这样就造成了这3个数据表的数据不一致。因此,在实际应用中,一般较少使用排序命令,而是使用索引来建立记录的排序机制。,4.4.2 数据表索引的概念,1).索引的概念 所谓索引就是按照索引表达式(数据表的某个字段或字段的组合)的值使表中的记录有序排列的一种技术。 一般情况下,标中记录的顺序是由数据输入的前后次序决定的,并用记录号予以标识。除非有记录插入或记录删除,否则表中的记录顺序总是不变的。 索引实际就是一种排序,但是他不改变表中数据的物理顺序,而是另外建立一个数据号列表。索引文件不能单独使用,必须同源数据表文件一起使用。 索引一旦建立后,就产生了一个相应的索引文件。索引文件中只包含两项信息:一是每条记录索引关键字表达式的值,另一项是与其对应的记录号。既在索引文件中只保留索引关键字和记录号信息,并不存在记录的字段数据,因此它不能单独使用,必须同时打开原数据文件,才能使索引文件有效。 在VF中,同一个数据库中的多个表以相同属性字段建立索引后,可根据索引表达式的值建立数据库中多个表间的关联关系。,2)索引的类型 根据索引功能的不同,可将索引分为下列4种类型: 主索引:是一种只能在数据库表中而不能在自由表中建立的索引。在指定的字段或表达式中,主索引的关键字绝对不允许有重复值。主索引主要用来在永久关系中的父表与子表之间建立参照完整性设置。一个表只能创建一个主索引。如果在任何已经包含了重复数据的字段中指定主索引,VFP将产生错误信息。 候选索引:和主索引类似,候选索引的值也不允许在指定的字段或表达式中重复。候选一词是指索引的状态。因为候选索引禁止重复值,因此它们在表中有资格被选做主索引,即主索引的候选,一个表中可以有多个候选索引。,唯一索引:允许索引关键字在表中的记录有重复的值。但在创建的索引文件里不允许包含有索引关键字的重复值,若表有重复的字段值,索引文件只保留该关键字段值前面的第1条记录。 普通索引:除主索引、候选索引、唯一索引之外的索引便是普通索引,普通索引允许索引关键字段有相同值。 对于以上不同功能的索引类型,需特别说明以下两点: 普通索引、唯一索引、候选索引既可以在自由表中建立,也可以在数据库表中建立。主索引则只能在数据库表中建立。 一个自由表或数据库表可同时建立多个普通索引、唯一索引、候选索引,但一个数据库表只能建立一个主索引。,3)索引文件的种类 单索引文件(独立索引文件):该类索引文件中只包含一个索引,索引文件的扩展名为.idx。使用时必须先打开。 非结构复合索引文件:该类索引文件可以包含不同索引标识的多个索引,也可以为一个表建立多个非结构复合索引文件。非结构复合索引文件的文件名由用户指定,扩展名为.cdx。使用时必须打开。 结构复合索引文件:该类索引文件可以包含不同索引标识的多个索引。一个表只有一个结构复合索引文件,其索引文件名与表名同名,扩展名为.cdx。结构复合索引文件随表的打开而打开,随表的修改而更新。在VFP中,主要使用结构复合索引文件。,1)建立单索引文件 格式:INDEX ON TO For ADDITIVE 功能:根据的值建立一个索引文件,其扩展名为.idx。 说明: 只能是字符型、数字型、日期型和逻辑型数据。 可以是表中的一个字段或多个字段组成的表达式,当表达式中各字段的数据类型不同时,必须转换为相同的数据类型,且必须转换成字符型。,4.4.3 索引的建立,FOR选项是只对满足条件的记录建立索引文件。 若选择了ADDITIVE可选项,则执行该命令前不关闭已打开的索引文件;否则,将关闭已打开的索引文件。 单索引文件只能按的值升序排列。,【例4.17】 对dab.dbf数据表按“性别”字段升序建立单索引文件,索引文件名为xbsy。命令序列如下: USE dab INDEX ON 性别 TO xbsy LIST,用LIST命令查看表中的记录顺序如下图所示。可以看出使用索引对于表中记录的物理顺序并没有改变,因为相应记录的记录号并没有因为建立索引而改变,只是输出记录的顺序改变了。,【例4.18】对dab.dbf数据表按“专业班级”升序,专业班级相同时按“出生日期”升序建立单索引文件。索引文件名为 zysy,命令序列如下:,USE dab INDEX ON 专业班级+DTOC(出生日期) TO zysy LIST 该索引顺序如下图所示,2)建立结构复合索引文件 (1)用表设计器建立结构复合索引文件 在表设计器中,只要设置了索引就自动创建了结构复合索引文件。建立结构复合索引文件的方法如下: 打开数据表,然后打开表设计器。选择【字段】选项卡,在需要索引的字段右边对应的【索引】下拉列表中选择升序或降序,建立的索引为单个字段的普通索引。,选择【索引】选项卡,如下图所示,则可建立主索引、候选索引、唯一索引和普通索引4种类型的结构复合索引文件。,说明:上述方法建立的索引为结构复合索引,结构复合索引文件名与表同名,而扩展名为.cdx。,(2)命令方式建立结构复合索引文件 格式: INDEX ON TAG FOR ASCENDING|DESCENDING,说明: 第一次建立索引时,将产生一个与数据表同名而其扩展名为.cdx的结构复合索引文件。结构一词是指:VFP把该文件当作表的固有部分来处理,并在使用表时自动打开。如果结构复合索引文件丢失了,数据表文件就不能打开。 结构复合索引文件一旦建立,将随着数据表文件的打开而同时自动打开,但对记录的操作顺序不影响。 “索引标识名”作为索引的标识,存放在.cdx文件中。一个.cdx文件可以包含多个标识名,但各标识名应不相同。 “ASCENDING|DESCENDING”指定记录的排序方式,前者为升序,后者为降序。,【例4.19】 对学生档案表(dab.dbf)按“性别”升序排列,性别相同时按“专业班级”建立结构复合索引,其标识名为BJ。,USE dab INDEX ON 性别+专业班级 TAG BJ LIST 显示结果如下图所示。,4.4.4 索引的使用,索引的作用和功能是多方面的,其中最主要的一个作用就是利用索引进行索引查询。要实现索引查询,必须满足一定的条件。具体地讲,除表和相应的索引文件必须打开外,还必须确定相应的主控索引文件。若主控索引文件为结构复合索引文件,还必须进一步指定主控索引标识。 一个表可以同时打开多个索引,但任何时刻只能有一个索引起作用。所谓主控索引文件,是指同时打开的多个索引文件中当前正起作用的索引文件。所谓主控索引标识,是指结构复合索引文件所包含的多个索引标识中当前正起作用的索引标识。通常情况下,将主控索引文件或主控索引标识简称为主控索引。,1)打开单索引文件或非结构复合索引文件 单索引文件在使用时必须先打开。通常使用相应的命令打开索引文件。 (1)打开数据表的同时打开索引文件 格式:USE INDEX 功能:在打开指定表的同时打开与其相关的1个或多个索引文件。 说明:INDEX子句用于指定要打开的索引文件(最多7个)。打开多个索引文件时,索引文件之间用逗号分隔,第1个索引文件自动成为主控索引文件。,【例4.20】 假设已为学生档案表(dab.dbf)建立了2个单索引文件xbsy.idx和zysy.idx,打开学生档案表(dab.dbf)的同时打开这2个索引文件。命令为: USE dab INDEX xbsy,zysy & xbsy.idx为主控索引 LIST & 显示结果如下图所示 USE,(2)索引文件的单独打开 如果一个表建立了多个单索引文件,要使用这些索引文件,可以用下列命令打开它们。 格式:SET INDEX TO ADDITIVE 功能:为当前表打开指定的一个或多个索引文件。 说明: 索引文件列表用于指定要打开的一个或多个索引文件(最多7个),索引文件列表中,第一个索引文件将自动成为主控索引文件。 ADDITIVE选项确保以前打开的索引文件仍然保持打开状态。,【例4.21】假设已为学生档案表(dab.dbf)建立了2个索引文件xbsy.idx和zysy.idx,先打开学生档案表(dab.dbf),再打开这2个索引文件。命令为: USE dab SET INDEX TO xbsy,zysy & xbsy.idx为主控索引 LIST & 显示结果如下图所示 USE,2)关闭索引文件 索引文件使用完后应关闭。由于索引文件是依赖于数据表而存在的,所以关闭数据表文件时,索引文件也将关闭。另外,专门关闭索引文件的命令有: SET INDEX TO 功能:关闭当前工作区中打开的索引文件。 CLOSE INDEX 功能:关闭所有工作区中打开的索引文件。 说明: 索引创建时自动处于打开状态,并且自动成为主控索引。 结构复合索引文件随表的打开而自动打开。 表关闭时,与该表相关的所有打开的索引文件也自动关闭。,3)设置主控索引 当打开了多个独立索引文件或结构复合索引文件中包含多个索引标识时,需要指定当前起作用的索引。 格式:SET ORDER TO | TAG 功能:指定相应的索引为主控索引。,【例4.22】 对学生档案表(dab.dbf)分别以字段“专业班级”,“出生日期”,“性别”建立3个结构复合索引标识,并分别使用,命令序列为: CLOSE ALL & 关闭所有文件 USE dab INDEX ON 专业班级 TAG BJ INDEX ON 出生日期 TAG RQ INDEX ON 性别 TAG XB

温馨提示

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

评论

0/150

提交评论