版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库原理,2005版,适用于工程管理、土地资源管理专业
第3章查询与统计
数据库原理,2005版,适用于工程管理、土地资源管理专业
§3.1排序与索引
表的记录通常按输入的先后排列,用LIST等命令显示表时将按此顺序输出。若要以另一种顺序来输出记录,便须对表进行排序或索引。排序与索引都能改变记录输出顺序,后者还能决定记录的存取顺序。数据库原理,2005版,适用于工程管理、土地资源管理专业一、排序排序就是根据表的某些字段重排记录。排序后将产生一个新表,其记录按新的顺序排列,但原文件不变。命令格式:
SORTTO<新表名>ON<字段名1>[/A|/D][/C][,<字段名2>[/A|/D][/C]...][<范围>][FOR<条件1>][WHILE<条件2>][FIELDS<字段名表>|FIELDSLIKE<通配字段名>|FIELDSEXCEPT<通配字段名>]
数据库原理,2005版,适用于工程管理、土地资源管理专业说明:(1)ON子句的字段名表示排序字段,记录将随字段值的增大(升序)或减小(降序)来排序。选项/A和/D分别用来指定升序或降序,默认按升序排序。选项/C表示不区分字段值中字母大小写,即将同一字母的大写与小写看成一样。
不可选用备注型或通用型字段来排序。(2)可在ON子句中使用多个字段名实现多重排序,即先按主排序字段<宇段名l>排序,对于字段值相同的记录再按第二排序字段<字段名2>排序,依此类推。(3)缺省<范围>、FOR<条件1>和WHILE<条件2>等子句表示对所有记录排序。(4)FIELDS子句指定新表应包含的字段.默认包含原表所有字段。数据库原理,2005版,适用于工程管理、土地资源管理专业
示例:(1)将所有非主要设备按照启用日期排序,新表只包含编号、名称、启用日期三个字段。
sorttoshb1on起用日期/Dfields编号,名称,起用日期for.not.主要设备
sorttoshb1on起用日期/Afields编号,名称,起用日期for.not.主要设备(2)将主要设备按照部门降序排列,当部门相同按照价格升序排列
sorttoshb1on部门/d,价格for主要设备数据库原理,2005版,适用于工程管理、土地资源管理专业二、索引
1、索引的概念(1)记录的物理顺序与逻辑顺序文件中的记录一般按其磁盘存储顺序输出,这种顺序称为物理顺序。执行排序后,在新文件中形成了新的物理顺序。索引排序属于另外一种方法,排序建立索引文件,但它不改变记录的物理顺序,而是按某个索引关键字(或其表达式)来建立记录的逻辑顺序。在索引文件中,所有关键字值按升序或降序排列,每个值对应原文件的一个记录号,这样使确定了记录的逻辑顺序。
数据库原理,2005版,适用于工程管理、土地资源管理专业
索引类似于书的目录索引,目录书页号列表用于指示读者查找书中的特定页码,而数据表的索引是指向特定记录的记录号列表,用于处理如何确定记录的处理顺序。例如要显示所有记录,系统就依次按索引文件中的记录号取出表中的物理记录,达到按关键字值顺序来列出记录的效果。虽然排序与索引都以增加一个文件为代价,但索引文件只包括关键字和记录号两个字段,比被索引的表要小得多;索引起作用后,增删或修改表的记录时索引文件会自动更新,故而索引的应用远比排序为广。数据库原理,2005版,适用于工程管理、土地资源管理专业以价格为关键字段排序后示意数据库原理,2005版,适用于工程管理、土地资源管理专业(2)索引的种类a、按扩展名来分类:
VFP支持复合索引和单索引两类索引文件。前者扩展名为CDX,后者扩展名为IDX。复合索引文件允许包含多个索引,每个索引都有一个索引标识,代表一种记录逻辑顺序。这种索引文件总以压缩方式存储,以便少占存储空间。复合索引文件又有结构的和非结构的两种。若定义复合索引文件时用户为它取了名字,则其为非结构的,否则为结构的。打开非结构复合索引文件需使用SETINDEX命令或USE命令中的INDEX子句。结构复合索引文件的主名与表的主名相同,它随表的打开而打开,在添加、更改或删除记录时还会自动维护,在各类索引文件中,选用它最为省事。数据库原理,2005版,适用于工程管理、土地资源管理专业b、按功能分类:索引除具有建立记录逻辑顺序的作用外,还按控制是否允许相同的索引关键字值在不同记录中重复出现,或允许在永久关系中建立参照完整性,按照功能其有四种类型的索引,表3.1列出了4种索引功能类型。数据库原理,2005版,适用于工程管理、土地资源管理专业2、建立索引命令格式:命令格式:INDEXON<索引关键字>TO<单索引文件名>|TAG<索引标示>[OF<复合索引文件名>][FOR<条件>][COMPACT][ASCENDING|DESCENDING][UNIQUE|CANDIDATE][ADDITIVE]
数据库原理,2005版,适用于工程管理、土地资源管理专业说明:关键字可用表达式表示。(1)TO子句适用于建立单索引文件,其主名由<单索引文件名>指出。TAG子句用于建立复合索引文件及索引标识,或增加索引标识,索引标识由该子句的<索引标识名>指出。该命令默认建立普通索引型索引文件:UNIQUE表示建立唯一索引型索引文件;CANDIDATE表示索引文件是候选索引型,但需与TAG子句同时使用。(2)COMPACT选项用来指定单索引文件为压缩的。数据库原理,2005版,适用于工程管理、土地资源管理专业
(3)OF选项的<复合索引文件名>用于指定非结构复合索引文件的名字,缺省该选项表示建立结构复合索引文件。(4)记录逻辑顺序默认为升序,也可用ASCENDING选项表示升序。DESCENDING选项表示降序。(5)ADDITIVE表示建立本索引文件时并不关闭先前打开的索引文件。数据库原理,2005版,适用于工程管理、土地资源管理专业示例:(1)建立单索引文件
INDEXON名称TOmcidx&&以名称为关键字
INDEXON编号TObhidx&&以编号为关键字(2)建立复合索引文件
INDEXON名称TAGmcDESC&&以名称为关键字,降序排列
INDEXON部门+STR(价格,9,2)TAGBMJG&&以部门和价格组合进行索引,注意类型应匹配,索引顺序是首先按照部门排序,部门相同再按照价格排序
INDEXONVAL(部门)-价格/1000000TAGBMJG1
以上具体参见P72。数据库原理,2005版,适用于工程管理、土地资源管理专业
也可以用表设计器建立索引,用表设计器建立或修改索引的方法有两种:其一,在字段选项卡索引列的组合框中选定向上箭头为升序索引,向下筋头为降序索引,该行字段为索引关键字。单击索引列的字段将会显示组合框。其二,使用索引选项卡。该选项卡中可键入关键字表达式。还可选择索引类型。字段选项卡中建立的索引也能在此选项卡显示出来。用户也可在表达式列表框中或索引选项卡表达式列的文本框中直接键入表达式。结构化索引会显示在表设计器中。数据库原理,2005版,适用于工程管理、土地资源管理专业3、索引的使用要利用索引查询,必须同时打开表与索引文件。一个表可以打开多个索引文件,同一个复合索引文件中也可能包含多个索引标识,但任何时候只有一个索引文件能起作用,在复合索引文件中也只有一个索引标识能起作用。当前起作用的索引文件称为主控索引文件,当前起作用的索引标识称为主控索引。也就是说,实现索引查询必须满足以下的条件,即:打开表;打开索引文件;确定主控索引文件;对于复合索引文件还须确定主控索引。数据库原理,2005版,适用于工程管理、土地资源管理专业(1)打开和关闭索引文件若当前仅有一个索引文件被打开.它就成为主控索引文件。索引刚建立时,索引文件呈打开状态且成为主控索引文件,若当前已打开了多个索引文件,可通过SETINDEX命令来确定主控索引文件。除结构复合索引能随着表的打开而打开外,其它索引文件必须用命令显式打开。表关闭时索引文件随之关闭。数据库原理,2005版,适用于工程管理、土地资源管理专业
命令格式:
SETINDEXTO[<索引文件名表>][ADDITIVE]
功能:打开当前表的一个或多个索引文件并确定主控索引文件。说明;<索引文件表>中第一个索引文件为主控索引文件。该命令常用于打开单索引文件。若缺省所有选项,即仅用SETINDEXTO,将关闭当前工作区中除结构复合索引文件外的所有索引文件,同时取消主控索引。若缺省ADDITIVE选项.则在用本命令打开索引文件时.除结构复合索引文件以外的索引文件均被关闭。命令“USE<文件名>INDEX(索引文件表)”也可在打开表的同时打开索引文件,并确定(索引文件表)中的第一个索引文件为主控索引文件。数据库原理,2005版,适用于工程管理、土地资源管理专业
(2)确定主控索引复合索引文件中当前建立的索引标识自动成为主控索引,表重新打开时尽管复合索引文件已自动打开,还须确定主控索引。下面的命令用来确定主控索引,也能确定主控索引文件。命令格式:SETORDERTO[<数值表达式>|<单索引文件名>|[TAG]<索引标示>[OF<复合索引文件名>][ASCENDING|DESCENDING]]系统先为各单索引文件编号,故结构复合索引文件的序号比单索引文件大。<单索引文件名>指定该单索引文件为主控索引文件。<索引标识>指定该索引标识为主控索引。SETORDERTO或SETORDERTO0命令取消主控索引文件及主控索引中记录将按物理顺序输出。数据库原理,2005版,适用于工程管理、土地资源管理专业示例:分别使用刚刚建立的索引setordertobmjgsetordertojgsetordertobmjg1SETINDEXTOmcidx数据库原理,2005版,适用于工程管理、土地资源管理专业
(3)删除索引
a、删除索引文件若用删除文件命令来删除索引文件,须遵循先关闭后删除的原则,这与删除表类似。
b、删除索引标识命令格式:DELETETAG<索引标识1>[OFCDXFileName1][,<索引标识2>[OFCDXFileName2]]...-or-DELETETAGALL
功能:删除打开的结构复合索引文件的索引标识。说明;ALL子句用于删除结构复合索引文件的所有索引标识;索引标识都被删除,则该索引文件也已删除。数据库原理,2005版,适用于工程管理、土地资源管理专业4、索引的更新(1)自动更新当表中的数据发生变化时(例如对它进行插入、删除、添加或更新操作之后)时,己打开的索引文件都会随数据的改变自动改变记录的逻辑顺序.实现索引文件的自动更新。(2)重新索引若未确定主控索引文件或主控索引,修改表的记录时索引文件就不会自动更新。如果仍要维持记录的逻辑顺序,可用REINDEX命令重建索引,其命令格式为:REINDEX[COMPACT]
也可以用INDEXON命令重新建立索引。数据库原理,2005版,适用于工程管理、土地资源管理专业§3.2查询命令
查询,即按照指定条件在表中查找所需的记录。本节将介绍两种传统的查询方法:顺序查询和索引查询。VFP还支持在VFP环境中直接使用SQL型的查询命令,即SELECT—SQL命令。一、顺序查询命令顺序查询包括LOCATE和CONTINUE两条命令。命令格式;
LOCATEFOR<条件表达式>[范围][WHILE<条件>][NOOPTIMIZE]
功能:搜索满足<条件>的第一个记录。若找到,记录指针就指向该记录;若表中无此记录,搜索后VFP主屏幕的状态条中将显示“已到定位范围末尾”。表示记录指针指向文件末尾。数据库原理,2005版,适用于工程管理、土地资源管理专业二、索引查询命令顺序查询速度较慢,适用于记录数较少的表。索引查询速度很快,但其算法要求表的记录是有序的,这就需要事先对表进行索引或排序。
SEEK和FIND两条命令均可用来进行索引查询。FIND是为了与旧版本兼容而保留的,SEEK的用法更灵活。命令格式:
SEEK<表达式>
功能:在已确定主控索引的表中按索引关键字搜索满足<表达式>值的第一个记录。若找到,记录指针就指向该记录;找不到该记录则在主屏幕的状态条中显示“没有找到”。数据库原理,2005版,适用于工程管理、土地资源管理专业
特别提示:
A、在使用LOCATE,GONTINUE,SEEK,FIND查询数据时,若查到,FOUND函数就返回.T.,否则返回.F.。
B、对于字符表达式,系统允许模糊查询,即只要字符表达式值与索引关键字值左子串相同,就认为找到。命令“SETEXACTON/OFF”用于设置匹配环境,ON表示完全匹配,用于精确查询;OFF表示模糊匹配,系统默认OFF。运算符==和=有类似的功能,前者表示完全匹配,后者表示模糊匹配。
数据库原理,2005版,适用于工程管理、土地资源管理专业示例:
locatefor名称="车"dispcontdisplocatefor名称=="车"SETEXACTONLocatefor名称="车"dispcont数据库原理,2005版,适用于工程管理、土地资源管理专业§3.3数据工作期
数据工作期是一个用来设置数据工作环境的交互换作窗口。所设置的环境可以包括打开的表及其索引,多个表之间的关联等状态。例如执行下述命令序列:
USESBINDEXON编号TAGbh
就设置了一种环境,它可供用户对按照“编号”索引了的SB.DBF进行索引查询。若设置的环境包括了多个相互关联的表.就可用于多表查询。数据库原理,2005版,适用于工程管理、土地资源管理专业利用数据工作期来建立环境还有以下优点:(1)直接用命令来建立环境需有一定的经验,而数据工作期窗口对操作有向导作用,显得比较方便。(2)在数据工作期设置的环境可以作为视图文件保存起来,需要时将视图文件打开就能恢复它所保存的环境,若用户建立了多个试图文件,需要某个环境时只要打开相应的视图文件便可。数据库原理,2005版,适用于工程管理、土地资源管理专业一、多工作区的查询
1、设备管理使用的4个表实际应用中常需同时查询多个表的数据,以设备管理为例,其中至少应设计四个表,除SHB.DBF(P39)与DX.DBF(P65)外,还有BMDM.DBF和增值表ZZ.DDF。
数据库原理,2005版,适用于工程管理、土地资源管理专业2、工作区(l)工作区号表打开后才能进行操作,实际上打开表就是把它从磁盘调入内存的某一个工作区。VFP提供了32767个工作区,编号从1到32767。每个工作区只允许打开一个表,在同一工作区打开另一个表时,以前打开的表就会自动关闭。反之,一个表只能在一个工作区打开,在其未关闭时若试图在其它工作区打开它,VFP会显示信息框提示出错信息“文件正在使用”。
数据库原理,2005版,适用于工程管理、土地资源管理专业(2)别名前10个工作区除使用1—10为编号外,还可依次用A-J为工作区别名。其实表也有别名,并可用命令“USE<文件名>ALIAS<别名>”来指定。例如命令“USESBALIASSEBEI”即指定SEBEI为SB.DBF的别名。若未对表指定别名,则表的主名将被默认为别名,例如命令“USESB”表示SB.DBF的别名也是SB。数据库原理,2005版,适用于工程管理、土地资源管理专业(3)选择工作区命令格式:SELECT<工作区号>|<别名>
功能:选定某个工作区,用于打开一个表。用SELECT命令选定的工作区称为当前工作区,VFP默认1号工作区。函数SELECT()能够返回当前工作区的区号。引用非当前工作区表的字段:别名.字段名。命令“SELECT0”表示选定当前尚未使用的最小号工作区,该命令使用户不必记亿工作区号,以后要切换到某工作区,只要在SELECT命令中使用表的别名便可。注意,只有已打开的表方可在SELECT命令中使用其别名。命令“USE<表名>IN<工作区号>|<别名>”能在指定的工作区打开表,但不改变当前工作区,要改变工作区仍需使用SELECT命令。数据库原理,2005版,适用于工程管理、土地资源管理专业示例:分别在1,2,3,4工作区中分别打开几个表
useshbselec2usedxselecselec3usebmdmselect4usezz数据库原理,2005版,适用于工程管理、土地资源管理专业
二、数据工作期数据工作期是一个用来设置数据工作环境的交互换作窗口。所设置的环境可以包括打开的表及其索引,多个表之间的关联等状态。数据工作期窗口可用菜单操作方式或命令工作方式打开和关闭。数据库原理,2005版,适用于工程管理、土地资源管理专业
数据工作期窗口用于设置工作环境,它包括3个部分。左边的别名列表框用于显示迄今已打开的表,并可从多个表中选定一个当前表。右边的关系列表框用于显示表之间的关联状况。
数据库原理,2005版,适用于工程管理、土地资源管理专业中间一列的6个功能按钮,其功能如下;(1)属性按钮:用于打开工作区的属性对话框,对表进行多种设置与表菜单(打开浏览窗口即出现)的属性命令功能相同。选定其修改按钮会出现表设计器,可用于修改当前表的结构、建立或修改索引;在索引顺序组合框中可选择主控索引;通过其字段筛选按钮与数据过滤区文本框还可设置字段表与过滤器。当选定允许缓冲复选框后,还可对多用户操作进行记录锁定,并可设置记录缓冲还是表缓冲。在多用户环境中,修改记录前进行记录锁定能防止因其它用户访问发生冲突。但编辑时锁定(保守式缓冲)与写入时锁定(开放式缓冲)来比较,显然前者降低了系统运行速度。“当前记录”表示仅缓冲当前记录(记录缓冲),而“所有编辑过的记录”指缓冲所有编辑过的记录(表缓冲),显然前者能使系统运行较快。数据库原理,2005版,适用于工程管理、土地资源管理专业
(2)浏览按钮:为当前表打开浏览窗口,供浏览或编辑数据。(3)打开按钮;弹出打开对话框来打开表;若某数据库已打开,还可打开数据库表。(4)关闭按钮:关闭当前表。(5)关系按钮:以当前表为父表建立关联。(6)一对多按钮:系统默认表之间以多一关系关联,若要建立关系,可单击这一按钮,这与SETSKIPTO命令等效。数据库原理,2005版,适用于工程管理、土地资源管理专业
三、视图文件
1、视图文件的建立视图文件可通过菜单操作或执行命令来建立,分述如下:(1)菜单操作数据工作期未关闭时,可选定文件菜单的“另存为”命令来建立视图文件,系统默认视图文件的扩展名为.VUE。注意。若浏览窗口打开着则文件菜单的“另存为”命令以淡色显示而无法选用。数据库原理,2005版,适用于工程管理、土地资源管理专业(2)命令操作命令格式:
CREATEVIEWFileName
功能:为VFP的当前数据工作环境建立一个视图文件。2、视图文件的打开打开视图文件意味着恢复环境,相当于重新执行一系列先前设置的命令。数据库原理,2005版,适用于工程管理、土地资源管理专业
四、表的关联
1、关联的概念每个打开的表都有一个记录指针,用以指示当前记录。所谓关联,就是令不同工作区的记录指针建立一种临时的联动关系,使一个表的记录指针移动时另一个表的记录指针能随之移动。其主要是在查询多个表中的数据的时候使用。(1)关联条件建立关联的两个表,总有一个是父表,一个为子表。在执行涉及这两个表数据的命令时,父表记录指针的移动,会使子表记录指针自动移到满足关联条件的记录上。
关联条件通常要求比较不同表的两个字段表达式值是否相等,所以除要在关联命令中指明这两个字段表达式外,还必须先为子表的字段表达式建立索引。
数据库原理,2005版,适用于工程管理、土地资源管理专业(2)多一关系按照通过不同表的两个字段表达式值相等来实现关联的原则,若出现父表有多条记录对应子表中一条记录的情况,便称这种关联为多一关系。(3)一多关系
按照同样的实现关联的原则,若出现父表的一条记录对应子表中多条记录的情况,这种关联称为一多关系。
VFP关联不处理“多多关系”,若出现“多多关系”则需将其中的一个表进行分解,然后以多一关系或一多关系处理。
数据库原理,2005版,适用于工程管理、土地资源管理专业
数据库原理,2005版,适用于工程管理、土地资源管理专业2、在数据工作期窗口建立关联在数据工作期窗口可以建立关联、此时的一般步骤为:(1)打开需建立关联的表。(2)为子表按关联的关键字建立索引或确定主控索引。(3)选定父表工作区为当前工作区,并与一个或多个子表建立关联。(4)说明建立的关联为一多关系。缺省本步骤默认为多一关系。数据库原理,2005版,适用于工程管理、土地资源管理专业3、用命令来建立关联(1)建立关联命令命令格式:
SETRELATIONTO[<表达式1>INTO<别名1>,…<表达式n>INTO<别名n>][ADDITIVE]]
功能:以当前表为父表与其它一个或多个子表建立关联。说明:<表达式>用来指定父表的字段表达式,其值将与子表的索引关因字值对照者是否相同。<别名>表示子表或其所在的工作区。ADDITIVE保证在建立关联时不取消以前建立的关联。数据库原理,2005版,适用于工程管理、土地资源管理专业
(2)说明一多关系的命令命令格式:
SETSKIPTO[TableAlias1[,TableAlias2]...]
功能;用在SETRELATION命令之后说明已建关联的性质为一多关系。说明:<表别名>表示在一多关系中位于多方的子表或其所在的工作区。不带可选项的命令“SETSKIPTO”用于取消一多关系,但SETRELATION命令建立的多一关系的关联仍继续存在。数据库原理,2005版,适用于工程管理、土地资源管理专业示例:数据库原理,2005版,适用于工程管理、土地资源管理专业1、建立shb何bmdm的关联关系
useshbsetordertotagbm&&注意,应已经建立了索引
select2usebmdmsetordertotagbmselect1setrelationtoshb.部门intobmdm&&建立关联
browfieldsshb.编号,shb.名称,bmdm.名称数据库原理,2005版,适用于工程管理、土地资源管理专业2、建立bmdm和shb的关联关系
usebmdmsetordertotagdmselect2useshbsetordertotagbmselect1setrelationtobmdm.代码intoshbbrowfieldsshb.编号,shb.名称,bmdm.名称
setskiptoshbbrowfieldsshb.编号,shb.名称,bmdm.名称
注意:在设置setskipto(建立一对多关系前后显示内容的不同)数据库原理,2005版,适用于工程管理、土地资源管理专业§3.4统计命令
一、计数命令命令格式:COUNT[<范围>][FOR<条件>][WHILE<条件>][TO<内存变量名>]
功能:计算指定范围内满足条件的记录数。(1)通常记录数显示在主窗口的状态条中.使用to子句还能将记录数保存到<内存变量>中,便于以后引用。(2)缺省范围是表的所有记录。数据库原理,2005版,适用于工程管理、土地资源管理专业二、求和命令命令格式
SUM[(数值表达式表)][<范围)][FOR(条件1>][WHILE<条件2)][T0(内存变量表>\ARRAY<数组>]
功能:在打开的表中,对<数值表达式表>的各个表达式分别求和。(1)<数值表达式表>中各表达式的和数可依次存入<内存变量表>或数组表达式表,则对当前表所有的数值表达式分别求和。(2)缺省<范围>指表中所有记录。数据库原理,2005版,适用于工程管理、土地资源管理专业
三、求平均值命令命令格式:
AVERAGE[<数值表达式表>][<范围>][FOR<条件1>][WHHILE<条件2>][T0<内存变量表>|ARRAY<数组>]
功能:在打开的表中,对<数值表达式表>中的各个表达式分别求平均值。
数据库原理,2005版,适用于工程管理、土地资源管理专业四、计算命令
CALCULATE命令用于对表中的字段进行财经统计,其计算主要由函数来完成。命令格式:
CALCULATE<表达式表>[<范围>][FOR<条件1>][WHHILE<条件2>][T0<内存变量表>|ARRAY<数组>]
功能:在打开的表中,分别计算<表达式表>的表达式。注意:表达式中至少须包含系统规定的8个函数之一。其中常用的函数有AVG(<数值表达式>)、CNT()、MAX(<表达式>)、MIN(<表达式>)、SUM(<数值表达式>)等5个。这5个函数的功能与表3.4所列一致,仅计算记录数函数CNT()的格式与表3.4的COUNT不一样。另3个函数为NPV,STD和VAR。数据库原理,2005版,适用于工程管理、土地资源管理专业
五、汇总命令汇总命令可对数据进行分类合计。例如工资计算系统中可能要按部门汇总工资,库存管理系统中可能要按车间汇总零件金额等。命令格式:
TOTALTO<文件名>ON<关键字>[FIELDS<数值型字段表>][<范围>][FOR<条件1>][WHILE<条件2>]
功能;在当前表中,分别对<关键字>值相同的记录的数值型字段值求和,并将结果存入一个新表。一组关键字值相同的记录在新表中产生一个记录;对于非数值型字段.只将关键字值相同的第一个记录的字段值放入该记录。说明:(1)<关键字>指排序字段或索引关键字,即当前表必须是有序的,否则不能汇总。(2)FIELDS子句的<数值型字段表>指出要汇总的字段。若缺省,则对表中所有数值型字段汇总。(3)缺省<范围>指表中所有记录。数据库原理,2005版,适用于工程管理、土地资源管理专业§3.5SELECT—SQL查询SELECT—SQL是从SQL语言移植过来的查询命令,具有强大的单表与多表查询功能。VFP支持在命令窗口直接使用SELECT—SQL命令,也允许通过一种称为“查询设计器”的窗口来设计查询步骤、生成查询文件,然后运行定制的查询。VFP还允许将查询结果以图形的形式输出。数据库原理,2005版,适用于工程管理、土地资源管理专业
一、用SELECT—SQL命令直接查询
1、SELECT—SQL的命令格式命令格式SELECT[ALL|DISTINCT][<别名>.]<Select表达式[AS<别名>][,<别名>.]<Select表达式>[AS<别名>...]FROM[FORCE][<数据库名>!]<表名>[[AS]<本地名>][[INNER|LEFT[OUTER]|RIGHT[OUTER]|FULL[OUTER]JOIN<数据库名>!]<表名>[[AS]<本地名>][ON<联接条件>…][[INTO<目标>]|[TOFILE<文件名>[ADDITIVE]|TOPRINTER[PROMPT]|TOSCREEN]][PREFERENCE<名字>][NOCONSOLE][PLAIN][NOWAIT]数据库原理,2005版,适用于工程管理、土地资源管理专业[WHERE<联接条件>[AND<联接条件>...][AND|OR<筛选条件>[AND|OR<筛选条件>...]]][GROUPBY<组表达式>[,<组表达式>...]][HAVING<筛选条件>][UNION[ALL]<SELECT命令>][ORDERBY<关键字表达式>[ASC|DESC][,<关键字表达式>[ASC|DESC]...]][TOP<数值表达式>[PERCENT]]数据库原理,2005版,适用于工程管理、土地资源管理专业
说明:(1)SELECT子句;ALL表示选出的记录中包括重复记录,这是缺省值;DISTINCT则表示选出的记录中不包括重复记录。
[<别名>.]<SELECT表达式>[As<列名>]:<SELECT表达式>可以是字段名,也可以包含用户自定义函数和如表3.3所示的系统函数(主要有:AVG、COUNT、MIN、MAX、SUM等)。<别名>是字段所在的表名,<列名>用于指定输出时使用的列标题,可以不同于字段名。当SELECT表达式中包含上述函数时,输出行数不一定与表的记录数相同。
SCLECT表达式可用一个*号来表示,此时指定所有的字段。数据库原理,2005版,适用于工程管理、土地资源管理专业
(2)FROM子句及其选项:用于指定查询的表与联接类型。选择工作区与打开<表名>所指的表均由VFP自行安排。对于非当前数据库,用“<数据库名>!<表名>”来指定该数据库中的表。<本地名>是表的暂用名,取了本地名后,本命令中该表只可使用这个名字。
JOIN关键字:用于联接其左右两个<表名>所指的表。
INNER|LEFT[OUTER]|RIGHT[OUTER]|FULL[OUTER]选项:指定两表联接时的联接类型,联接类型有4种。其中的OUTER选项表示外部联接,既允许满足联接条件的记录,又允许不满足联接条件的记录。若省略OUTER选项,效果不变。
ON子句:用于指定联接条件。
FORCE子句:严格按指定的联接条件来联接表,避免VFP因进行联接优化而降低查询速度。数据库原理,2005版,适用于工程管理、土地资源管理专业
(3)INTO与TO子句:用于指定查询结果的输出去向,默认查询结果显示在浏览窗口中。
INTO子句中的<目标>可以有3种选项,其分别为ARRAY(数组)、CURSOR(临时表名)、DBF(数据表)。
TOFILE子句的<文件名>表示输出到指定的文本文件,并取代原文件内容。ADDITIVE表示只添加新数据,不清除原文件的内容。
TOPRINTER表示输出到打印机,PROMPT表示打印前先显示打印确认框。
TOSCREEN表示输出到屏幕。
数据库原理,2005版,适用于工程管理、土地资源管理专业
(4)PREFERENCE子句:用于记载浏览窗口的配置参数,再次使用该子句时可以用<名字>引用此配置。(5)NOCONSOLE子句:禁止将输出内容输出到屏幕,若指定过INTO的设置则忽略此句。(6)PLAIN子句:输出时省略字段名。(7)NOWAIT子句:显示浏览窗口以后程序继续向下执行。
数据库原理,2005版,适用于工程管理、土地资源管理专业
(8)WHERE子句:若已用ON子句指定联接条件,该子句只能指定筛选条件,表示在已按联接条件产生的记录中筛选记录。也可以省去JOIN子句,一次性的在WHERE子句中指定联接条件和筛选条件。(9)GROUPBY子句:对记录按<表达式>值进行分组,常用于分组统计。(10)HAVING子句:当含有GROUPBY子句时,该子句可用作记录查询的限制条件;没有GROUPBY子句时,该子句的作用与WHERE相同。
数据库原理,2005版,适用于工程管理、土地资源管理专业
(11)UNION子句:使用该子句可以在一个SELECT-SQL语句中嵌套另一个SELECT-SQL语句,使两个语句的查询结果合并输出。(12)ORDERBY子句:指定查询结果中按<表达式>排序。(13)TOP子句:在符合查询条件的所有记录中,选取指定数量或百分比的记录。TOP子句必须与GROUPBY子句同时使用。ORDERBY子句指定查询结果中包含的列上由TOP子句决定的行数.TOP子句根据此排序选定最开始的“<数值表达式>的值个”或“<数值表达式>的值%”的记录。数据库原理,2005版,适用于工程管理、土地资源管理专业2、SELECT-SQL使用示例:
(1)查询所有设备的名称
SELECT名称FROMSHB&&显示重复记录
SELECTDISTINCT名称FROMSHB&&不显示重复记录
(2)查询所有字段记录
SELECT*FROMSHB
(3)显示所有设备的平均价格
SELECTAVG(价格)FROMSHB&&结果以记录的形式显示在临时表
SELECTAVG(价格)AS平均价格FROMSHB&&列标题改变
数据库原理,2005版,适用于工程管理、土地资源管理专业
(4)将查询结果保存在数组中(首先应定义数组,如DIMEa(1))
SELECTAVG(价格)FROMSHBINTOARRAYaSELECT*FROMSHBINTOARRAYa
(注意:此处设定的数组大小任意,系统会依据数据表的内容扩展数组大小,使用listmemorylikeatoc:\123.txt可查看数组情况)数据库原理,2005版,适用于工程管理、土地资源管理专业
(5)查询价格低于20000的设备名称、起用日期与部门,并按照起用日期升序排列
SELECT名称,起用日期,部门FROMshbWHERE价格<20000ORDERBY起用日期ASC
(6)查询每个部门所属设备的总价格
SELECTSUM(价格),部门FROMshbGROUPBY部门
(7)查询部门编号中带1的部门所属设备的总价格SELECTSUM(价格),部门FROMshbGROUPBY部门HAVING“1”$部门
(8)查询价格最高、最低的设备前3个
SELECTTOP3编号,价格FROMSHBORDERBY价格DESCSELECTTOP3编号,价格FROMSHBORDERBY价格
数据库原理,2005版,适用于工程管理、土地资源管理专业
(9)联接实现多表查询
a、查询大修过的设备的编号、名称及所属部门名称
SELECTdx.编号,shb.名称,bmdm.名称AS部门名称FROM;SHB,dx,bmdmWHERE(dx.编号=shb.编号).AND.;(bmdm.代码=shb.部门)b、查询编号前3位小于038的设备名称及大修费用合计,按照大修合计的费用降序排列
SELECTshb.名称,SUM(dx.费用)FROMshb,dx;WHERE(shb.编号=dx.编号).AND.LEFT(shb.编号,3)<"038"GROUPBYdx.编号ORDERBY2DESC
注意:此处由于排序的条件SUM(价格)不能直接使用,此处的2是指排序以查询结果中的第二列作为依据。否则会提示“SQL:找不到列”数据库原理,2005版,适用于工程管理、土地资源管理专业3、联接方式(P101-T3.5)联接可以实现两个表的联接,即在一个查询涉及两个以上表时,将其按照一定条件联系在一起进行操作。VFP的SQL可以使用多种类型的联接形式,示例数据库原理,2005版,适用于工程管理、土地资源管理专业SELECTa1.d1,a2.d2FROMa1INNERJOINa2ONa1.d1=a2.d2SELECTa1.d1,a2.d2FROMa1LEFTJOINa2ONa1.d1=a2.d2SELECTa1.d1,a2.d2FROMa1RIGHTJOINa2ONa1.d1=a2.d2SELECTa1.d1,a2.d2FROMa1FULLJOINa2ONa1.d1=a2.d2数据库原理,2005版,适用于工程管理、土地资源管理专业数据库原理,2005版,适用于工程管理、土地资源管理专业SELECTshb.名称,bmdm.名称FROMshbINNERJOINbmdmONshb.部门=bmdm.代码数据库原理,2005版,适用于工程管理、土地资源管理专业SELECTshb.名称,shb.部门,bmdm.名称FROMshbLEFTJOINbmdmONshb.部门=bmdm.代码数据库原理,2005版,适用于工程管理、土地资源管理专业SELECTshb.名称,shb.部门,bmdm.名称FROMshbRIGHTJOINbmdmONshb.部门=bmdm.代码数据库原理,2005版,适用于工程管理、土地资源管理专业SELECTshb.名称,shb.部门,bmdm.名称FROMshbFULLJOINbmdmONshb.部门=bmdm.代码数据库原理,2005版,适用于工程管理、土地资源管理专业二、查询设计器用户可通过VFP提供的查询设计器来进行数据查询。查询设计器产生的查询结果除可当场浏览外,还有多种输出方式。查询设置也可以保存在文件中,供以后打开查询设计据使用或修改。
1、查询设计器的操作步骤
“打开查询设计器”——“进行查询设置”(即设置被查询的表、联接条件、字段等输出要求和查询结果的去向)——执行查询——保存查询设置。
2、查询设计器的组成上部窗格下部窗格查询菜单数据库原理,2005版,适用于工程管理、土地资源管理专业三、查询结果的图形化处理在VFP中允许将查询结果以图形化的方式输出,使用图形化输出方式应注意以下问题:(1)_gengraph:_gengraph为一系统变量,用于给定图形向导所在位置。(2)要输出图形必须选定两个以上字段,其中至少有一个为数值字段。(3)输出结果保存到表单文件中,以后可以调用。数据库原理,2005版,适用于工程管理、土地资源管理专业§3.6数据库与视图一、数据库
1、数据库的基本概念当数据结构较为简单时,如为个人保存一个亲友通信录,建一个自由表就可以了。它通常单独使用,与其它表的数据没有多少联系。但数据结构比较复杂,如果为工厂开发一个人事管理系统,一个表很可能不够了,需要建立多个表。以前的例子中多次提到过的SHB.DBF,BMDM.DBF,ZZ.DBF等表就是例子,各表中包含的数据相互具有这样那样的联系。若把它们集中到一个数据库中,并且在各表之间建立若于固定的关系(关联),管理与使用就更加方便了。这类从属某一数据库的表统称为数据库表。一个较大的应用项目可以创建若干个数据库,每个数据库可定义一组数据库表,然后用一定的关系将它们相互联接。数据库原理,2005版,适用于工程管理、土地资源管理专业2、用数据库设计器设计数据库(1)数据库设计器数据库设计器是VFP提供的一种辅助设计窗口,它能显示当前数据库全部的表、视图相关系,并让用户操作这些对象。当数据库设计器窗口激活时,格伴随出现“数据库”菜单和‘‘数据库设计器’’工具栏。若用命令来打开数据库表.则不需打开数据库设计器,也不需了解数据库是否打开。数据库原理,2005版,适用于工程管理、土地资源管理专业
(2)数据库的创建数据库创建可以通过菜单命令或CREATEDATABSE<文件名>来进行。(3)数据库的关闭与删除
CLOSEDATABASEALL:关闭所有的数据库。
DELETEDATABASE<数据库名>[DELETETABLES]:当包含DELETETABLES子句时删除<数据库名>表示的数据库及其中的表,否则仅删除数据库,并将它的表变为自由表。应该注意,若要删除数据库必须先关闭它。
REMOVETABLES;从数据库中移去表,被移去的表变为自由表。(4)数据库文件数据库创建后将保存在扩展名为.DBC数据库文件中。该文件本身也是一个表,其中记载了它的所有表的参数,及索引、关联等有关参数。可以使用USE命令将其打开。如:use数据1.dbc就可以打开名字为数据1的数据库文件数据库原理,2005版,适用于工程管理、土地资源管理专业二、数据字典
数据词典用于保存对数据库中各种数据的定义或设置信息,包括表的属性、字段属性、记录规则、表间关系,以及参照完整性(ReferentialIntegrity,简称RI)等。这些属性或信息均可通过数据库设计器来设置、显示或修改,并且由系统保存在数据词典中。直到相关的表从数据库中移去为止。需要指出。当设计自由表时,表设计器也用来设置字段、索引和表的各种属性。但若所设计的是数据库表,其设置起来的内容比起自由表来将丰富得多。数据库原理,2005版,适用于工程管理、土地资源管理专业1、长名(表名/字段名)与注释为了方便书写,表和字段通常使用较短的名称(VFP规定字段名最长不超过10个字符)。同时,VFP允在数据向典中为表/字段设置不超过128个字符的长名,以及对表/字段增加适当纳注释。
长表名/长宇段名一般能在浏览窗口或各种设计器(例如数据库设计器、查询设计器和即将介绍的视图设计器)的标题栏内显示,而注释则通常出现在项目管理器中。例如当用户打开项目管理器,从中选定一个表或从表的字段列表框中选定了一个字段后,在项目管理器的底部就会出现事先巳在数据词典中设置的注释,使用户参阅。注意,数据库表仅在创建时可采用长表名。数据库原理,2005版,适用于工程管理、土地资源管理专业2、设置字段属性(1)格式指定表达式,使得在“浏览”窗口、表单或报表中,确定字段显示时的大小写、字体大小和样式。(2)输入掩码显示区的输入掩码文本框用于键入输入掩码,借以指定字段的输入格式,限制输入数据的范围,控制输入的正确性。输入掩码可以是以下字符:
X允许输入字符
9允许输入数字
#允许的入数字.空格.十,一
$显示SETCURRENCY命令指出的货币号*在指定宽度中,值左显示星号
.指出小数点位置,用逗号分隔小数点左的数字与格式文本框不同,输入掩码必须按位来指定格式。数据库原理,2005版,适用于工程管理、土地资源管理专业
(3)标题显示区的标题文本框用于为浏览窗口、表单或报表中的字段标签键入表达式。例如在图3.32所示的标题文本框键入了设备编号字佯,所以在浏览窗口中,编号字段的列标题也将显示为设备编号。(4)字段验证字段验证区包含3个文本框,各文本框均可直接键入数据钮显示出表达式生成器对话框,在其中进行设置。也可通过其右边的对话按规则则文本框用于输入对字段数据有效性进行检查的规则、它实际上是一个条件。信息文本框用于指定出错提示信息,当该字段辅人的数据违反条件时,出错信息将照此显示。默认值文本框用于指定字段的默认值。当增加记录时,字段默认值会在新记录中显示出来,从而提高输入速度。数据库原理,2005版,适用于工程管理、土地资源管理专业3、设置记录规则(1)记录验证记录级有效性检查规则用来检查同一记录中不同字段之间的逻辑关系。规则文本框:用于指定记录级有效性检查规则.光标离开当前记录时进行校验。信息文本框:用于指定出错提示信息。在校验记录级有效性规则时,发现输入与规则不符时该信息将会显示出来。
数据库原理,2005版,适用于工程管理、土地资源管理专业(2)触发器表选项卡中的3个触发器,分别用于指定记录插入、更新、删除的规则。插入触发器:用于指定一个规则,每次向表中插入或追加记录时该规则被触发检查插入的记录是否满足规则。更新触发器:用于指定一个规则,每次更新记录时触发该规则。删除触发器:用于指定一个规则,每次向表中删除记录(打上删除标记)时触发该规则。数据库原理,2005版,适用于工程管理、土地资源管理专业4、主索引和永久关系(1)主索引在建立索引时,若打开的是数据库表,组合框中将列出包括主索引在内的4种索引类型。主索引的作用有两个:一是主索引不允许出现重复值.发现重复值会禁止存盘,故可用作主关键字。二是主索引可用于建立永久关系,从而建立参照完整性。建立主索引的方法参见索引部分。(2)永久关系与临时关系永久关系是数据库表之间的关系,在数据库设计器中表现为表索引之间的连线。连线的一端为一根,另一端为三根,分别代表一多关系的一端与多端。永久关系建立后存储在数据库文件(DBC)中,只要不作删除或变更就一直保留。永久关系在查询和视图中能自动成为联接条件;能作为表单和报表的默认关系,并显示在数据环境设计器中,允许建立参照完整性。
数据库原理,2005版,适用于工程管理、土地资源管理专业
与永久关系相区别,以前建立的关系可称为临时关系。临时关系仅用于关联,即控制关联表的记录指针有序移动,永久关系在查询和视图中则起联接作用。利用数据库设计器来建立永久关系.只要在数据库表间进行连线,而删除永久关系也只需去掉连线。连线规则为:在数据库设计器中,从一个表的主索引或候选索引拖到另一表的任一索引(即出现表间连线)。数据库原理,2005版,适用于工程管理、土地资源管理专业5、参照完整性上文已介绍过数据库表的字段级和记录级验证规则,参照完整性则属子表间规则,对于永久关系的相关表,在更新、插入或删除记录时如果只改其一不改其二,就会影响数据的完整性:例如修改父表中关键字值后,子表关键字值未作相应改变;删除父去的某记录
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年江西省德兴市高考物理学业考试试卷含完整答案详解【名师系列】
- 2026年江西省高安市高考物理二模测试卷带答案详解(达标题)
- 2026年山东省禹城市高考物理真题汇编试卷完整附答案详解
- 2025年江苏省新沂市高考物理二轮专题测试卷及答案详解【夺冠系列】
- 2026年塔式起重机司机复审考试内容题库含答案参考
- 2026年职业心理测评与咨询技能考试试卷及答案
- 初级放射医学技师基础知识考试试题及答案
- 七年级下册生物期末考试试卷及答案
- 煤矿输送带司机考试试题(含答案)
- 管道工安全试题及答案
- 超材料声学成像-洞察及研究
- 复合翼电动垂直起降航空器(eVTOL)技术条件
- 核电行业防造假管理制度
- DBJ51T 256-2024 玄武岩纤维增强复合材料管道工程应用技术标准
- 2025年6月四川高中学业水平合格考生物试卷真题(含答案详解)
- 2025年6月21日上海市直遴选笔试真题及答案解析
- 浙江省衢州市名校2025届八年级英语第二学期期末教学质量检测试题含答案
- 2025届四川省成都金牛区五校联考物理八下期末联考模拟试题含解析
- 2025年苏教版小升初科学模拟卷一(含答案与解析)
- 内蒙古交通集团有限公司社会化招聘笔试真题2023
- 《电力建设工程起重施工技术规范》
评论
0/150
提交评论