第4章查询和视图.ppt

上传人:hyn****60 文档编号:70759307 上传时间:2023-01-27 格式:PPT 页数:34 大小:3.78MB
返回 下载 相关 举报
第4章查询和视图.ppt_第1页
第1页 / 共34页
第4章查询和视图.ppt_第2页
第2页 / 共34页
点击查看更多>>
资源描述

《第4章查询和视图.ppt》由会员分享,可在线阅读,更多相关《第4章查询和视图.ppt(34页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、查询和视图查询和视图第4章2023/1/2214.1 概述概述n查询:向一个数据源发出检索信息的请求,它使用一些条件查询:向一个数据源发出检索信息的请求,它使用一些条件提取特定的记录。提取特定的记录。n查询的本质查询的本质u创建查询基于特定的数据源u查询的运行结果是一个基于表和视图的动态的、只读的数据集合。u一个查询可以用一条SELECT-SQL语句来完成。u查询保存为一个扩展名为.QPR的文件。文件中保存的是实现查询的SELECT-SQL命令,而非查询的结果。n查询的建立方法查询的建立方法u查询设计器:项目管理器uSELCET-SQL命令命令类型上:可以是自由表、数据库表或视图。类型上:可以

2、是自由表、数据库表或视图。数量上:可以上单张表或多张表。数量上:可以上单张表或多张表。2023/1/222通过以下几个步骤建立查询:通过以下几个步骤建立查询:打开打开“查询设计器查询设计器”开始建立查询开始建立查询选择想从中获取信息的表或视图,并建立好它们之间选择想从中获取信息的表或视图,并建立好它们之间的关系的关系选择出现在查询结果中的字段选择出现在查询结果中的字段设置筛选条件来查找所需的记录设置筛选条件来查找所需的记录设置排序或分组选项来组织查询工作设置排序或分组选项来组织查询工作选择查询结果的输出类型选择查询结果的输出类型保存创建的查询,将查询文件保存为带保存创建的查询,将查询文件保存为

3、带.QPR扩展名的扩展名的文件。文件。运行查询运行查询2023/1/2234.2 用查询设计器建立查询用查询设计器建立查询建立基于单张表的查询例:查询教师表中所有女教师的姓名,性别,出生日期和工作日期,并工作日期升序排序。1.打开查询设计器2.“字段”:确定查询要输出的字段或表达式 保存:.QPR;运行 DO 文件名.QPR;查看SQL语句3.“筛选”:确定查询条件,定义记录子集;4.“排序”:指定查询结果的记录顺序2023/1/224 建立基于多表的查询建立基于多表的查询P117n当需要获取存储在两个或更多表或视图中的信息时,只要把所有有关的表添加到查询中,并设置它们之间的联接关系。1.联接

4、和联接条件联接(Join),是指查询或视图的一个数据库操作。通过比较指定字段中的值联接两个或多个表或视图中的记录。2.联接的类型 P117 表4-22023/1/225建立基于多表的查询建立基于多表的查询二.建立多表查询例1.P1112023/1/2265.“分组”:用于生成分组查询,把具有相同字段值的记录分为一组,合并为查询结果中的一条记录以完成基于一组记录的计算或统计;如何判别一个查询是否需要进行分组?如何判别一个查询是否需要进行分组?一般地说,如果题意中有统计的要求,都要进行分组。一般地说,如果题意中有统计的要求,都要进行分组。而且这样的查询,题意中大多有而且这样的查询,题意中大多有各各

5、、每每等字样。等字样。例:计算例:计算 js表中表中各各个系的人数个系的人数例:统计例:统计每每门课程的选课人数门课程的选课人数 2023/1/227如何确定分组如何确定分组一般地说,在一般地说,在各各、每每等字样后紧跟的词,就是分组的依据。等字样后紧跟的词,就是分组的依据。例:计算例:计算 js表中各个系的人数表中各个系的人数 按按js 表的系代号表的系代号xdh字段分组字段分组 例:统计每门课程的选课人数例:统计每门课程的选课人数 按按cj表的课程代号表的课程代号kcdh字段分组字段分组但也有一些分组查询中不出现各或每字样,这些查询需要但也有一些分组查询中不出现各或每字样,这些查询需要从题

6、意中分析出。从题意中分析出。例:求例:求 js表中男女教师的人数表中男女教师的人数 按按js表的性别表的性别xb字段分组字段分组2023/1/228P114例2合计函数:COUNT(),SUM();AVG();MAX();MIN()在分组基础上,对查询结果筛选:如平均成绩在80分以上6.“杂项”7.查询结果的输出类型查询结果的输出类型:查询查询-查询去向查询去向2023/1/2294.3 SELCET-SQL2023/1/22104.3.1 SQL概述nSQL(Structured Query Language,结构化查询语言)是美国国家标准局ANSI确认的关系数据库语言的标准。VFP支持SQ

7、L。一个SQL命令可以代替多个VFP命令。2023/1/2211VFP支持如下SQL命令:SELECT-SQLSELECT-SQLALTER TABLE-SQLALTER TABLE-SQLCREATE CURSOR-SQLCREATE CURSOR-SQLCREATE TABLE-SQLCREATE TABLE-SQLDELETE-SQLDELETE-SQLINSERT-SQLINSERT-SQLUPDATE-SQLUPDATE-SQL2023/1/2212SELECT-SQL命令的语法:命令的语法:SELECT ALL|DISTINCT TOP nExpr PERCENTAlias.Sel

8、ect_Item AS Column_Name,Alias.Select_Item AS Column_Name.FROM FORCEDatabaseName!Table AS Local_AliasINNER|LEFT OUTER|RIGHT OUTER|FULL OUTER JOINDatabaseName!Table AS Local_AliasON JoinCondition INTO Destination|TO FILE FileName ADDITIVE|TO PRINTER PROMPT|TO SCREENWHERE JoinCondition AND JoinConditio

9、n.AND|OR FilterCondition AND|OR FilterCondition.GROUP BY GroupColumn,GroupColumn.HAVING FilterConditionUNION ALL SELECTCommandORDER BY Order_Item ASC|DESC,Order_Item ASC|DESC.杂项选项卡杂项选项卡字段选项卡字段选项卡联接选项卡联接选项卡筛选选项卡筛选选项卡分组选项卡分组选项卡排序选项卡排序选项卡分组选项卡中的满足条件分组选项卡中的满足条件查询去向查询去向2023/1/22132、查询内容:、查询内容:Alias.Selec

10、t _Item AS Column_Name子句子句 (1)Alias.限定匹配项的名称。如果多个项具有相同的名称限定匹配项的名称。如果多个项具有相同的名称,则应则应在这些项名前加上表的别名和一个句点在这些项名前加上表的别名和一个句点,以防止出现重复的列以防止出现重复的列(2)Select _Item 指定包含在查询结果中的项,可以是字段、指定包含在查询结果中的项,可以是字段、常量、表达式和用户自定义的函数。常量、表达式和用户自定义的函数。注:当查询需要分组时,常需要用到一些合计函数注:当查询需要分组时,常需要用到一些合计函数AVG()、()、COUNT()、()、SUM()、()、MIN()

11、、()、MAX()。()。如果查询结果中包含源表中的所有字段,可使用如果查询结果中包含源表中的所有字段,可使用“*”符号。符号。(3)AS Column_Name 指定查询结果中的各个项的标题。指定查询结果中的各个项的标题。1、杂项、杂项ALL/DISTINCT:设置是否允许重复纪录。设置是否允许重复纪录。TOP nExprPERCENT:设置结果的记录范围。设置结果的记录范围。2023/1/22143、查询对象、查询对象:FROM子句子句列出所有从中检索数据的表。列出所有从中检索数据的表。注:(注:(1)Local_Alias 为表指定一个本地别名。如果指定了本为表指定一个本地别名。如果指定

12、了本地别名,那么在整个语句中都必须用这个别名来代替表名。地别名,那么在整个语句中都必须用这个别名来代替表名。(2)如果是多表查询,要确保联接条件的格局应该是如果是多表查询,要确保联接条件的格局应该是“链式链式”的,即第一个联接条件右边的表别名应该是第二个联接的,即第一个联接条件右边的表别名应该是第二个联接条件左边的表别名,以此类推。所以一个表别名最多出现两次条件左边的表别名,以此类推。所以一个表别名最多出现两次(左一次,右一次)。(左一次,右一次)。4、查询结果去向:、查询结果去向:INTO子句子句指定在何处保存查询结果。指定在何处保存查询结果。查询结果去向是可选项,缺省结果是查询浏览窗口。查

13、询结果去向是可选项,缺省结果是查询浏览窗口。ARRAY 数组名CURSOR临时表名DBF 表名INTOFILE 文本文件名PRINTERSCREENTO2023/1/22155、条件查询、条件查询:WHERE子句子句 指定筛选条件。指定筛选条件。(1)当多表查询时,也可以用)当多表查询时,也可以用WHERE子句实现多表之间的查子句实现多表之间的查询询。6、分组查询:、分组查询:GROUP BY子句子句 按列的值对查询结果进行按列的值对查询结果进行分组。分组。(1)GROUPCOLUMN可以是字段名或表达式,也可以是该可以是字段名或表达式,也可以是该列在查询结果中的列位置(最左边的列编号为列在查

14、询结果中的列位置(最左边的列编号为1)(2)用于分组的字段不一定是输出项。)用于分组的字段不一定是输出项。(3)HAVING子句指定包括在查询结果中的组必须满足的筛选子句指定包括在查询结果中的组必须满足的筛选条件,它应该和条件,它应该和GROUP BY一起使用。一起使用。2023/1/22167、查询结果的排序、查询结果的排序:ORDER BY子句子句根据列的数据对查询结果进行排序。根据列的数据对查询结果进行排序。(1)每个)每个ORDER_ITEM必须对应查询结果中的一列。必须对应查询结果中的一列。(2)ORDER_ITEM可以是输出列的列名或别名,也可以是查询结果中的列可以是输出列的列名或

15、别名,也可以是查询结果中的列位置位置(最左边的列编号为最左边的列编号为1)(3)ASC 指定以升序排列,是指定以升序排列,是ORDER BY的默认选项。的默认选项。DESC指定以降序指定以降序排列。排列。8、联合查询、联合查询:UNION子句子句 把一个把一个SELECT-SQL语句的最后查询结果和另一个语句的最后查询结果和另一个SELECT-SQL语句的最后查询结果组合起来。语句的最后查询结果组合起来。(1)默认情况下,)默认情况下,UNION检查组合结果并排除重复的行;如需要重复的行,则加上检查组合结果并排除重复的行;如需要重复的行,则加上ALL子句。子句。(2)要组合多个)要组合多个UN

16、ION子句,可以使用括号。子句,可以使用括号。UNION子句要遵守下列的规则:子句要遵守下列的规则:(1)不能使用)不能使用UNION来组合子查询。来组合子查询。(2)两个)两个SELECT-SQL命令的查询结果中的列数必须相同。命令的查询结果中的列数必须相同。(3)两个两个SELECT-SQL查询结果中的对应列必须有相同的数据类型和宽度。查询结果中的对应列必须有相同的数据类型和宽度。(4)只有最后的)只有最后的SELECT-SQL中可以包含中可以包含ORDER BY子句,而且按编号指出所输出的子句,而且按编号指出所输出的列。列。2023/1/22174.4视图的创建和使用视图的创建和使用20

17、23/1/2218视图与查询的区别n查询得到的是一组只读型的检索结果。而视图可以从表中提取一组记录,改变这些记录的值,并把更新结果送回到源表中。n查询保存为一个可执行的.qpr程序文件,而视图保存在数据库中,是数据库的组成部分,与库表具有类似的性质。视图兼有表和查询的特点。源数据表称为基表。n两类:本地视图,远程视图2023/1/221900distinct2023/1/2220To printerNot in2023/1/22211Sum(iif(cj.cj60,0,kc.xf)2023/1/2222某考试管理系统中有两个表:考试语种表(某考试管理系统中有两个表:考试语种表(tyz.dbf)

18、和考生报)和考生报名表(名表(bm.dbf)。考试语种表含有语种代号()。考试语种表含有语种代号(yzdh,c,2)和语种)和语种名称(名称(yzmc,c,15)字段,考生报名表含有准考证号()字段,考生报名表含有准考证号(zkz,c,10)等字段,设准考证等字段,设准考证zkz字段的第字段的第4、5位字符表示该考生所报的考位字符表示该考生所报的考试语种代号,则下列试语种代号,则下列select-sql命令可用于统计和显示各语种报命令可用于统计和显示各语种报名考试的人数:名考试的人数:2023/1/2223Select tyz.zydh,tyz.yzmc,count(*)as 人数人数;Fro

19、m tyz inner join bm;on tyz.yzdh=考点:考点:substr()函数使用,函数使用,group by 分组语句的使用分组语句的使用Substr(allt(bm.zkz),4,2)Group by 12023/1/2224设有一学生成绩表(设有一学生成绩表(xscj.dbf),含有学号(含有学号(xh,C,10)、姓名)、姓名(xm,C,8)和成绩()和成绩(cj,N,3)字段,下列程序段用于统计并显)字段,下列程序段用于统计并显示分数段示分数段60分以下,分以下,90分以上和分以上和6090分的人数与比例:分的人数与比例:Alter table xscj add c

20、olumm bz C(8)Update xscj set bz=;iif(cj89,90分以上分以上,6089分分)Select xscjn=RECCOUNT()Select bz as 分数段分数段,count(*)as 人数人数,*100 as 比例;比例;From xscj;Group by bzAlter table xscj bz /删除备注字段删除备注字段bzCount(*)/n考点:考点:alter table命令使用,命令使用,reccount()函数,函数,update命令使用命令使用Drop column2023/1/2225数据库数据库SJK的学生表的学生表(xs.dbf

21、)中有学号中有学号(xh,C,8)、姓名、姓名(xm,C,8)等字等字段;成绩表段;成绩表(cj.dbf)中有学号中有学号(xh,C,8)、课程代号、课程代号(kcdh,C,3)和成绩和成绩(cj,N,3)等字段。以下等字段。以下select-sql语句用于查询选修课程门数在语句用于查询选修课程门数在6门以门以上的学生选修课程门数、成绩优秀的课程门数(优秀指成绩大于上的学生选修课程门数、成绩优秀的课程门数(优秀指成绩大于等于等于85)。)。Select xs.xh,xs.xm,count(*)as 选课门数,;选课门数,;as 优秀课程门数;优秀课程门数;From sjk!xs inner j

22、oin sjk!cj on xs.xh=cj.xh;Group by ;选课门数选课门数=6考点:满足条件考点:满足条件having语句的使用;统计函数语句的使用;统计函数sum()的使用的使用Sum(iif(cj=85,1,0)xhhaving2023/1/2226Not inlsb2023/1/2227.F.22023/1/2228HSRQ-(jyrq+60)union2023/1/22292023/1/2230Sum(单价单价*藏藏书册数书册数)Jy.借书证号借书证号Having 2023/1/223112002023/1/22322023/1/2233IIF(cj59,1,0)通过人数通过人数/3 DESC2023/1/2234

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com