数据库软件学习.pptx
8.1 数据库的基本概念数据库间史信息数据和数据处理数据库和数据库系统数据库管理系统数据库模型关系与三种关系运算第1页/共132页数据库简史 1969年诞生了世界上的第一个商品化的数据库系统美国IBM公司的IMS系统。1984年David Maier写出了关于数据库理论,标志着数据库在理论上的成熟。在我国数据库技术起步较晚。从20世纪70年代后期才开始引进数据库系统但发展十分迅速,特别是关系数据库管理系统在我国最为流行,如 FoxBASE、FoxPro 及Visual FoxPro就是典型代表。8.1.2 信息、数据和数据处理 数据是数据库系统研究和处理的对象。但数据和信息是分不开的,它们既有联系又有区别,因此应先搞清楚数据和信息在概念上的区别。1.信息泛指通过各种方式传播的、可被感受的声音、文字、图象、符号等所表征的某一特定事物的消息、情报或知识。换句话说,信息是对客观事物的反映,是为某一特定目的而提供的决策依据。第2页/共132页 2.数据是指表达信息的某种符号,是信息的一种量化表示。数据反映信息,而信息依据数据来表达。表达信息的符号可以是数字、字母、文字、图形及其组合等。3.数据处理泛指对原始数据进行收集、整理、存储、分类、排序、检索、维护、加工统计和传输等一系列活动的总称。在电子数据处理中,数据的管理技术是重要的组成部分,它的发展经历了以下三个阶段。.人工管理阶段(20世纪50年代中期以前).文件系统阶段(20世纪50年代后期到60年代中期).数据库系统阶段(20世纪60年代末至今)8.1.3 数据库和数据库系统 1.数据库(DB,Database)数据库是以一定组织方式存储在一起的、能为多个用户所共享的、与应用程序彼此独立的相互关联的数据的集合。2.数据库系统(DBS,Database System)我们把引进了数据库技术的计算机系统称为数据库系统。第3页/共132页8.1.4 数据库管理系统 数据库管理系统是一个在数据库系统中起核心作用的大型软件。它由许多程序、子程序组成,对数据库的一切管理、使用和控制操作都是通过它来进行的。一个数据库系统的优点和水平主要通过它来体现。数据库管理系统的功能主要表现在数据定义、数据操作、控制和管理及数据字典四个方面。8.1.5 数据模型 目前经常采用的数据模型有关系模型、网状模型和层次模型三种。从当前状况及发展趋势来看,关系模型将占主导地位。层次模型是用树状结构来表示数据之间联系的模型。网状模型是用网络图结构来表示数据之间联系的模型。关系模型是用二维表格来表示数据之间联系的模型。采用上述三种数据模型,可分别构成层次数据库、网状数据库和关系数据库。与此相应地形成了三种数据库系统。在实际中,应用广泛的是关系数据库系统。第4页/共132页8.1.6 关系与三种关系运算1.关系 一个由若干行和若干列组成的规范化的二维表称为关系。例如表8.1就是一个关系,但并不是说任何一个二维表都是一个关系。我们说这个二维表是一个关系,是因为它有以下几个特征:1)表中每一列都是不可再分的。2)表中每一列的所有数据都属于同一种类型。3)表中各列都指定了一个不同的名字。4)表中没有数据完全相同的行。5)表中行之间顺序位置的调换和列之间位置的调换不影响它们所表示的信息内容。只有具有上述特征的二维表,才称为一个关系。这种二维表,称为规范化的二维表。表8.1所示关系的结构可以表示如下:教师情况表(编号,姓名,性别,婚否,出生日期,职称,工资,简历)。第5页/共132页2.三种关系运算 (1)选择(或称为筛选)从一个关系中,选出满足指定条件记录的操作称为选择。它是从行的角度对关系进行运算。例如,在教师情况表中,找出性别是女的所有记录,就可以使用这种运算。(2)投影 从一个关系中,选出若干指定列的操作称为投影。它是从列的角度对关系进行运算。例如,在教师工资表中有八列,如果只选择姓名、性别和工资三列,组成一个新的关系,就可以使用投影运算。(3)连接 把两个关系中的记录,按一定条件,连接成一个新关系记录的操作称为连接。例如,我们把教师情况表和教师工资表,按照姓名属性值相同的条件,将有关记录连接起来(去掉重复字段和简历字段),构成一个命名为教师明细表的新关系(如表8.3所示),就可以使用连接运算。第6页/共132页8.2 VFP的基本知识VFP的主要特点VFP文件的类型VFP的安装、启动和退出第7页/共132页8.2.1 VFP的主要特点 1.强大的查询与管理功能,2.引入了数据库表的新概念,3.扩大了对SQL语言的支持,4.大量使用可视化的界面操作工具,5.支持面向对象的程序设计,6.通过OLE实现应用集成,7.支持网络应用。8.2.2 VFP文件的类型 下面给出VFP常用文件的扩展名及其类型名称:.PJX 项目文件,.PJT 项目备注文件,.DBF 表文件,.FPT 表备注文件,.DBC 数据库文件,.DCT 数据库备注文件,.IDX 单索引文件,.CDX 复合索引文件,.PRG 程序文件,.FXP 编译过的程序文件,.QPR 查询文件,.QPX 编译后的查询文件,.SCX 表单文件,.SCT 表单备注文件,.MNX 菜单文件,.MNT 菜单备注文件,.MPR 菜单程序文件,.FRX 报表格式文件,.FRT 报表格式文件的备注文件,.LBX 标签格式文件,.LBT 标签格式文件的备注文件,.MEM 内存变量文件,.VUE 视图文件,.TXT 文本文件等等。第8页/共132页的安装、启动和退出 1.VFP的安装(略)2.VFP的启动 启动VFP与启动其他Windows应用程序一样有多种方法,最常用的两种方法如下:1)单击“开始”按钮,指向开始菜单中的“程序”,指向程序级联菜单中的Microsoft Visual FoxPro 6.0,单击相应级联菜单中带狐狸头图标的Microsoft Visual FoxPro 6.0。2)在Windows的桌面上建立MicroSoft Visual FoxPro的快捷方式,双击该快捷方式的图标。3.VFP的退出常用以下三种方法退出VFP,返回Windows环境:1)单击VFP窗口右上角的关闭按钮。2)在命令窗口键入QUIT命令后按回车。3)执行VFP窗口文件菜单中的“退出”命令。第9页/共132页8.3 VFP的用户界面及工作方式8.3.1 VFP的用户界面8.3.2 VFP的一些约定8.3.3 VFP的工作方式VFP的辅助设计工具第10页/共132页8.3.1 VFP的用户界面图形用户界面,同其他Windows应用程序的界面风格基本相同第11页/共132页8.3.2 VFP的一些约定 VFP有一些关于键盘、鼠标、窗口等使用的一些约定。在这些约定中,有许多是与Windows一致的,少数是VFP自己的。1.鼠标器的基本操作 在VFP环境下,鼠标器的操作与Windows一致,都有指向、单击、双击及拖动四种基本操作。2键盘的基本操作 在VFP环境下,键盘基本操作与Windows一致。其中包括有些键盘操作方式和击键组合的规定。如用Alt+F组合键可打开“文件”菜单等。3窗口基本操作 VFP的窗口基本操作,主要包括窗口的打开、关闭、移动、改变大小、极大化、极小化、复原、切换、激活及滚动条的使用等。这些具体操作也与Windows的窗口一致。4.对话框的使用 VFP环境下的对话框和Windows及其他Windows应用程序对话框的使用方法相同。第12页/共132页 5.编辑器的基本操作 VFP的编辑器是一种屏幕编辑器,所以,在Windows环境下的屏幕编辑基本操作,在VFP的编辑操作中均有效。例如,用Del键删除光标右侧一个字符,用退格(Backspace)键删除光标左侧一个字符,拖动鼠标可标记文件等。6获取帮助 帮助窗口常用以下三种方法打开它:1)执行帮助下拉菜单中的“Microsoft Visual FoxPro 帮助主题”命令。2)在VFP环境下,按F1键。3)在命令窗口键入HELP并按回车。帮助窗口和Windows的帮助窗口相类似,并且使用方法也基本相同。8.3.3 VFP的工作方式 1.交互操作方式 该方式包括单命令方式和界面操作方式。其中单命令方式,是指用户在命令窗口中输入一条命令并按回车键。第13页/共132页 交互操作方式虽然简单、方便,但速度较慢。而程序执行方式可克服速度慢的缺点。2.程序执行方式 按VFP系统的约定,编写特定的命令序列,并将他们存储为程序文件。当用户需要时,通过特定的命令自动执行程序文件,这种工作方式称为程序执行方式。的辅助设计工具 VFP提供了向导、设计器和生成器等辅助设计工具,使用它们可以简化操作、提高工作效率。(生成器本章不要求)1.向导 向导是一种,通过交互对话,完成操作的VFP应用程序。例如,创建表、表单、设置报表和建立查询。我们只要在相应向导的一系列屏幕显示中,回答问题或选择选项,便可以让向导,建立一个文件。2.设计器 设计器,比向导的功能强。在实际应用中,可先用向导,创建一个较为简单的表等的框架,然后用相应的设计器进行修改。第14页/共132页8.4 VFP 自由表的基本操作表的建立表数据记录的输入表的显示与浏览命令操作方式简介更改表的结构表记录的增、删、改记录数据的替换表结构与记录复制表的排序与索引第15页/共132页 8.4 VFP 自由表的基本操作 VFP将表分为自由表和数据库表两种。自由表即不包含在数据库中的表,可以单独使用。8.4.1 表的建立 表由结构和数据两部分组成。建立一个表,首先要设计表的结构,然后再输入数据。1.设计表的结构 设计表的结构就是把表中各字段的字段名、类型、宽度及小数位数确定下来。字段名只能是以字母或汉字开头的字母、汉字、数字及下划线列,不允许含有空格,其长度不超过10个字符位置(一个汉字占两个字符位置)。例如,编号、出生日期、XM、备注等。字段类型、字段宽度及小数位数用于描述字段值。常见类型为数值型(N)的宽度20,字符型(C)的宽度254,日期型(D)的宽度默认是8,逻辑型(L)的宽度默认是1,备注型(M)和通用型(G)的宽度均默认是4。例如:教师情况表的结构可设计为JSJK(编号C(3),姓名C(6),性别C(2),婚否L(1),出生日期D(8),职称C(8),工资N(7,2),简历M(4)。第16页/共132页 2.建立表的结构 执行(单击)文件菜单中的“新建”命令,显示如图8.3 所示的新建对话框。在新建对话框中选择“表”单选钮并单击“新建文件”按钮,显示如图8.4所示的创建对话框。在创建对话框中,选择表将要保存的盘符及文件夹(例如,D:VFP),并输入表名“JSJK”,选定保存类型为“表/DBF”,单击“保存”按钮,显示如图8.5所示的表设计器对话框。在表设计器对话框中,确认已选择“字段”选项卡,输入表结构的各字段定义内容。在操作过程中,若按了回车键、Ctrl+W键或单击对话框的“确定”按钮后,屏幕上显示如图8.6所示的确认输入对话框,这说明表JSJK.DBF结构定义已经结束,下面将要处理该表的数据记录输入。8.4.2 表数据记录的输入 在图8.6的对话框中,如果单击“是”按钮,则显示如图8.7所示的记录编辑窗口,用户可以向JSJK.DBF输入记录数据了。第17页/共132页 如果单击“否”按钮,则返回命令窗口,暂不输入数据(当返回命令窗口后,若又想输入数据时,可在命令窗口中直接键入APPEND命令并按回车或执行显示菜单的“浏览”命令后再执行显示菜单中的“追加方式”)。1.表数据记录的输入 在记录编辑窗口,表的数据是以记录为输入单位。窗口内各字段的排列次序以及字段名右侧显示的光带宽度都与已定义的表结构相符。对各字段输入的数据类型要与定义的类型一致,否则系统拒绝接收。其中日期型字段的两个间隔符号已在相应的位置标出。备注型与通用型字段中分别显示memo和gen,表明这两个字段将用另外的方法来输入数据。当表数据记录输入结束时,可按Ctrl+W键或双击窗口的控制菜单图标,则关闭记录编辑窗口,数据自动存盘,返回命令窗口。若按Esc或Ctrl+Q键,则放弃本次数据的输入而关闭编辑窗口返回。2.备注型与通用型字段的数据编辑窗口 将光标移到memo或gen位置;用鼠标双击或按Ctrl+PgDn、第18页/共132页Ctrl+PgUp、Ctrl+Home等键中的一个,均可打开并显示专用编辑窗口;用户可输入或编辑有关的数据。当数据处理结束时,按Ctrl+W存储并关闭该窗口。并把值自动存储到与表同名而扩展名为.FPT的备注文件中。在备注型或通用型字段数据输入后,该字段的 memo或gen变成Memo或Gen。3.备注型字段数据的输入 备注型字段存储文本数据。在备注型数据编辑窗口中,可以依次输入或修改当前记录的备注数据。4.通用型字段数据的输入 通用型字段存储多媒体数据。这类数据不能由VFP本身建立,可以由Word、Excel及画笔等Windows应用程序提供。首先切换到Windows应用程序环境下,生成多媒体数据并把该数据送入剪贴板(例如,把画笔程序生成的某一图形送入剪贴板);再切换到VFP环境下的当前表记录的通用字段编辑窗口,执行VFP的编辑菜单中的粘贴命令,把剪贴板上的数据(例如,画笔程序生成的图形)嵌入到窗口的光标位置。第19页/共132页 5.表的关闭 通常采用以下关闭方法关闭当前表:1)在命令窗口中键入USE后按回车。2)单击窗口下拉菜单中的“数据工作期”,弹出数据工作期窗口,单击“关闭”按钮。3)执行文件菜单中的“退出”命令或在命令窗口键入QUIT命令,按回车均可退出VFP来关闭表。8.4.3 表的显示与浏览 要显示和浏览表的有关内容。为此需要先打开表。1.打开表 1)执行文件菜单的“打开”命令,显示如图8.8所示的打开对话框 2)在该对话框中,可以在“文件名”的文本框中直接输入将要打开的表所在的盘符路径及表文件名(如,D:VFPJSJK)。3)单击“确定”按钮,则打开所需的表(如,JSJK.DBF)。2.显示和浏览 刚打开的表,其内容虽不出现在屏幕上,但它的打开已经有效,表名出现在窗口状态栏中,可以用显示菜单中的“浏览”命令显示其内容。第20页/共132页 8.4.4 VFP的命令操作方式简介 下面介绍有关的VFP命令和命令子句、常量、变量、表达式和函数的初步知识。1.VFP命令格式范围FIELDSFOR 其中,放在“”中的命令动词是必选项外、放在“”中的其他子句,均是可依据需要,而确定取舍的选择项。命令动词:一般是英文单词,决定了所要做的操作。范围:指出该命令对表中哪些记录起作用,有以下4种选择:ALL 表示对表中的所有记录进行处理NEXT n 表示对表中从当前记录开始的n个记录进行处理RECORD n 表示只对表中第n个记录进行处理REST 表示对表中从当前记录开始直到表尾的所有记录进行处理 字段名表:是一组用逗号隔开的字段名 FOR:是一个条件子句,表示对相应范围内,所有满足条件的记录,进行该语句所指定的操作处理。下面给出VFP命令的书写规则:第21页/共132页 1)命令动词必须是一条命令的第一项,命令行中,各子句的顺序可以任意排列。2)命令动词与子句、子句与子句、子句中各部分之间必须用一个或多个空格隔开。3)命令动词、各子句中的保留字及将要介绍的函数名,都可以简写为前4个字符,而且对其中出现的英文字母,大小写等效。4)一行只能写一条命令。当一行写不下时,可在适当位置输入续行符“;”,并按回车键换行,继续输入。例如,SET DEFAULT TO D:VFP&设置默认文件夹为D:VFP USE JSJK&打开D:VFP下的表JSJK.DBF LIST 姓名,性别,简历 FOR 工资1200&显示当前表中,工资大于1200记录中的姓名、性别及简历3个字段值。说明:以后本章所有例子中的操作,均在当前目录D:VFP下进行 2.常量、变量、函数、表达式和数组 1)常量 在进行数据处理过程中,不变化的数据称为常量。常量有字符型、数值型、逻辑型、日期型、日期时间型及货币型六种。第22页/共132页 字符型常量(简称C型)字符型常量是用单撇号、双撇号或方括号3种定界符括起来的字符序列。例如,刘云风、ABcd、010等。数值型常量(简称N型)数值型常量可用自然记数法或科学记数法表示。例如,168、-25、3.1415、0.168E3(数学意义为0.168103)等。逻辑型常量(简称L型)逻辑型常量只有“真”、“假”两个值,用.T.、.t.、.Y.、.y.表示“真”,用.F.、.f.、.N.、.n.表示“假”。日期型常量(简称D型)日期型常量的默认格式为:yyyy-mm-dd或yyyy/mm/dd,例如,2002-07-15表示2002年7月15日。日期时间型(简称T型)货币型常量以符号“$”开头,小数部分若超过4位,则四舍五入取4位。例如,$123、$168.55、$888.3456等。2)变量在进行数据处理过程中可发生变化的量称为变量。变量有字段变量和内存变量两类。第23页/共132页 字段变量 二维表中的每一个字段都是一个字段变量,它依附于表。字段变量一经定义,它的类型和宽度就不能随意改变。例如,在表JSJK.DBF中,编号、姓名、出生日期、工资、简历等。内存变量 内存变量与表无关。VFP内存变量分为系统内存变量(简称系统变量)和用户定义的内存变量(简称内存变量)。系统变量是由系统自身提供的以下划线开头的内存变量。例如_CLIPTEXT可用于存取剪贴板的内容。这类变量不能被删除。内存变量是用户定义的,用于保存数据处理过程中的有用信息。有C、N、L、D、T、Y与S(屏幕型不做要求)7种类型。内存变量的命名规则是:以字母或汉字开头,长度不超过128个字符的字母、数字、汉字及下划线列。例如:X1=“Hello”&定义内存量X1其初值为Hello”STORE 8 TO X2,X3,X4&定义内存变量X2、X3、X4其值均为8DISPLAY MEMORY LIKE X?&显示以X开头第2个字符任意的所有内存变量名称、类型、值及其属性。(可用LIST代替DISPLAY)第24页/共132页 RELEASE X1,X2&删除内存变量X1及X2 RELEASE EXCEPT X*&删除X开头以外的所有内存变量 3)运算符 按照运算的性质与运算结果的类型,运算划分为如下四类:算术运算符:+(加)、-(减)、*(乘)、/(除)、*或(乘方)、%(取模即取余数)。优先级(运算顺序)是:先乘方,再乘除与取模,后加减;同一级别的运算,要从左向右;有圆括号时,圆括号优先;若圆括号嵌套,则按先内后外的次序处理。字符运算符:+(完全连接运算符。将两个或多个字符串,按顺序连接成一个新的字符串)及-(不完全连接运算符。连接两个字符串时,若该运算符前边的字符串尾部有空格,则先把空格移到该运算符后边的字符串尾部,再将两个字符串连接)。关系运算符:(大于),=(等于),=(大于等于),或#或!=(不等于),=(字符全同比较),$(字符串包含运算符)。优先级均相同,有圆括号时,圆括号内优先。第25页/共132页 逻辑运算符:OR(逻辑或),AND(逻辑与),NOT或!(逻辑非)。优先级为:先逻辑非,再逻辑与,后逻辑或。若使用圆括号,则括号内的运算优先。4)表达式 表达式是由常量、变量、函数用运算符与圆括号连接起来的用于描述数据之间运算关系的一种形式。特别地,单个常量、变量与函数,也是表达式。表达式 表达式值 表达式类型(2+5)*23 56 数值型(122-42)/5 16 数值型“abc ”+“123”“abc 123”字符型“abc ”-“123”“abc123 ”字符型2002/07/15-11 2002/07/04 日期型2002/07/15-2002/07/03 12 日期型“abcd”=“ab”.T.关系型“abcd”=“ab”.F.关系型男4*5 AND 13+25“abf”OR“男”“女”.F.逻辑型NOT“ac”$“abc”.T.逻辑型“abcd”=“ab”AND“xy”=“xy”.T.逻辑型$24+$42-$11 55.0000 货币型在构成表达式时,应注意以下几点:在表达式中使用的变量,必须是已定义的内存变量或当前表文件中的字段变量。各种运算,一般只能在同类型的数据之间进行,但也有例外。如日期型。当同一个表达式中,出现多种类型的运算时,它们的优先级从高到低为:算术运算,字符运算,关系(即比较)运算,逻辑运算。不仅在同一表达式内有优先级,而且在各种表达式之间也有优先级。表达式的优先级从高到低的顺序是:数值型、字符型、日期型和货币型、关系型、逻辑型。第27页/共132页 5)函数 VFP可提供280多个函数。除少数函数外,函数的一般格式为:函数名(),表示自变量经过由函数名隐含指定的一种具体的处理运算后得到一个函数值(又称返回值或结果)。下面先介绍在命令窗口,可以显示函数值的一种输出命令。然后再介绍少数几个常用函数:输出命令 格式1:?功能:可从当前光标所在行的下一行开始位置,依次显示各表达式的值。格式2:?功能:可从当前光标所在行的位置开始,依次显示各表达式的值。例如:?ab12+345,3+5&显示结果为:ab12345 8 几个常用函数 数值计算函数 (a)取整函数格式举例:?INT(6.8),INT(-4.5+0.8)&结果为:6 -3 (b)四舍五入函数举例:第28页/共132页?ROUN(2.718,2),ROUN(2.718,0),ROUN(162.5,-1)&结果为:2.72 3 160 (c)平方根函数举例:?SQRT(4),SQRT(5+4)&结果为:2.00 3.00 (d)余数函数举例:?MOD(7,2),MOD(10+4,3)&结果为:1 2 (e)最大值函数举例:?MAX(18,68),MAX(-45,-3.14,-66)&结果为:68 -3.14 字符处理函数 (a)字符串定位函数举例:?AT(“代表”,“人民代表”),AT(”ab“,”a12b“)&结果为:5 0 (b)大小写字母的转换函数举例:?LOWER(Abc),UPPER(”Def)&结果为:abc DEF (c)空格函数与压缩空格函数举例:?“姓”+SPACE(4)+“名”&结果为:姓 名?ALLTRIM(SPACE(4)+”姓名”+SPACE(2)&结果为:姓名第29页/共132页(d)字符串截取函数举例:?SUBS(abcde,1,3),SUBS(abcdef,3)&结果:abc cdef(e)字符转换成ASCII码函数举例:?ASC(“date”),ASC(“ABCD”)&结果:100 65 类型转换函数(a)数值变字符串函数举例:?STR(238.46,5,6),STR(2384.6,3,1)&结果为:238.6 *(b)日期与字符串转换函数举例:?CTOD(“07/10/02”)&结果为:07/10/02?DTOC(2001/07/22,1)&结果为:20010722?DTOC(2001/09/15)&结果为:09/15/01(c)ASCII码转换成字符的函数举例:?CHR(65),CHR(90+7)&结果为:A a(d)字符串转换为数值的函数举例:?VAL(“12.56”),VAL(“B123”)&结果为:12.56 0.00 测试函数 (a)表记录指针测试函数举例:第30页/共132页USE JSJK&打开表JSJK.DBF,记录指针指向第一条记录?RECNO(),BOF(),EOF()&结果为:1 .F.F.(b)数据类型测试函数举例:?TYPE(“25”),TYPE(“1998/07/15”)&结果为:N D(c)查找结果测试函数格式:FOUND(工作区号)功能:在指定工作区(见8.6节)中,用命令SEEK、FIND、LOCATE 查找记录时,若找到,则返回.T.,否则,返回.F.。(d)测试文件存在函数格式:FILE(“文件名”)功能:若由文件名指定的文件存在,则返回.T.,否则返回.F.。日期时间函数?DATE(),YEAR(2002/08/15)&结果为:07/17/02 2002更改表的结构 通常修改表结构的操作如下:打开待修改的表,例如,JSJK.DBF。执行显示菜单中的“设计器”命令,弹出设计器”对话框。在“设计器”对话框中,用户可同建立表结构时的操作一样,修改当前表的结构。第31页/共132页 修改表结构时,把表中的数据以文件的形式进行备份,完成修改后,再将表中原有数据复制到新结构的相应位置上。以.BAK为扩展名而文件主名同原表名的备份文件保留在磁盘上。若原表有备注字段,则备注(.FPT)文件的备份文件扩展名是.TBK。8.4.6 表记录的增、删、改 1.增加新记录 1)在表尾追加记录USE JSJK&打开表JSJK,也可执行文件菜单中的“打开”命令APPEND&打开记录编辑窗口,等待用户在表尾追加记录 当追加的记录数据输入结束时,按Ctrl+W键或执行该窗口控制菜单中的“关闭”命令,关闭记录编辑窗口返回。2)插入记录 执行“INSERT”命令,可在当前记录之后插入;执行“INSERT BEFORE”,可在当前记录之前插入;执行“INSERT BLANK”,可在当前记录之后,插入一条空白记录;执行“INSERT BEFORE BLANK”,可在当前记录之前,插入一条空白记录。第32页/共132页 3)记录指针的绝对或相对移动命令举例:USE JSJK&表刚打开时,记录指针自动指向最上一条记录GO 3&使指针指向第3条记录(该命令可省略GO)?RECNO()&显示当前的记录号为3GO TOP&使指针指向表的最上一条记录(不是文件头)?RECNO(),BOF()&显示当前记录的记录号1及.F.SKIP 1&从1号记录向后跳一条记录,指针指向文件头?RECNO(),BOF()&显示当前记录的记录号仍是1及.T.GO BOTTOM&使指针指向表的最后一条记录(不是文件尾)?RECNO(),EOF()&显示最后一条记录的记录号及.F.SKIP&从最后一条记录向前跳一条记录,指针指向文件尾?RECNO(),EOF()&显示最后一条记录的记录号加1及.F.GO 5&将记录指针指向第5条记录INSERT&在当前记录后插入新记录,新记录号为6 2.删除记录 删除记录分成两步:首先逻辑删除要删除的记录(加删除标记),然后用PACK命令,把作过删除标记的记录从表中物理删除。第33页/共132页USE JSJKGO 3DELETE NEXT 2&给第3、4两条记录加删除标记GO 10DELETE&给第10条记录加删除标记LIST&在屏幕上可看到第3、4、10三条记录有删除标记“*”GO 3RECALL NEXT 2&擦除第3、4两条记录的删除标记PACK&物理删除有删除标记的第10条记录 如果想快速地给记录作删除标记,可在浏览窗口,单击待删记录左端的矩形框,使该框变黑。如果想把当前表中的所有记录物理删除,可在命令窗口,执行ZAP清库命令。3.修改记录数据对记录中的数据内容进行编辑修改的操作方法如下:1)如果表没有打开,可先打开表(例如,打开表JSJK.DBF)2)执行显示菜单中的“浏览”命令,或在命令窗口执行BROWSE 3)在浏览窗口,将光标移到待修改记录数据的位置第34页/共132页 4)在光标位置编辑修改相应的记录数据,当完成全部记录数据的修改后可按Ctrl+W或Ctrl+End键关闭浏览窗口。另外,在命令窗口,也可以执行EDIT或CHANGE编辑修改记录。8.4.7 记录数据的替换 用REPLACE命令则能把字段值用指定的表达式值进行替换,不必直接进行键盘操作。例如,在当前表JSJK.DBF中,对职称是教授的教师,每人工资增加150元并把增加工资的信息添加到他们的简历字段原有数据的尾部。操作如下:USE JSJKREPLACE ALL 工资 WITH 工资+150,简历 WITH“从2002年7月;开始月工资增加150元”ADDITIVE FOR 职称=教授说明:若缺少ALL及FOR子句,则仅替换当前记录的工资和简历。8.4.8 表结构与记录数据的复制 表的复制操作是针对一个已有的表进行复制,以得到它的一个副本。1.同时复制表结构与记录数据格式:COPY TO 范围FIELDSFOR第35页/共132页 功能:在当前表的指定范围内,对满足条件的记录进行复制,产生一个由字段名表确定结构的新表。如果命令中各选择项缺省,则复制产生的新表是当前表的一个副本。例如:USE JSJKCOPY TO JSJK2&对当前表,复制生成JSJK2.DBF及JSJK2.FPTCOPY TO JSJKBF2 FIEL 编号,姓名,工资&JSJKBF2含3个字段COPY TO JSJKBF3 FIEL 姓名,工资,出生日期 FOR 职称=“教授”USE JSJKBF3&在当前目录中,打开新表JSJKBF3.DBFLIST&显示在表JSJKBF3中,只有教授的记录且仅3含个字段 2.单独复制表结构格式:COPY STRUCTURE TO FIELDS 功能:把当前表的结构复制到新表中。如果命令中含有可选项FIELDS时,则新表的结构由字段名表指定的字段及顺序确定。例如,在命令窗口,对当前目录中的表JSJK进行以下操作:USE JSJKCOPY STRUCETURE TO JSJKJG2 FIELDS 编号,姓名,职称USE JSJKJG2&在当前目录中打开新表JSJKJG2.DBFBROWSE&显示JSJKJG2.DBF中没有记录,其结构仅含3个字段第36页/共132页 8.4.9 表的排序与索引 1.排序 排序就是根据表的某字段值的大小重排记录,产生一个新的表,而原表不变。对于排序依据的字段值,按从小到大排列记录的称为升序(Ascend)排列,从大到小排列记录的称为降序(Descend)排列。格式:SORT TO ON/A/D/C,/A/D/C范围 FOR|WHILEFIELDS 功能:该命令可对当前表中的记录,按用户指定的字段值排序。说明:(1)若没有选择项/A、/C、/D,系统自动按升序排列。A示升序,D示降序,C示不区分大小写字母。若A和C合用可写为/AC。(2)若按多个字段来排序时,最主要的字段应写在字段表的最前面。排序时,首先按字段1的值排序,对于字段1的值相同的记录,又按字段2的值进行排序,依次类推。(3)排序时,按ASCII码的顺序排列字符;同级汉字按汉字的拼音字母来排序。第37页/共132页USE JSJK&打开表JSJKSORT TO JSXGPX ON 性别,工资/D&同性别的记录,按工资降序USE JSXGPX LIST&显示排序结果 2.索引 表中的记录在磁盘中的存储顺序称为物理顺序。索引不改变原表记录的物理顺序,而仅列出了按索引关键字(字段表达式)值的升序或降序排列的记录号与相应关键字值对应的索引表。把这个索引表存入磁盘就形成了索引文件。这样由索引确定的记录顺序称为逻辑顺序。索引文件比排序生成的表占用磁盘空间要少。按文件的扩展名,索引分为单索引文件(.IDX)及复合索引文件(.CDX)两类。单索引文件只包含一个索引,它是为了与FoxBASE兼容而设置的。复合索引文件可包含多个索引,每个索引都有一个索引标识,代表一种记录逻辑顺序,其扩展名为.CDX。这种类型的文件又分结构复合索引和非结构复合索引。结构复合索引文件的主名与表的主名相同,它随表的打开而打开,在VFP中用的最多。而第38页/共132页非结构复合索引文件的主名由用户命名,它不与表的主名相同,打开这种索引文件需要先打开表再使用SET INDEX 命令或使用USE INDEX 命令。1)索引的建立格式:INDEX ON TO|TAGOFFORCOMPACTASCENDING|DESCENDINGUNIQUEADDITIVE 功能:建立索引文件或增加索引标识。说明:TO子句适用于建立单索引文件,COMPACT选项用于指定单索引文件为压缩文件(压缩文件不能被FoxBASE使用)。TAG 子句用于建立复合索引文件及索引标识,或增加索引标识。OF选项的复合索引文件名用于指定非结构复合索引文件的名字,缺省该选项时,表示建立结构复合索引文件。选项ASCENDING表示升序,DESCENDING表示降序;两者都缺省时,表示升序;这两个选项不能用于建立单索引文件。选项UNIQUE表示建立唯一索引文件(对于索引关键字值相同的记录,索引中只列出其中的第一个记录)。第39页/共132页 选项ADDITIVE 表示建立索引文件时,不关闭先前打开的索引文件。例如,建立单索引文件举例:USE JSJK INDEX ON 姓名 TO XMSY&按姓名建立XMSY.IDX文件LIST&显示按姓名升序的索引结果INDEX ON -工资 TO GZSY&建单索引文件,不能用DESCENDINGLIST&显示按工资降序的索引结果例如,建立复合索引文件举例:USE JSJKINDEX ON 工资 TAG GZ DESCENDING&建标识名GZ的JSJK.CDXLIST&显示按工资降序的索引结果INDEX ON 性别+STR(工资,7,2)TAG XBGZ&标识名XBGZ的索引LIST&显示先按性别升序,同性别时按工资升序的索引结果 2)打开与关闭索引文件 利用索引快速查询指定数据时,必须同时打开表及基于该表的相应索引文件。虽然可以同时打开基于一个表的多个索引文件,第40页/共132页但任何时刻只有一个索引文件起作用,当前起作用的索引文件称为主控索引文件;同一个复合索引文件,又可以包含多个索引标识,但任何时刻只有一个索引标识起作用,当前起作用的索引标识称为主控索引标识。刚刚建立的索引文件,自动处于打开状态并为主控索引文件。(1)打开索引文件格式:SET INDEX TO ADDITIVE 功能:打开基于当前表的,由索引文件表指定的多个索引文件,并确定索引文件表中序号为1的索引文件为主控索引文件。若缺省选项ADDITIVE,则在打开指定索引文件的同时,关闭除了结构复合索引文件以外的所有索引文件。还可以用命令“USE INDEX”,在打开表的同时,打开索引文件。确定主控索引格式:SET ORDER TO数值表达式|单索引文件名|TAG 索引标识 ASCEVDING|DESCENDING功能:在打开的索引文件中,确定主控索引和主控索引文件。第41页/共132页说明:选项数值表达式,表示已打开索引的序号,该序号用来指定主控索引文件或主控索引,系统先为各单索引文件编号,所以结构复合索引文件的序号大于单索引文件的序号;选项单索引文件名,表示指定该单索引文件为主控索引文件;选项索引标识,表示指定该索引标识为主控索引;糁葱小SET ORDER TO”或“SET ORDER TO 0”命令,则取消主控索引文件及主控索引,表中记录将按物理顺序输出。关闭索引文件格式:SET INDEX TO 功能:关闭除了结构复合索引以外的所有索引文件。另外,在关闭表的同时,也就自动关闭了基于该表的所有索引文件。例如,根据上面建立索引文件的例子,指定主控索引文件及改变主控索引。USE JSJK SET INDEX TO XMSY,GZSY&打开XMSY.IDX及GZSY.IDXLIST&显示主控索引XMSY.IDX的索引结果第42页/共132页SET ORDER TO 2&指定序号为2的GZSY.IDX是主控索引文件LIST&显示GZSY.IDX的索引结果SET ORDER TO TAG XBGZ&指定JSJK.CDX的XBGZ为主控索引LIST&显示索引标识为XBGZ的索引结果SET ORDER TO&取消主控索引文件及主控索引LIST&记录按物理顺序显示SET INDEX TO&关闭所有单索引文件,取消主控索引 3)索引的更新 当表中的数据发生变化时,所有已打开的索引文件都会自动改变记录的逻辑顺序,实现索引文件的自动更新。若表中数据变化时,而索引文件没有打开,则没打开的索引文件的数据不会自动更新。这样就会产生表中数据和基于该表的索引文件中的数据不一致。为