汽车钣金实训耗材项目ppt课件_第1页
汽车钣金实训耗材项目ppt课件_第2页
汽车钣金实训耗材项目ppt课件_第3页
汽车钣金实训耗材项目ppt课件_第4页
汽车钣金实训耗材项目ppt课件_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

第5章查询与视图,汽车防盗器,主要内容:1、结构化查询语言SQL2、查询设计器的使用3、视图及视图设计器4、查询与视图的区别重点:1、结构化查询语言SQL的查询语句2、查询设计器的使用难点:1、结构化查询语言SQL的查询语句2、查询与视图的区别要求:1、掌握结构化查询语言SQL的数据定义、数据操纵及数据查询语句2、掌握使用查询设计器设计查询的方法3、掌握视图的概念及其和查询的区别4、掌握使用查询设计器设计查询的方法,5.1查询与统计命令,数据查询通常包括对数据表中原始数据的直接检索和对原始数据做特定的统计和计算两类。,5.1.1数据“筛选过滤”,“筛选过滤”分为横向和纵向两种。前者叫做记录筛选,它能够屏蔽掉不满足条件的记录集;后者叫做字段筛选,它能够屏蔽我们不感兴趣的字段集。记录筛选实现了关系运算中的选择运算(Selection),字段筛选实现了关系运算中的投影运算(Projection)。1记录筛选命令:SETFILTER(1)格式SETFILTERTO(2)功能设置当前表中可以被访问的记录必须满足的条件。2设置字段筛选命令:SETFIELDS(1)格式SETFIELDSTO/ALLLIKE/EXCEPT字段名通配式(2)功能指定当前表中可以被访问的字段。,(3)参数说明:逐一列出当前表中可被访问的字段的名称。ALL:表示允许访问当前表中的所有字段。ALLLIKE字段名通配式:表示当前表中所有与字段名通配式相匹配的字段均为可被访问字段。ALLEXCEPT字段名通配式:表示当前表中所有不与字段名通配式相匹配的字段均为可被访问字段。例子:设置STUDENT表中只有“计算机”专业学生的学号、姓名、出生日期三个字段可被访问。,在命令窗口输入如下命令:USESTUDENTBROWSESETFILTERTO专业=“计算机”SETFIELDSTO学号,姓名,专业BROWSE显示结果如图所示。,5.1.2顺序查询与索引查询,VFP提供了顺序查询和索引查询两种查询定位方法,前者是按照记录的物理排列顺序依次查询并定位于满足指定要求的第一条记录;后者是利用索引文件根据索引关键字的值基于二分算法进行查询定位。1.顺序查询命令:LOCATE(1)格式LOCATEFOR(2)功能执行该命令,系统在指定的记录范围(缺省表示所有记录)内,顺序查询满足条件的第一个记录。提示:顺序查询不需对表事先建立索引。若要继续查找满足条件的下一个记录,应使用CONTINUE。VFP默认EXACTOFF,在此状态下用LOCATE命令查找字符型数据时,进行的是不精确匹配,若要进行精确匹配查找,请使用“”。,例子在STAFF表中查询职称是讲师的教师记录。USESTAFF记录:1/5(状态行上显示)LOCATEALLFOR职称“讲师”记录:2/5(状态行上显示)?RECNO(),FOUND()2.T.(屏幕上显示)CONTINUE记录:4/5(状态行上显示)?RECNO(),FOUND()4.T.(屏幕上显示)CONTINUE?RECNO(),FOUND()6.F.,2.索引查询命令:SEEK(1)格式SEEK(2)功能执行该命令,系统查找主控索引关键字的值与命令中的值相匹配的第一条记录,若找到,指针指向该记录,FOUND()返回.T.;若没找到,指针指向表的eof标志,FOUND()和EOF()将分别返回.F.和.T.。,提示:使用SEEK命令之前,要求数据表已按要查询的字段建立过索引,并被设置为主控索引。SEEK命令只能查询主控索引关键字字段,对于字符型关键字段,必须加字符串定界符;对于日期型关键字段,必须加日期定界符。例子:STUDENT表中索引查询学号为“04006”的学生姓名。USESTUDENTINDEXON学号TAGXH&按学号字段建立索引,索引名是XH,并自动被系统作为主控索引SEEK04006?姓名周文敏(屏幕上显示),5.1.3统计命令,1记录个数统计命令:COUNT(1)格式COUNTFOR/WHILETO(2)功能统计当前数据表中内满足的记录个数,若命令中含有,则将结果送入指定内存变量中保存。否则将统计结果显示在屏幕上。提示:如果SETDELETE是ON,已做了删除标记的记录将不被COUNT命令统计,但仍被RECCOUNT()函数统计。,2计算总和命令:SUM(1)格式SUMFOR/WHILETO(2)功能对当前数据表中内满足的记录,按指定数值字段进行纵向求和,若命令中含有,则将结果送入对应的内存变量中保存。3计算平均数命令:AVERAGE(1)格式AVERAGEFOR/WHILETO,(2)功能对当前数据表中内、满足指定条件的记录的指定数值字段进行纵向求平均值,若命令中含有,则将结果送入对应的内存变量中保存。提示:1.COUNT/SUM/AVERAGE命令中缺省时表示所有记录。2.SUM/AVERAGE命令中指定求和/求平均字段,缺省表示对所有数值型字段求和/求平均值。,例子统计STUDENT表中男生人数、所有男生的奖学金总额和平均值。USESTUDENTCOUNTFOR性别=.T.TO男生人数SUM奖学金FOR性别=.T.TO奖学金总额AVERAGE奖学金FOR性别=.T.TO平均奖学金?男生人数,奖学金总额,平均奖学金4685.00171.25,5.1.4多表操作命令,1工作区及其选择共有三种标识工作区的方法:区号:分别用数字132767表示。区名:对于前10区,用字母AJ表示。从11区往后用W11W32767表示。别名:打开在工作区上的表的别名(由USE命令的ALIAS子句指定)。若不指定别名,则系统自动以表名为别名选择当前工作区命令:SELECTSELECT命令来重新选择当前工作区:SELECT/0,(3)非当前工作区字段的引用访问当前工作区中打开表的字段时,可以直接引用字段名,而访问非当前工作区中打开表的字段时,应使用如下格式:/.或者:/-2.建立表之间的临时关系命令:SETRELATION(1)格式SETRELATIONTOINTO(2)功能把当前工作区上的表(父表)与在另一工作区上打开的子表通过关联字段建立指针联动关系,使得当前工作区上表的指针移动时,子表的记录指针也发生相应的移动。,(3)参数说明:用于关联两表的字段表达式,通常由两表共有的字段构成,该字段必须是子表的主控索引关键字。:指定子表的区号、区名或表别名。提示:要求建立临时关系的两个表必须具有公共属性字段,且子表已按该字段建立了索引并被设置为主控索引;父表打开在当前工作区,子表打开在其它工作区。临时关系不同于永久关系,它不会永久保存,只要父表或子表关闭,或使用了取消临时关系命令SETRELATl0NTO,临时关系即随之取消。,例:在表TEACH与COURSE之间建立临时关系,使浏览查看TEACH表中所有教工的授课情况时也能看到课程名、课时和学分。OPENDATABASE教学管理SELECT0USECOURSEALIASCOU&打开子表COURSEINDEXON课程号TAGKCH&对子表按课程号建立索引SELECT0USETEACH&打开父表TEACHSETRELATIONTO课程号INTOCOU&按课程号建立临时关系BROWSEFIELDS教工号,课程号,COU.课程名,COU.课时,COU.学分,显示结果如图:,5.2使用查询设计器建立查询,VFP提供了两种方法实现结构化查询:一种是用VFP提供的“查询设计器”或“查询向导”建立查询文件并运行;另一种是直接编写SELECT-SQL命令并执行。本节介绍用“查询设计器”建立查询的方法。,5.2.1查询设计器简介,查询设计器是创建和修改查询文件的有力工具,查询文件的扩展名为“.QPR”,其内容就是SELECT-SQL命令。启动查询设计器的方法:1.从项目管理器启动查询设计器(建议使用,以便文件的归类管理。)2.从“文件”菜单启动查询设计器。,“查询设计器”窗口,5.2.2使用查询设计器建立查询文件,以实例说明使用查询设计器建立查询的操作步骤。例:用查询设计器建立查询文件CJCX.QPR,根据表GRADE.DBF和COURSE.DBF,查询具有3个学分的各门课程的课程号、课程名、最高成绩、最低成绩、平均成绩和选修人数,并要求按课程号升序显示。该查询涉及表GRADE.DBF和COURSE.DBF,首先把表GRADE和COURSE按公共属性课程号字段建立关联。操作步骤如下:(1)启动查询设计器,添加“学生成绩”库中的STUDENT表、GRADE表和COURSE表(2)设置联接条件(图1)。(3)选定输出列(图2)。(4)设置筛选条件(图3)。(5)结果排序的依据(图4)。(6)分组所依据的字段(图5)(7)选择“杂项”选项卡(图6)(8)保存查询文件。,图1,图2,图3,图4,图5,图6,5.2.3查询文件的使用,(1)运行查询文件,得到查询结果(图1)。(2)选择查询结果的输出去向(图1)。(3)查看生成的SELECT-SQL命令(图1)。,图1,图2,图3,5.3结构化查询语言SQL,SQL结构化查询语言主要特点:SQL是一种一体化的语言,它包括了数据定义、数据查询、数据操纵和数据控制等方面的功能,它可以完成数据库活动中的全部工作。SQL是一种高度非过程化的语言。SQL语言非常简洁。SQL是关系数据库系统的国际标准语言。,5.3.2SELECT-SQL命令概述,1.SELECT-SQL命令的语法格式SELECTALL/DISTINCTTOPnExprPERCENTAlias.Select_ItemASColumn_Name,Alias.Select_ItemASColumn_NameFROMDatabaseName!TableNameASLocal_Alias,DatabaseName!TableNameASLocal_AliasINNER/LEFTOUTER/RIGHTOUTER/FULLOUTERJOINDatabaseName!TableNameASLocal_AliasONJoinConditionWHEREJoinConditionANDJoinConditionAND/ORFilterConditionAND/ORFilterConidionORDERBYOrder_ItemASC/DESC,Order_ItemASC/DESCGROUPBYGroupCo1umn,GroupColumnHAVINGFilterConditionTOPRINTER/FILEADDITIVE/SCREENINTOTABLETablename/CURSORCursorname/ARRAYArrayname,2.SELECT-SQL命令功能:从一个或多个表中查询指定条件的数据并输出。3.参数说明(1)SELECT子句:指定查询输出的结果。ALL:表示查询结果中包括所有满足查询条件的记录,也包括重复值。默认为ALL。DISTINCT:表示在查询结果中内容完全相同的记录只能出现一次。Alias.Select_Item:指定作为查询结果的列内容,可以是字段名、常量或表达式;Alias表示表名(或表别名),用Alias.标识来自不同表的同名字段。ASColumn_Name:指定查询结果中列的标题名称。TOPnExprPERCENT:限制查询记录的数目为前nExpr条或占记录总数的百分比为nExpr。注意:TOP参数必须与ORDERBY子句联用。,(2)FROM子句:指定查询数据所在的表以及在联接条件中涉及的表。DatabaseName!TableNameASLocal_Alias:TableName表示要操作的表名;DatabaseName表示数据库名,如果TableName表不是自由表,且包含它的数据库不是当前数据库,则用DatabaseName!指定数据库;Local_Alias表示表的别名。(3)JOIN子句:指定多表之间的联接方式。INNER/LEFTOUTER/RIGHTOUTER/FULLOUTERJOIN:内部/左(外部)/右(外部)/完全(外部)联接。其中的OUTER关键字是任选的,它用来强调创建的是一个外部联接。ON子句:与JOIN子句联用,指定多表之间的联接条件(JoinCondition)。(4)WHERE子句:指定多表之间的联接条件(JoinCondition)和查询条件(FilterCondition),多个条件用AND或OR联结。,(5)ORDERBY子句:指定对查询结果排序的依据。Order_Item:指定排序所依据的列。ASC指定查询结果以升序排列,DESC指定查询结果以降序排列。(6)GROUPBY子句:指定对查询结果分组的依据。GroupCo1umn:指定分组所依据的字段。HAVING子句:与GROUPBY子句联用,指定对分组结果进行筛选的条件(FilterCondition)。(7)TO子句:指定查询结果的输出目标。浏览窗口:默认输出目标(注:查询结果在浏览窗内只供浏览,不能修改)。打印机:TOPRINTER。ASCII文件:TO。活动窗口:TOSCREEN。,4构造SELECT-SQL命令的方法(1)直接编写SELECT-SQL命令。(2)用查询设计器交互式生成SELECT-SQL命令。(3)用查询向导交互式生成SELECT-SQL命令。5使用SELECT-SQL命令的方式(1)在命令窗口中以命令方式使用SELECT-SQL命令。(2)通过查询文件以程序方式使用SELECT-SQL命令。(3)将SELECT-SQL命令嵌入到程序文件或过程、自定义函数中以程序方式使用。,5.3.3用SELECT命令实现单表查询,1无条件查询常用格式:SELECTFROM(1)查询指定表中所有记录的全部字段内容例:查询显示“教学管理”数据库中STAFF表中所有教师的详细信息。SELECT*FROMSTAFF(2)查询指定表中所有记录的部分字段内容例:查询STAFF表中所有教师的教工号、姓名和单位。SELECT教工号,姓名,单位FROMSTAFF(3)查询指定表中所有记录的统计值例:查询显示STAFF表中所有教师的最高工资、最低工资和平均工资,并要求在查询结果的列中使用标题名称。SELECTMAX(基本工资)AS最高工资,MIN(基本工资)AS最低工资,;AVG(基本工资)AS平均工资FROMSTAFF,SELECT子句中可用的标准统计函数,2条件查询常用格式:SELECTFROMWHERE1)关系运算符(大于)=(大于或等于)、!=(不等于)例:查询STAFF表中哪些单位有教师基本工资在2000元以上(含2000元),显示单位名称(要求不重复显示)。SELECTDISTINCT单位FROMSTAFFWHERE基本工资=20002)LIKE使用格式为:LINK“例:查询显示STAFF.DBF中姓“钱”或姓名中含有“民”的教师的信息。SELECT*FROMSTAFFWHERE姓名LIKE钱%OR姓名LIKE%民%,3)BETWEEN:表示介于两个值之间,有两种使用格式:BETWEENANDBETWEEN(,)例:查询STAFF.DBF中出生于50年代的教师的信息。SELECT*FROMSTAFFWHERE出生日期BETWEEN1950/01/01AND1959/12/314)IN:是成员判断符,若提供了值的一览表,IN将会告诉我们指定值是否在该表中。使用格式为:IN(,)例:查询STAFF.DBF中职称为教授、副教授的教师的信息。SELECT*FROMSTAFFWHERE职称IN(教授,副教授)5)ISNULL用于检查是否为空值NULL。否定运算是ISNOTNULL。,3对查询结果进行排序常用格式:SELECTFROMWHEREORDERBYASC/DESC说明:列出排序所依据的列。若依据多个列排序,则列名之间用“,”分隔,排序时先按第一项排序,对第一项值相同的记录,再按第二项排序,依次类推。排序方式有ASC和DESC两种,分别表示升序排列和降序排列,默认方式为“ASC”。例:查询STAFF表中教师的姓名、职称、单位、年龄信息,并按单位降序排列,同一单位的教师按年龄升序排列显示。SELECT姓名,职称,单位,YEAR(DATE()-YEAR(出生日期)AS年龄FROMSTAFFORDERBY单位DESC,年龄,4分组查询常用格式:SELECTFROMWHEREGROUPBYHAVING例:根据STAFF表查询各单位教师数。SELECT单位,COUNT(*)FROMSTAFFGROUPBY单位例:根据STAFF表统计各单位的基本工资总额,输出基本工资总额大于等于4000元的单位名称和基本工资总额。SELECT单位,SUM(基本工资)AS基本工资总额FROMSTAFFGROUPBY单位HAVING基本工资总额=4000,5.3.4用SELECT实现多表查询,VFP提供了四种联接类型:内部联接、左联接、右联接和完全联接,其中内部联接是最常用的连接方式。以TEACH和COURSE表为例说明各联接类型的含义和实现方法,公共属性“课程号”是两表间的关联字段,两表内容如图。,1内部联接(INNERJOIN)查询实现方法1)使用INNERJOIN和ON子句实现。SELECTFROMINNERJOINON.=.实现方法2)在WHERE子句中实现:SELECTFROM,WHERE.=.例:根据表TEACH和COURSE,查询两表公有的教师的授课信息。SELECTTEACH.教工号,TEACH.课程号,COURSE.课程名,COURSE.课时,COURSE.学分FROMTEACHINNERJOINCOURSEONTEACH.课程号=COURSE.课程号(图1),2左联接(LEFTJOIN)查询实现方法:使用LEFTJOIN和ON子句实现。SELECTFROMLEFTJOINON.=.例:根据表TEACH和COURSE,查询所有教师的授课信息,如果某个课程尚未在COURSE表中登记,也要显示出该授课教师的信息。SELECTTEACH.教工号,TEACH.课程号,COURSE.课程名,COURSE.课时,COURSE.学分FROMTEACHLEFTJOINCOURSEONTEACH.课程号=COURSE.课程号(图2)3右联接(RIGHTJOIN)查询,实现方法:使用RIGHTJOIN和ON子句实现。SELECTFROMRIGHTJOINON.=.例:根据表TEACH和COURSE,查询所有教师的授课信息,如果某个课程目前没有教师授课,也要显示出该课程的信息。SELECTTEACH.教工号,TEACH.课程号,COURSE.课程名,COURSE.课时,COURSE.学分FROMTEACHRIGHTJOINCOURSEONTEACH.课程号=COURSE.课程号(图3)4完全联接(FULLJOIN)查询,实现方法:使用FULLJOIN和ON子句实现。SELECTFROMFULLJOINON.=.例:通过表TEACH和COURSE的完全联接,查询两表所涉及的所有信息。SELECTTEACH.教工号,TEACH.课程号,COURSE.课程名,COURSE.课时,COURSE.学分FROMTEACHFULLJOINCOURSEONTEACH.课程号=COURSE.课程号(图4),图1,图2,图3,图4,5.多表间的联接查询,例:根据表STAFF、TEACH和COURSE,按内部联接查询有记录的教师授课信息,要求输出教师的教工号、姓名、课程号、课程名、课时、学分,并按教工号从小到大排序输出。SELECTSTAFF.教工号,姓名,COURSE.课程号,课程名,课时,学分FROMSTAFFINNERJOIN(TEACHINNERJOINCOURSEONTEACH.课程号=COURSE.课程号)ONSTAFF.教工号=TEACH.教工号ORDERBYSTAFF.教工号(输出的内容都取自于STAFF和COURSE,TEACH表仅起到“纽带”作用),6.使用嵌套子查询实现多表查询,所谓的子查询是指嵌套在一个SELECT-SQL命令中的另一个SELECT-SQL命令。嵌套子查询的SELECT-SQL命令形式如下:SELECTFROMWHEREIN(SELECTFROMWHERE)例:根据表STAFF和TEACH,查询授课教师的教工号和姓名(要求不重复显示)。SELECT教工号,姓名FROMSTAFFWHERE教工号IN(SELECT教工号FROMTEACH),5.3.5SELECT命令的输出去向,在SELECT-SQL命令中,可由INTO子句和TO子句指定查询的输出去向,但是如果同时使用INTO子句和TO子句时,INTO子句优先。1INTOARRAY:将查询结果存放到一个二维数组中。2INTOCURSOR:将查询结果保存在一个只读临时表中。3INTOTABLE:将查询结果保存在一个自由表文件(.DBF)中。4TOFILEADDITIVE:将查询结果保存在一个文本文件(默认扩展名为.TXT)中。5TOPRINTER:将查询结果直接输出到打印机。,6TOSCREEN:将查询结果直接显示在VFP的系统主窗口中。7缺省INTO子句和TO子句时的默认值:浏览窗口例:从STAFF表中查出所有单位名称(不为空、不重复),并将查询结果保存在数组DW中。SELECTDISTINCT专业FROMSTUDENTWHERE!EMPTY(单位)INTOARRAYDW如查出有3个单位名称,则分别存放在数组元素DW(1,1)、DW(1,2)、DW(1,3)中。,5.3.6其他的SQL命令,1CREATETABLE-SQL命令(1)基本格式:CREATETABLE(,),(,),)(2)功能:创建一个给定每个字段的名称、类型、宽度、小数位数等参数的新表(.DBF)。例:利用CREATETABLE-SQL命令创建图书表BOOK.DBF,该表包括以下字段:图书号(C,8),图书名(C,20),作者(C,8),出版日期(D),出版社(C,20),定价(N,8,2),简介(M)。CREATETABLEBOOK(图书号C(8),图书名C(20),作者C(8),出版日期D,出版社C(20),定价N(8,2),简介M),2INSERT-SQL命令(1)基本格式:INSERTINTO(,)VALUES(,)(2)功能:向指定的表末尾追加一条新记录,新记录有关字段的值由VALUES子句中的表达式指定,未指定值的字段将取空值。例:利用INSERT-SQL命令向BOOK表追加一条新记录:图书号ISBN-103,图书名PASCAL语言,定价25元。INSERTINTOBOOK(图书号,图书名,定价)VALUE(ISBN-103,PASCAL语言,25.00),3DELETE-SQL命令(1)格式:DELETEFROMWHERE条件(2)功能:将指定表中满足指定条件的记录加上删除标记。若要真正从表中删除,还必须使用PACK命令。例:利用DELETE-SQL命令将BOOK表中1980年以前出版的图书记录删除。DELETEFROMBOOKWHEREYEAR(出版日期)1980PACK,4UPDATE-SQL命令(1)基本格式:UPDATESET=,=,WHERE条件(2)功能:根据SET

温馨提示

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

评论

0/150

提交评论