收藏 分享(赏)

第4章 数据库与表.ppt

上传人:kpmy5893 文档编号:8804978 上传时间:2019-07-12 格式:PPT 页数:61 大小:373.50KB
下载 相关 举报
第4章  数据库与表.ppt_第1页
第1页 / 共61页
第4章  数据库与表.ppt_第2页
第2页 / 共61页
第4章  数据库与表.ppt_第3页
第3页 / 共61页
第4章  数据库与表.ppt_第4页
第4页 / 共61页
第4章  数据库与表.ppt_第5页
第5页 / 共61页
点击查看更多>>
资源描述

1、第4章 数据库与表,1 数据表的建立与基本操作 2 数据库与数据表 3 索引 4 表与表之间的联系,数据库(DB)的概念:存储在计算机存储设备上的结构化的数据集合。,不。数据库主要是通过对数据表的操作达到组织和管理数据的目的。数据表是组织数据、处理数据的基本单元。,数据库直接管理数据吗?,如果把日常工作中的各个文件、资料看成一个个数据的话,那么数据表就是存放这些文件、资料的文件夹,数据库就是存放文件夹的文件柜。文件柜只是起合理组织和管理文件夹的作用,文件夹才是我们日常工作操作的对象。因此,我们先学习数据表的相关知识。,2、数据表的分类,1、数据表的组成,4.1 数据表的概念,表4-1是高校日常

2、学生工作中经常用到的一个表,可以看出,日常工作中常用的表是由表名、表头、表的内容三部分组成。 表的名字(标题):每张表都有一个名字,是用来概括表的内容和区分其他表。例如上表的名字为“学生基本情况表”。 表中第一行即是表头,它标明了每一列对应数据的属性。例如在表4-1中的学号、姓名、性别等等。 表中其它行的数据是表的内容,由每行中具体的数据项内容组成的,它标明了某一事物的基本内容。例如在表4-1中,第二行反映的便是江涛同学的基本情况。,表4-1 学生基本情况表,4.1 数据表的概念,1、数据表的组成,一个数据表都由什么组成呢?,在数据库系统中,一个数据表则由数据表的文件名、数据表的结构、数据表的

3、记录三要素构成。,数据表的文件名相当于常用表中的表名,它是数据表的主要标识,用户可以依靠数据表名在磁盘上存取、使用指定的数据表。 数据表的结构相当于常用表的表头,常用表的每一列对应数据表中的一个字段,其属性决定了字段名、字段类型和字段长度。 数据表中的记录相当于常用表中的表的内容。一个数据表的大小,主要取决于它拥有的数据记录的多少。不包含记录的数据表称为空表。,4.1 数据表的概念,1、数据表的组成,问题:自由表与数据库表有何异同?两者可以互相转换吗?,文件夹一般是存放在文件柜里的,但有时候有些文件夹需要在文件柜之外单独使用和存放,这类文件夹就不受文件柜的管理了,但仍在文件柜里的文件夹仍受文件

4、柜的管理;这样就形成了一类受文件柜管理和一类不受管理的两类文件夹。 在数据库系统中也存在类似情况:存在于数据库之内的表和存在于数据库之外的表,我们把 独立存在数据库之外,不受任何数据库管理的数据表称为自由表。 存在于某一个数据库中,与数据库相关联的数据表称为数据库表。,2、数据表的分类,4.1 数据表的概念,1、数据表的组成,(1)两者都是一个以(.dbf)为扩展名的独立文件,使用和操作方法没有任何区别。 (2)自由表独立存在,不与任何数据库相关联;数据库表存在于数据库中,与某一个数据库相关联。 (3)数据库表中可以使用长字段变量名(128个字符),自由表中的变量名不超过10个字符。 (4)数

5、据库表有一些自由表所没有的特性:,数据库表和自由表的异同,可以为数据库表中的字段指定标题和添加注释; 可以为数据库表中的字段指定默认值和输入掩码; 数据库表中的字段有默认的控件类; 可以为数据库表规定字段级规则和记录级规则; 数据库表支持主关键字、参照完整性和表之间的联系; 数据库表支持INSERT、UPDATE和DELETE事件的触发器。,两者可以互相转换!,4.2.2 设计表的结构,4.2 数据表的建立,4.2.1 建立表文件,4.2.3 输入表的数据记录,4.2 数据表的建立,4.2.1 建立表文件,建立表文件一般有四种方法:,方法一:在项目管理器中新建表文件,菜单或工具栏按钮“新建”

6、对话框中选择“表” 新建文件或向导,方法三:命令方式,Create ,方法二:在数据库设计器中新建表文件,方法四:菜单方式,注意: 使用方法三、四新建数据表时,如果存在已经打开的数据库,则新建的数据表为数据库表,否则,为自由表。,4.2.2 设计表的结构,4.2 数据表的建立,4.2.1 建立表文件,设计表的结果一般是在表设计器中进行。新建表文件后,系统自动打开“表设计器”对话框,要求用户设计表的结构。,自由表设计器,数据库表设计器,在VFP6.0中字段变量的数据类型有13种:数值型、字符型、货币型、日期型、日期时间型、逻辑型、整型、浮点型、双精度型、备注型、通用型、备注型(二进制)、通用型(

7、二进制)。,(3)字段宽度:决定了该字段能够放数据的最大字符数或数值位数。 (4)小数位数:数值型、浮点型、双精度型还需定义保留小数位数。 (5)索引:是否为当前字段为设置索引字段。(后面章节详细讲) (6) NULL:该字段是否可以为空值(值为不确定状态)。,(1)字段名:列的标题称为字段名。字段名的命名遵循变量命名规则,且同一个表中字段名不能重复。 (2)字段类型:决定了该字段能够存储哪一种类型的数据。,字段(Field):表中的列称为字段,它体现这一列数据的属性。一个表中最多可包含255个字段(vfp8.0)。字段的基本属性包括字段名、数据类型、宽度、小数位数、索引、是否允许为空值等。,

8、如果是数据库表,还可以根据需要设置字段有效性、格式、掩码等。,显示组框:,格式文本框:用于输入格式表达式,确定字段在浏览窗口、表单或报表中显示时采用的大小写、字体和样式等。例如,输入一个字符“A”,表示只能输入字母,输入一个字符“!”,表示使浏览窗口输入输出时将字母都转换为大写。 常用格式码及功能如下表:,在显示组框下可以定义字段显示的格式、输入掩码和字段的标题。,显示组框:,在显示组框下可以定义字段显示的格式、输入掩码和字段的标题。,格式文本框 输入掩码:用于限制或控制字段的输入格式,屏蔽非法格式的输入,减少输入错误。 掩码字符及功能如下表:,可以为每一个字段添加注释说明,便于日后或其他人对

9、数据表进行维护。,显示组框:,在显示组框下可以定义字段显示的格式、输入掩码和字段的标题。,格式文本框 输入掩码 标题:用于字段显示时的标题,没有则显示字段名。,字段注释:,字段有效性:,定义字段有效性规则、违反规则时的提示信息和字段的默认值。,规则:建立检查字段输入数据有效性的规则(表达式)。 如在xb字段的规则设置为xb=“男” .or.xb=“女” 。 信息:当输入数据违反规则时的提示信息。 默认值:预设输入数据的默认值。,注意: 规则的结果为逻辑值。信息是字符串表达式。默认值是字段类型而定。,在程序中,也可以用命令建立新表并同时设计表的结构。命令格式为:,4.2.2 设计表的结构,4.2

10、 数据表的建立,4.2.1 建立表文件,CREATE table |dbf free (字段名1 字段类型(字段宽度,小数位数),字段名2 字段类型(字段宽度,小数位数),例: *建立一个包含xh、xm、nl、csrq、cj、qita字段的学生信息表 create table stu2 free; ( xh C(8),;xm C(8),;nl I(2),;csrq D,;cj N(4,1),;qita M ) modify structure &打开表设计器,4.2.2 设计表的结构,4.2 数据表的建立,4.2.1 建立表文件,4.2.3 输入表的数据记录,表结构完成,关闭表设计器以后,系统

11、会自动弹出对话框询问是否输入数据。选择“是”就可以直接输入数据了。,(1)输入的数据要与字段类型、宽度、小数点位数一致,并与字段格式、掩码、有效性相符合。 (2)备注型、通用型数据的输入需要在专门文件中输入。 备注型输入内容后 表中“memo”变为“Memo”字样; 通用型输入内容后 表中“gen”字样已经变成了“Gen”。,4.3.2 表结构的显示、修改、复制,4.3 数据表的基本操作,4.3.1 表的打开、关闭、浏览、复制,4.3.3 数据记录显示、修改、定位,4.3 数据表的基本操作,4.3.1 表的打开、关闭、浏览、复制,1、表的打开和关闭,菜单方式,命令方式,Use exclusiv

12、e|shared,独占方式打开,共享方式打开,2、表的关闭,命令方式,Use 关闭当前已打开的表文件,3、表的浏览,菜单方式,命令方式,数据库方式,项目管理器方式,BROWSE FIELDSFOR,只有先打开表,才能进行与表相关的操作。,Browse命令,4.3 数据表的基本操作,4.3.1 表的打开、关闭、浏览、复制,4、复制表,windows方式,命令方式,Copy to fields for while ,【功能】:把当前数据表文件中的全部或部分数据复制到指定的新文件中。 【说明】 :1) 必须先打开被复制的数据表文件。2) 默认复制成的新文件是一个数据表文件,其扩展名默认为.DBF。3

13、) 选择项FIELDS用以指定复制到新表文件中的字段结构及顺序,缺省时为全部字段。4)范围子句有:ALL、NEXT n、RECORD n和REST。 若省略则默认为ALL。5) for/while 设定条件语句,for和while 的区别:,for和while 的区别:for: 在指定范围内选择每一条符合条件的记录;while:在指定范围内,从当前记录开始(范围为record n时除外)操作满足条件的记录,一旦遇到不满足条件的记录即终止命令的执行,即使后面有满足条件的记录也不再操作。 若当前记录就不满足条件,则选择的记录数为0。,4.3.2 表结构的显示、修改、复制,4.3 数据表的基本操作,

14、4.3.1 表的打开、关闭、浏览、复制,1、显示表结构,2、修改表结构,3、复制表结构,List | display structure,修改表结构都是在表设计器中进行的。打开表设计器的方式有:,菜单方式,命令方式,数据库方式,项目管理器方式,modify structure,copy structure to fields ,4.3.2 表结构的显示、修改、复制,4.3 数据表的基本操作,4.3.1 表的打开、关闭、浏览、复制,4.3.3 数据记录显示、修改、定位,1、显示记录数据,List | Display FIELDSFOR WHILE OFFTO PRINTERPROMPTTO FI

15、LE Filename,【说明】 FIELDS指定要显示的字段名,它们之间用逗号分隔。若缺省则显示表中的所有字段,但备注型、通用型字段不显示。 和FOR、while可选项短语限定显示的记录的范围和应满足的条件。 选OFF时,不显示记录号而只显示记录内容。 LIST和DISPLAY的区别有两点:一是若范围和条件短语均缺省,LIST显示所有记录,DISPLAY显示当前记录;二是若记录很多,LIST连续显示,DISPLAY分页显示。,4.3.2 表结构的显示、修改、复制,4.3 数据表的基本操作,4.3.1 表的打开、关闭、浏览、复制,4.3.3 数据记录显示、修改、定位,2、修改记录数据,追加记录

16、 插入记录 修改记录 删除记录,追加记录,菜单方式,命令方式,Append blank,在文件尾追加一条或多条记录,有blank选项时,在表尾追加一条空记录,不打开表输入窗口,缺省时打开表输入窗口供用户追加记录。,插入记录 在指定位置插入新的记录,命令方式,Insert blankbefore,【说明】 (1)缺省blank选项时,弹出记录编辑窗口,由用户输入插入的内容;否则,系统自动插入一条空记录,而不打开记录编辑窗口; (2)选用before选项时,在当前记录前插入;否则在当前记录后插入; (3)插入新记录后,其后面记录均自动顺次后移。,修改记录,打开表编辑窗口供用户修改记录。,菜单方式,

17、命令方式,Change | Edit FIELDS FOR WHILE,Replace FOR WHILE with ,字段2 with ,【命令一:】,【命令二:】,对指定范围内满足条件的记录,用表达式的值替换字段的值。,【说明】 (1)本命令不出现编辑窗口,系统自动用表达式的值替换字段的值; (2)缺省 语句时,仅对当前记录进行替换。,【例】对所有少数名族的学生的成绩都加上10分 Replace 成绩 with 成绩+10 for left(民族,2)!=“汉”,Change 、 Edit、Replace,打开表编辑窗口,删除记录,菜单方式,命令方式,Delete、recall、pack、

18、zap,逻辑删除,物理删除,给要删除的记录加上删除标记,可以恢复,把加了逻辑删除标记的记录从表中永久地清除掉,不可以恢复,Delete FOR WHILE,【命令一:】,在当前表指定范围内满足条件的记录加上逻辑删除标记。,Recall FOR WHILE,【命令二:】,撤销当前表指定范围内满足条件的记录上逻辑删除标记。,Pack,【命令三:】,Zap,【命令四:】,物理删除当前表中带逻辑删除标记记录。,物理删除当前表中所有记录,无论是否有逻辑删除标记。,4.3.2 表结构的显示、修改、复制,4.3 数据表的基本操作,4.3.1 表的打开、关闭、浏览、复制,4.3.3 数据记录显示、修改、定位,

19、3、记录的定位,前面很多地方提到“当前记录”,什么是当前记录? 数据表建立后,系统一般会按照记录的输入顺序给每一条记录生成一个记录号,同时,系统还会为表设置一个指向记录的指针,记录指针所指向的记录称为当前记录。记录的定位就是将记录指针指向指定的记录。,菜单方式,命令方式,go、skip、locate,菜单“表”| “转到记录”,go n|top|bottom 记录指针的绝对移动,【命令一:】,n:将记录指针移动到第n条记录,n为正整数; top:将记录指针移动到当前表的第一条记录; bottom:将记录指针移动到当前表的最后一条记录;,skip n 记录指针的相对移动,【命令二:】,相对于当前

20、记录,记录指针向上或向下的移动若干条记录; n为正数时,向下移动n条记录;n为负数时,向上移动n条记录。,Locate for,【命令三:】,执行该命令后,记录指针定位在满足条件的第一条记录上,如果没有满足条件的记录,则指针指向文件结束位置。如果要使指针指向下一条满足条件的记录,需要使用continue命令配合。,为了判断locate或continue是否找到了满足条件的记录,可以使用found()函数,如果有满足条件的记录,该函数返回真,否则返回假。Locate常用的结构是:,Locate for 条件 do while found() continue enddo,跟记录指针位置有关的几个

21、测试函数,1、记录号测试 recno(),返回当前表当前记录的记录号,2、记录个数测试 reccount(),返回当前表的总记录个数,包括逻辑删除的记录,3、表文件首测试 BOF()4、表文件尾测试 EOF(),在表第一条(首记录top)的上面有一个文件起始标志,称Beginning Of File(BOF); 在最后一条(尾记录bottom)的下面有一个文件结束标志,称End Of File(EOF);,表文件逻辑结构,记录指针,若指针指向文件开始,返回真,否则返回假;,若指针指向文件结束,返回真,否则返回假;,4.4 表与其他形式数据的交换,4.4.2 当前记录与一维数组之间的交换,4.4

22、.1 当前记录与内存变量组之间的交换,4.4.3 表与二维数组之间的数据交换,4.4.4 表与其他文件之间的数据交换,4.4 表与其他形式数据的交换,4.4.1 当前记录与内存变量组之间的交换,1、向内存变量组发送数据,将当前记录中由字段名表给出的各字段的值传递给一组与表字段同名、同类、同长度的变量。,Scatter memvar fields memoblank,2、从内存变量组收集数据,将内存变量组中的数据依次写入当前记录的各个字段;若有fields子句,则按给出的字段顺序将内存变量组中与之同名的内存变量值写入。若变量多与字段,多余的变量不写入表; 若变量少于字段,多余的字段不写入数据。,

23、Gather memvar fields memo,4.4 表与其他形式数据的交换,4.4.2 当前记录与一维数组之间的交换,1、向一维数组发送数据,将当前记录中由字段名表给出的各字段的值传递给一维数组。,Scatter to fields memo,2、从一维数组中收集数据,将一维数组中的数据依次写入当前记录的各个字段。,Gather from fields memo,4.4 表与其他形式数据的交换,4.4.3 表与二维数组之间的数据交换,1、把多条记录复制给二维数组,将满足条件的记录,按指定的字段的值复制给二维数组。,copy to array fields for while,2、从二维

24、数组追加数据,从二维数组中把符合条件的元素按fields子句指定的字段顺序,依次追加到表中,称为表的多条新记录。,append from array fields for while,数组的行数决定了追加记录的条数,列数决定了追加的字段数; 若数组中有空行,则形成空记录;若有空元素,则形成空字段; 若数组的列数多于字段数,多余的元素不追加;若列数小于字段数,多余的字段为null,4.4 表与其他形式数据的交换,4.4.4 表与其他文件之间的数据交换,1、菜单方式导入、导出 txt文件或excel文件,2、从excel文件向表中追加数据,例: Append from xuesheng.xls x

25、l5 &excel文件格式为excel5.0 Append from xuesheng.xls xl8 &excel文件格式为excel97,命令方式向excel导出表记录,例: Use student.dbf Copy to xuesheng.xls xl5,Copy to fields for,Append from sheet sheetname,4.5 表排序与索引,一般情况下,表中的记录是按输入的顺序存放的,但实际工作中,经常希望按另外的某种顺序将记录重新组织。要达到这种目的有两种方式:排序和索引。 排序是另外生成一个按要求排好顺序的新表; 索引是由指向表记录的指针构成的文件,这些指

26、针逻辑上按照索引关键字的值进行排序,索引文件和表文件分别存储,索引不改变表中记录的物理顺序。,4.5.1 排序,4.5.2 索引的基本概念,4.5.3 索引的建立,4.5.4 使用索引,4.5.1 排序,Sort to on /A/D/C,/A/D/C. fields for while ,【功能】:对指定范围内满足条件的记录按指定指定顺序重新排序后生成一个新的表文件。 【说明】 :1) 必须先打开排序的数据表文件。2) 存在,,时,先按排序,字段1相同时再按排序,依次类推。3) /A为升序,/D为降序;同时指定/A和/D时,按降序排;缺省时按升序排。4)/C 排序时不区分大小写。,例:把st

27、uinfo2003表中的记录按姓名排序USE d:vf试验stuinfo2003.dbf EXCLUSIVE BROWSE LAST sort to new1 on xm use new1 browse last use,4.5.2 索引的基本概念,索引是对原表的各条记录按照指定字段或字段表达式值的大小排列后生成的一个简单的索引列表,在该列表中仅记载各记录对应的这个字段或字段表达式的值以及记录号。当原表与索引一起使用时,就能按索引列表中记载的顺序对原表进行操作。这个指定的字段或字段表达式就称为索引表达式。一旦为表按索引表达式建立索引后,就产生了一个相应的索引文件。,只能按一个字段建立索引,也就

28、是只能有一个索引项,可以按多个字段建立索引,也即是可以包含多个索引项,每个索引项有一个索引标识,代表记录的某一种逻辑顺序,结构化与非结构化索引文件的区别: 1、结构化复合索引的主文件名与表文件名相同,索引文件随表的打开而打开,在更新记录时自动维护;使用方便,最常用。 2、而非结构化复合索引文件的主文件名与表文件名不同,索引文件必须单独打开。,索引文件的分类,根据索引项特点不同, 可以把Visual foxpro中的索引项分为四类:,1、主索引:仅适用于数据库表,其索引字段不允许有重复值,一个数据库表只能建立一个主索引。可确保字段中输入值的唯一性并确定了处理记录的顺序。 2、候选索引:与主索引一

29、样,其索引字段不允许有重复值,可确保字段中输入值的唯一性并确定了处理记录的顺序,但一个表可以创建多个候选索引。 3、普通索引:也可以确定记录的处理顺序,允许字段中出现重复值,一个表可以创建多个普通索引。 4、唯一索引:主要是为了保持与早期版本的兼容性,也可以确定记录的处理顺序,允许字段中出现重复值,一个表可以创建多个唯一索引。其“唯一”表示索引字段出现重复值时,索引列表中只保留首次出现此值的记录。,后三种索引在数据库表和自由表中都适用,4.5.3 索引的创建,1.命令方式创建索引,【说明】 命令中的可以是某个字段或多个字段的表达式。 默认扩展名为.idx,只能按升序索引; of 建立非结构复合

30、索引,缺省时建立结构复合索引。 ascending升序,descending 降序,compact建立一个压缩的单索引文件,复合索引总是压缩的。 unique建立唯一索引, candidate建立候选索引;都缺省时将建立普通索引。 该命令不能建立主索引。 additive不关闭已打开的索引,否则关闭。,【格式1】INDEX ON to FOR unique | candidate compact additive,【格式2】INDEX ON TAG of FOR ascending | descending unique | candidate,命令方式,表设计器,例 用命令为职工.dbf建立

31、索引USE 职工.dbf & & 以仓库号为索引字段,建立单索引文件sy_test.idx, 普通索引 index on 仓库号 to sy_test.idx&以职工号为索引字段,建立一个索引标识为ckhjgfh的 结构复合索引文件 职工.cdx,候选索引 index on 职工号 tag zghjgfh candidate &以仓库号为第一索引,以职工号为第二索引字段,建立一个索引标识为ckzgh的非结构复合索引文件,唯一索引 Index on 仓库号+职工号 tag ckzgh of sy_test.cdx unique,2.表设计器中创建索引,在表设计器创建的索引都是结构化复合索引,4.

32、5.4 索引的使用,1.索引文件的打开,当需要对表中的纪录按某个索引项的顺序进行操作时,则必须在打开该表的同时打开相关索引文件。与表同名的结构化索引文件在打开表的同时自动打开,但对于单索引文件和非结构索引文件,则必须专门打开。,【格式1】use index ,在打开表的同时打开与之相关的一系列索引文件,【格式2】set index to ,在表已打开的情况下,打开与之相关的一系列索引文件,【说明】 可以打开包括单索引、复合索引的多个索引文件,但在同一时间只能有一个单索引文件或复合索引文件中的一个索引对排序起作用。 在中,如果第一个是单索引文件,则该单索引文件对排序起作用,若第一个是复合索引文件

33、,则还需指定哪一个索引对排序起作用 。,例:use 职工.dbf index sy_test.idx, sy_test.cdx,例:set index to sy_test.idx, sy_test.cdx,如果在打开索引文件时没有指定对排序起作用索引,或想改变起作用的索引,可以使用set order to 命令指定当前索引。,【格式】set order to | tag of ,设置对排序起作用的索引,【例】 在表设计器中为仓库号、职工号建立索引,并设定仓库号其起作用的索引set order to 仓库号,4.5.4 索引的使用,2.索引文件的关闭,【方式1】 关闭表文件 关闭结构复合索引文

34、件 【方式2】 关闭索引命令 close indexes set index to,关闭非结构复合索引和单索引文件。,3.使用索引快速定位,find | ,在已打开索引文件的表中快速搜索 索引表达式的值与 | 相匹配的第一条记录。若查找成功,记录指针指向该记录,通过时found()为真,否则,记录指针指向表文件结束标识,found()为假。,seek ,功能同find,4.5.4 索引的使用,5.删除索引,【方式1】 表设计器中手动删除 【方式2】 命令方式delete tag of | all 删除复合索引 delete file 删除单索引,4. 更新索引,如果在表打开的同时也打开了相应的

35、索引文件,则索引会与表同时更新;如果在表更新以后才打开单索引文件和非结构复合索引文件,需要使用reindex命令对其进行更新。,例: delete file sy_test.idx 删除单索引 delete tag ckzgh of sy_test.cdx 删除索引标识为ckzg的索引,4.6 数据的统计与计算,1.求记录个数命令,count FOR WHILE to ,统计在指定范围内满足条件的记录的个数,并可以把结果赋值给内存变量,2.求和命令,sum FOR WHILE to ,对数值型表达式指定的字段或字段表达式累加求和,并可把结果赋值给内存变量,例:统计职工工资大于1300的职工数

36、count for 工资1300 to gzs ?gzs,例:统计仓库号为“WH2”的职工的总工资 sum 工资 for 仓库号=“WH2“ to gz3 ? “仓库号为“WH2“的职工的总工资=“,gz3,3.求平均值命令,average for while to ,对数值型表达式指定的字段或字段表达式求平均值,并可把结果赋值给内存变量,4.6 数据的统计与计算,例:统计仓库号为“WH2”的职工的平均工资 average 工资 for 仓库号=“WH2“ to gz3 ? “仓库号为WH2的职工的平均工资=“,gz3,4.6 数据的统计与计算,4.计算命令,calculate FOR WHI

37、LE to ,分别计算指定的各个表达式的值,并可以把结果赋值给内存变量,由下列函数组成,cnt() 返回表的记录个数 max(表达式) 返回表达式中的最大值 min(表达式) 返回表达式中的最小值 avg(数值型表达式) 返回数值型表达式的算术平均值,例:计算职工的工资 calculate cnt(),max(工资),min(工资),avg(工资) to rs,ggz,dgz,pj ?“职工数=“,rs ?“最高工资=“,ggz ?“最低工资=“,dgz ?“平均工资=“,pj,4.6 数据的统计与计算,5.分类汇总命令,total to on fields for while,【功能】以on

38、后面的作为分类标准,对当前表中的数值型字段进行分类汇总,汇总的结果存入到to后面表中。,【说明】 生成的表文件与原表文件结构相同,但没有备注字段。 在执行该命令前,必须按照on后面的建立索引或排序文件,并且打开排序或索引文件 。 fields 指定参加汇总求和的数值型字段,缺省时对所有数值型字段进行汇总求和 对非数值型字段或不参加汇总求和的字段,只显示与值相同的首条记录的值。,例:对student表按性别对成绩汇总 use student EXCLUSIVE index on xb tag xbsy total to hz on xb fields clpc,djcl use hz list

39、use,前两种方式新建数据库后会自动打开数据库设计器,命令方式不自动打开数据库设计器,4.7 数据库的基本操作,1.数据库的建立,方法一:在项目管理器中新建数据库,菜单或工具栏按钮“新建” 对话框中选择“数据库” 新建文件或向导,方法三:命令方式,Create database ,方法二:菜单方式,2.数据库的打开,只有先打开数据库,才能进行与之相关的操作。,菜单方式,命令方式,open database exclusive|sharednoupdate,在项目管理器中选择了相应的数据库,数据库将自动打开,4.7 数据库的基本操作,3.修改数据库,modify database nowait,

40、修改数据库实际就是打开数据库设计器,修改相应的内容。修改数据库命令为:,打开数据库设计器,供用户修改数据库的内容,4.关闭数据库,【格式1】 close database 关闭所有打开的数据库,【格式2】 close all 关闭所有打开的数据库和除主窗口以外的所有窗口,nowait只在程序中使用,表示打开数据库后继续后续程序语句的执行,否则暂停程序的执行。,5.删除数据库,方法一:在项目管理器中删除数据库,方法二:命令方式,delete database deletetables,有deletetables子句时,连同数据库内的表一起删除,否则,数据库内的表变为自由表,6. 添加和删除数据库

41、表,方法一:在项目管理器中添加和删除数据库表,方法三:命令方式,add table ,4.7 数据库的基本操作,方法二:在数据库设计器中添加、删除数据库表,remove table delete,向当前打开的数据库内添加表,从当前打开的数据库内移除表,表称为自由表;若有delete子句,在移除表的同时把表从硬盘上删除。,4.8 多表的使用及表之间的关系,4.8.1 多个表同时使用,在前面讲到当用use命令打开一个表的同时,会自动关闭其他已打开的表,好像在同一时刻只能打开使用一个表。实际上不是这样。在vfp中同一时刻可以在不同工作区中打开多个表。,1. 多工作区,工作区:每打开一个表,系统就会在

42、内存中开辟的一个区域(亦称缓冲区)与磁盘上保存的表之间建立起一种映射关系,使VFP通过缓冲区使用磁盘上表中的数据,这个内存中的缓冲区就称为工作区。VFP 6.0系统最多可以同时开辟32767个工作区。为了区分不同的工作区,系统为每一个工作区指定了一个编号,分别是1、2、3、32767。在每一个工作区内只能打开一个表,但可以同时打开与表相关的其他文件,如索引、查询等;如果需要同时打开多个表,可以在不同的工作区内打开,但在任何时刻只能选择一个工作区进行操作,正在操作的工作区就称为当前工作区,在当前工作区打开的表,称为当前表。,Visual FoxPro 6.0启动后,自动指定1号工作区为当前工作区

43、。也可以使用select命令指定工作区。命令格式为:,select ,例:select 1use student.dbfselect 3use 职工.dbf,也可以在use命令中直接指定在哪个工作区内打开表,上述例子可改写为:,例:use student.dbf in 1use 职工.dbf in 3,如果指定的工作区号为0,则选择空闲的最小号工作区打开表,2. 操作多工作区及区内的表,SELECT| ,当多个表同时打开时,要操作某一个表,首先需要把表所在的工作去选定为当前工作区才能对表进行操作。命令格式:,在工作区打开的表文件名,例:在三个工作区内打开三个表,并指定3号工作区为当前工作区 u

44、se student.dbf in 1 use 职工.dbf in 3 use 仓库.dbf in 110 select 3 & 等价于select 职工,由于当前工作区只有一个,而应用程序中常常又需要同时使用多个表中的数据,VFP 6.0中,用户可以访问在其他工作区中打开的表的数据,方法是非当前工作区的表的字段名前加表名。【格式】表名-字段名 或 表名. 字段名,例:当前工作区为3号工作区,要显示student表当前记录的学生姓名、学号? student.xm, student-xh,4.8.2 表之间的关系,4.8 多表的使用及表之间的关系,表间的关系有两种,即永久关系和临时关系。永久关系

45、存储在数据库文件中,一旦创建,便会一直保存在数据库中,而表间的临时关系并没有保存在数据库中,往往根据操作的需要临时建立,一旦数据库或表关闭,则表间的联系将被取消。 另外,表之间有公共的字段,并且在公共的字段上建立索引,才能建立表之间关系。 一旦建立了表之间的关系,就可以在一个表中方便地访问另一个相关联表中的数据。,建立数据库表间的永久关系主要是在数据库设计器中进行;对关系进行修改、删除等操作也是在数据库设计器中进行。,建立一对一关系 :要求两个表都必须具有相同索引字段,且索引字段为主索引或候选索引,建立一对多关系 : 要求两个表都必须具有相同索引字段,且一方索引字段为主索引或候选索引,多方索引

46、字段为普通索引或唯一索引。,注意:,1、建立永久关系,2、建立临时关系,4.8.2 表之间的关系,4.8 多表的使用及表之间的关系,临时关系可以控制不同表中记录指针的关系。表之间建立临时联系后,当前工作区中移动表的指针,与之相关联的表的指针也按关联条件同步移动。建立临时关系的命令为:,set relation to into | ,在当前工作区的表与工作区号|表名指定的表建立临时关系。,例:通过职工号索引建立职工表与订购单之间的临时关系use 职工.dbf in 1 order 职工号 use 订购单.dbf in 2 order 职工号 set relation to 职工号 into 订购

47、单,可以用set relation to命令取消当前表到所有表的临时关系。如果只是取消某个具体的临时联系,可以使用 set relation off | ,4.8.3设置参照完整性,4.8 多表的使用及表之间的关系,若数据库表已建立永久关系,则可在此基础上设置表间的参照完整性。参照完整性主要用于指定如何处理相关数据表中相应的数据记录 。方法:在数据库设计器中,用鼠标右键单击永久关系连线,然后从弹出的快捷菜单中,执行其中的“编辑参照完整性”命令。该窗口中有3个选项卡,分别设置记录的更新、删除和插入规则。,(1)“更新规则”选项卡用于设置当父表的关键字被修改时如何更改子表中相关的记录。 (2)“删除规则”选项卡用于设置当父表的记录被删除时如何删除子表中相关的记录。 (3)“插入规则”选项卡用于设置在子表中插入记录或更新记录时系统如何处理。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报