张泳《数据库技术原理与应用》第03章-简化.ppt_第1页
张泳《数据库技术原理与应用》第03章-简化.ppt_第2页
张泳《数据库技术原理与应用》第03章-简化.ppt_第3页
张泳《数据库技术原理与应用》第03章-简化.ppt_第4页
张泳《数据库技术原理与应用》第03章-简化.ppt_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

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

文档简介

1、h,第3章 查询与统计,h,3.1 排序与索引,表的记录通常按输入的先后排列,用LIST等命令显示表时将按此顺序输出。若要以另一种顺序来输出记录,便须对表进行排序或索引。排序与索引都能改变记录输出顺序,后者还能决定记录的存取顺序。,h,一、排序 排序就是根据表的某些字段重排记录。排序后将产生一个新表,其记录按新的顺序排列,但原文件不变。 命令格式: SORT TO ON /A | /D /C , /A | /D /C . FOR WHILE FIELDS |FIELDS LIKE | FIELDS EXCEPT ,h,说明: (1)ON子句的字段名表示排序字段,记录将随字段值的增大(升序)或减

2、小(降序)来排序。选项/A和D分别用来指定升序或降序,默认按升序排序。选项C表示不区分字段值中字母大小写,即将同一字母的大写与小写看成一样。 不可选用备注型或通用型字段来排序。 (2)可在ON子句中使用多个字段名实现多重排序,即先按主排序字段排序,对于字段值相同的记录再按第二排序字段排序,依此类推。 (3)缺省、FOR和WHILE等子句表示对所有记录排序。 (4)FIELDS子句指定新表应包含的字段默认包含原表所有字段。,h,示例: (1)将所有非主要设备按照启用日期排序,新表只包含编号、名称、启用日期三个字段。 sort to shb1 on 起用日期 /D fields 编号,名称,起用日

3、期 for .not.主要设备 sort to shb1 on 起用日期 /A fields 编号,名称,起用日期 for .not.主要设备 (2)将主要设备按照部门降序排列,当部门相同按照价格升序排列 sort to shb1 on 部门 /d,价格 for 主要设备,h,二、索引 1、索引的概念 (1)记录的物理顺序与逻辑顺序 文件中的记录一般按其磁盘存储顺序输出,这种顺序称为物理顺序。执行排序后,在新文件中形成了新的物理顺序。 索引排序属于另外一种方法,排序建立索引文件,但它不改变记录的物理顺序,而是按某个索引关键字(或其表达式)来建立记录的逻辑顺序。在索引文件中,所有关键字值按升序或

4、降序排列,每个值对应原文件的一个记录号,这样使确定了记录的逻辑顺序。,h,以价格为关键字段排序后示意,h,索引类似于书的目录索引,目录书页号列表用于指示读者查找书中的特定页码,而数据表的索引是指向特定记录的记录号列表,用于处理如何确定记录的处理顺序。 例如要显示所有记录,系统就依次按索引文件中的记录号取出表中的物理记录,达到按关键字值顺序来列出记录的效果。 虽然排序与索引都以增加一个文件为代价,但索引文件只包括关键字和记录号两个字段,比被索引的表要小得多;索引起作用后,增删或修改表的记录时索引文件会自动更新,故而索引的应用远比排序为广。,h,(2)索引的种类 a、按扩展名来分类: VFP支持复

5、合索引和单索引两类索引文件。前者扩展名为CDX,后者扩展名为IDX。复合索引文件允许包含多个索引,每个索引都有一个索引标识,代表一种记录逻辑顺序。这种索引文件总以压缩方式存储,以便少占存储空间。 复合索引文件又有结构的和非结构的两种。若定义复合索引文件时用户为它取了名字,则其为非结构的,否则为结构的。 打开非结构复合索引文件需使用SET INDEX命令或USE命令中的INDEX子句。结构复合索引文件的主名与表的主名相同,它随表的打开而打开,在添加、更改或删除记录时还会自动维护,在各类索引文件中,选用它最为省事。,h,b、按功能分类: 索引除具有建立记录逻辑顺序的作用外,还按控制是否允许相同的索

6、引关键字值在不同记录中重复出现,或允许在永久关系中建立参照完整性,按照功能其有四种类型的索引,表3.1列出了4种索引功能类型。,h,2、建立索引命令格式: 命令格式: INDEX ON TAG OF FOR COMPACT ASCENDING | DESCENDING CANDIDATE ADDITIVE,h,说明:关键字可用表达式表示。 (1)TO子句适用于建立单索引文件,其主名由指出。TAG子句用于建立复合索引文件及索引标识,或增加索引标识,索引标识由该子句的指出。 该命令默认建立普通索引型索引文件:UNIQUE表示建立唯一索引型索引文件;CANDIDATE表示索引文件是候选索引型,但需与

7、TAG子句同时使用。 (2)COMPACT选项用来指定单索引文件为压缩的。,h,(3)OF选项的用于指定非结构复合索引文件的名字,缺省该选项表示建立结构复合索引文件。 (4)记录逻辑顺序默认为升序,也可用ASCENDING选项表示升序。DESCENDING选项表示降序。 (5)ADDITIVE表示建立本索引文件时并不关闭先前打开的索引文件。,h,示例: (1)建立单索引文件 INDEX ON 名称 TO mcidx SHB,dx,bmdm WHERE (dx.编号=shb.编号) .AND. ; (bmdm.代码=shb.部门) b、查询编号前3位小于038的设备名称及大修费用合计,按照大修合

8、计的费用降序排列 SELECT shb.名称, SUM(dx.费用) FROM shb,dx; WHERE (shb.编号=dx.编号) .AND. LEFT(shb.编号,3)038 GROUP BY dx.编号 ORDER BY 2 DESC 注意:此处由于排序的条件SUM(价格)不能直接使用,此处的2是指排序以查询结果中的第二列作为依据。否则会提示“SQL:找不到列”,h,3、联接方式(T3.5) 联接可以实现两个表的联接,即在一个查询涉及两个以上表时,将其按照一定条件联系在一起进行操作。VFP的SQL可以使用多种类型的联接形式,示例,h,SELECT a1.d1,a2.d2 FROM

9、a1 INNER JOIN a2 ON a1.d1=a2.d2 SELECT a1.d1,a2.d2 FROM a1 LEFT JOIN a2 ON a1.d1=a2.d2 SELECT a1.d1,a2.d2 FROM a1 RIGHT JOIN a2 ON a1.d1=a2.d2 SELECT a1.d1,a2.d2 FROM a1 FULL JOIN a2 ON a1.d1=a2.d2,h,二、查询设计器 用户可通过VFP提供的查询设计器来进行数据查询。查询设计器产生的查询结果除可当场浏览外,还有多种输出方式。查询设置也可以保存在文件中,供以后打开查询设计据使用或修改。 1、查询设计器的

10、操作步骤 “打开查询设计器”-“进行查询设置”(即设置被查询的表、联接条件、字段等输出要求和查询结果的去向)-执行查询-保存查询设置。 2、查询设计器的组成 上部窗格 下部窗格 查询菜单,h,三、查询结果的图形化处理 在VFP中允许将查询结果以图形化的方式输出,使用图形化输出方式应注意以下问题: (1)_gengraph:_gengraph为一系统变量,用于给定图形向导所在位置。 (2)要输出图形必须选定两个以上字段,其中至少有一个为数值字段。 (3)输出结果保存到表单文件中,以后可以调用。,h,3.6 数据库与视图,一、数据库 1、数据库的基本概念 当数据结构较为简单时,如为个人保存一个亲友

11、通信录,建一个自由表就可以了。它通常单独使用,与其它表的数据没有多少联系。 但数据结构比较复杂,如果为工厂开发一个人事管理系统,一个表很可能不够了,需要建立多个表。以前的例子中多次提到过的SHB.DBF,BMDM.DBF,ZZ.DBF等表就是例子,各表中包含的数据相互具有这样那样的联系。,h,h,若把它们集中到一个数据库中,并且在各表之间建立若于固定的关系(关联),管理与使用就更加方便了。这类从属某一数据库的表统称为数据库表(简称库表)。 一个较大的应用项目可以创建若干个数据库,每个数据库可定义一组数据库表,然后用一定的关系将它们相互联接。,h,2、用数据库设计器设计数据库 (1)数据库设计器

12、 数据库设计器是VFP提供的一种辅助设计窗口,它能显示当前数据库全部的表、视图相关系,并让用户操作这些对象。 当数据库设计器窗口激活时,格伴随出现“数据库”菜单和数据库设计器工具栏。 若用命令来打开数据库表.则不需打开数据库设计器,也不需了解数据库是否打开。,h,(2)数据库的创建 数据库创建可以通过菜单命令或 CREATE DATABSE 来进行。 (3)数据库的关闭与删除 CLOSE DATABASE ALL:关闭所有的数据库。 DELETE DATABASE DELETETABLES:当包含DELETETABLES子句时删除表示的数据库及其中的表,否则仅删除数据库,并将它的表变为自由表。

13、应该注意,若要删除数据库必须先关闭它。 REMOVE TABLES;从数据库中移去表,被移去的表变为自由表。,h,(4)数据库文件 数据库创建后将保存在扩展名为.DBC数据库文件中。 该文件本身也是一个表,其中记载了它的所有表的参数,及索引、关联等有关参数。可以使用USE命令将其打开。如:use 数据1.dbc就可以打开名字为数据1的数据库文件,h,二、数据字典 数据词典用于保存对数据库中各种数据的定义或设置信息,包括表的属性、字段属性、记录规则、表间关系,以及参照完整性(Referential Integrity,简称RI)等。 这些属性或信息均可通过数据库设计器来设置、显示或修改,并且由系

14、统保存在数据词典中。直到相关的表从数据库中移去为止。 需要指出。当设计自由表时,表设计器也用来设置字段、索引和表的各种属性。但若所设计的是数据库表,其设置起来的内容比起自由表来将丰富得多。,h,h,1、长名(表名/字段名)与注释 为了方便书写,表和字段通常使用较短的名称(VFP规定字段名最长不超过10个字符)。同时,VFP允在数据字典中为表/字段设置不超过128个字符的长名,以及对表/字段增加适当的注释。 长表名/长宇段名一般能在浏览窗口或各种设计器(例如数据库设计器、查询设计器和即将介绍的视图设计器)的标题栏内显示,而注释则通常出现在项目管理器中。例如当用户打开项目管理器,从中选定一个表或从

15、表的字段列表框中选定了一个字段后,在项目管理器的底部就会出现事先巳在数据词典中设置的注释,使用户参阅。 注意,数据库表仅在创建时可采用长表名。,h,2、设置字段属性 (1)格式 指定表达式,使得在“浏览”窗口、表单或报表中,确定字段显示时的大小写、字体大小和样式。 (2)输入掩码 显示区的输入掩码文本框用于键入输入掩码,借以指定字段的输入格式,限制输入数据的范围,控制输入的正确性。 输入掩码可以是以下字符: X 允许输入字符 9 允许输入数字 # 允许的入数字.空格.十,一 $ 显示SET CURRENCY命令指出的货币号 * 在指定宽度中,值左显示星号 . 指出小数点位置 , 用逗号分隔小数

16、点左的数字 与格式文本框不同,输入掩码必须按位来指定格式。,h,(3)标题 显示区的标题文本框用于为浏览窗口、表单或报表中的字段标签键入表达式。例如在图3.32所示的标题文本框键入了设备编号字佯,所以在浏览窗口中,编号字段的列标题也将显示为设备编号。 (4)字段验证 字段验证区包含3个文本框,各文本框均可直接键入数据钮显示出表达式生成器对话框,在其中进行设置。也可通过其右边的对话按规则则文本框用于输入对字段数据有效性进行检查的规则、它实际上是一个条件。 信息文本框用于指定出错提示信息,当该字段辅人的数据违反条件时,出错信息将照此显示。 默认值文本框用于指定字段的默认值。当增加记录时,字段默认值

17、会在新记录中显示出来,从而提高输入速度。,h,3、设置记录规则 (1)记录验证 记录级有效性检查规则用来检查同一记录中不同字段之间的逻辑关系。 规则文本框:用于指定记录级有效性检查规则,光标离开当前记录时进行校验。 信息文本框:用于指定出错提示信息。在校验记录级有效性规则时,发现输入与规则不符时该信息将会显示出来。,h,(2)触发器 表选项卡中的3个触发器,分别用于指定记录插入、更新、删除的规则。 插入触发器:用于指定一个规则,每次向表中插入或追加记录时该规则被触发检查插入的记录是否满足规则。 更新触发器:用于指定一个规则,每次更新记录时触发该规则。 删除触发器:用于指定一个规则,每次向表中删

18、除记录(打上删除标记)时触发该规则。,h,4、主索引和永久关系 (1)主索引 在建立索引时,若打开的是数据库表,组合框中将列出包括主索引在内的4种索引类型。主索引的作用有两个:一是主索引不允许出现重复值.发现重复值会禁止存盘,故可用作主关键字。二是主索引可用于建立永久关系,从而建立参照完整性。 建立主索引的方法参见索引部分。 (2)永久关系与临时关系 永久关系是数据库表之间的关系,在数据库设计器中表现为表索引之间的连线。连线的一端为一根,另一端为三根,分别代表一多关系的一端与多端。永久关系建立后存储在数据库文件(DBC)中,只要不作删除或变更就一直保留。永久关系在查询和视图中能自动成为联接条件

19、;能作为表单和报表的默认关系,并显示在数据环境设计器中,允许建立参照完整性。,h,与永久关系相区别,以前建立的关系可称为临时关系。临时关系仅用于关联,即控制关联表的记录指针有序移动,永久关系在查询和视图中则起联接作用。 利用数据库设计器来建立永久关系.只要在数据库表间进行连线,而删除永久关系也只需去掉连线。连线规则为:在数据库设计器中,从一个表的主索引或候选索引拖到另一表的任一索引(即出现表间连线)。,h,5、参照完整性 上文已介绍过数据库表的字段级和记录级验证规则,参照完整性则属子表间规则, 对于永久关系的相关表,在更新、插入或删除记录时如果只改其一不改其二,就会影响数据的完整性:例如修改父

20、表中关键字值后,子表关键字值未作相应改变;删除父去的某记录后,子表的相应记录未删除,致使这些记录成为孤立记录;对于子表插入的记录、父表中没有相应关键字值的记录,等等。 对这些涉及表间数据的完整性,统称为参照完整性(R1)。 为保持参照完整性,可用手工调整,或执行一段自编的程序来调整。VFP提供了参照完整性规则,用户可以利用参照完整性生成器来选择要否保持参照完整性,并可控制在相关表中更新、插入或删除记录。,h,(1)RI生成器窗口的打开 从数据库设计器快捷菜单选择编辑参照完整性命令。 选择数据库菜单中的编辑参照完整性命令。 任数据库设计器中双击两个表之间的连线.并在编辑关系对话框中选定参照完整性

21、按钮。,h,(2)RI生成器窗口的组件 RI生成器窗口具有更新规则、删除规则和插入规则3个选项卡选项按钮和一个表格。 更新规则选项卡用于指定修改父表中关健字值时所用的规则。 删除规则选项卡用于指定删除父表中的记录时所用的规则。 插入规则选项卡用于制定在子表中插入新记录和更新已存在的记录时所用的规则。,h,各项按钮的具体功能解释如表3.7所示。 RI生成器窗口的表格表达了表的联接情况及是否要保持参照完整性的规则。 其中: 父表列、子表列分别显示联接表的父表名、子表名; 父记号列显示父表的索引关键字名,关键字可以是主索引字段或候选索引字段; 子记号列显示子表的索引标识名,更新列、删除列和插入规则显

22、示所选定选项按钮的名称,若单击这些列的单元格,会出现一个组合框,供用户选择级联、限制和忽略等功能。 (3)参照完整性设置步骤 选定某一规则选项卡选定某一选项按钮在表格中选定某行并设置两表的联接浏览有关表的内容,检验设置的正确性,h,示例: 如将BMDM与SHB的更新关系设置为限制,当修改表中记录时会出现如下情况:,h,三、视图 视图是从已有的数据库表或其它视图中抽配得来的一个虚拟表。这些数据在数据库中并不实际存储,仅在其数据词典中存储视图的定义。但视图一经定义,就成为数据库的组成部分,可以像数据库表一样接受用户的查询。如果在视图中会有取自远程数据源(例如网络服务器)的数据,则该视图为远程视图;否则为本地视图。,h,1、视图的创建 (1)用CREATE SQL VIEW命令来创建 命令格式: CREATE VIEW REMOTE CONNECTION SHARE|AS SQL SELECT 命令 功能:按照AS句中的SELECT SQ

温馨提示

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

评论

0/150

提交评论