《第05章查询和视图精选PPT.ppt》由会员分享,可在线阅读,更多相关《第05章查询和视图精选PPT.ppt(80页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第05章查询和视图第1页,此课件共80页哦引言引言1、为什么要学习查询与视图?、为什么要学习查询与视图?视图和查询利用查询,可以在多个表中视图和查询利用查询,可以在多个表中提取特定的数据,方便地实现对各种数提取特定的数据,方便地实现对各种数据的查询。据的查询。2、SELECT-SQL命令重要性命令重要性 查询、视图中存放的都是查询、视图中存放的都是 SELECT-SQL命令命令例例第2页,此课件共80页哦 5.1 SQL5.1 SQL语言和查询技术语言和查询技术5.2 5.2 查询的创建和使用查询的创建和使用5.3 5.3 视图的创建和使用视图的创建和使用第3页,此课件共80页哦5.1 SQL
2、命令和命令和查询技术查询技术第4页,此课件共80页哦 5.1.1 SQL 语言概述语言概述第5页,此课件共80页哦 SQL的含义:SQL是英文Structure Query Language(结构化查询语言)的缩写,是关系数据库语言通用的结构查询语言。SEQUEL2SEQUEL2 SQL 86SQL 86 SQL 89SQL 89 SQL 92SQL 92 SQL:1999SQL:1999第6页,此课件共80页哦1.综合统一综合统一一、SQL语言主要特点数据定义语言,数据操纵语言,数数据定义语言,数据操纵语言,数据查询语言,数据控制语言据查询语言,数据控制语言2.高度非过程化高度非过程化3.面
3、向集合的操作方式面向集合的操作方式4.语言简洁、易学易用语言简洁、易学易用5.以同一种语法结构提供两种使用方式以同一种语法结构提供两种使用方式既可以作为交互式语言独立使用既可以作为交互式语言独立使用,也可以作为子也可以作为子语言嵌入宿主语言中使用语言嵌入宿主语言中使用第7页,此课件共80页哦1.CREATE CURSOR-SQL2.CREATE TABLE-SQL3.ALTER TABLE SQL二、VFP支持的SQL命令数据定义语言(数据定义语言(DDL)DDL)数据操纵语言(数据操纵语言(DML)DML)数据查询语言(数据查询语言(DQL)DQL)4.DELETE-SQL5.INSERT-
4、SQL6.UPDATE SQL7.SELECT-SQL第8页,此课件共80页哦 5.1.2 SELECT-SQL命令命令第9页,此课件共80页哦SELECTSELECT ALL|DISTINCT TOP n PERCENT ALL|DISTINCT TOP n PERCENT 别名别名.列表项列表项 AS AS 列名列名 ,别名别名.列表项列表项 AS AS 列名列名 FROMFROM 数数 据据 库库!表表 名名 别别 名名 ,数数 据据 库库!表表 名名 别别 名名 INNER|LEFT|RIGHT|FULL JOIN INNER|LEFT|RIGHT|FULL JOIN 表名表名 ON
5、ON 联接条件联接条件 INTOINTO ARRAY ARRAY 数数 组组 名名|CURSOR CURSOR 临临 时时 表表 名名|DBF DBF 表表 名名|TABLE TABLE 表表 名名|TOTO FILE FILE 文件名文件名 ADDITIVE|TO PRINT PROMPT|TO SCREEN ADDITIVE|TO PRINT PROMPT|TO SCREEN WHEREWHERE 条件表达式条件表达式 GROUPGROUP BY BY 列名列名 ,列名,列名 HAVING HAVING 条件条件 UNIONUNION ALL SELECT ALL SELECT 命令命令
6、ORDER BY 表达式表达式 ASC|DESC,ASC|DESC,SELECT-SQL命令格式命令格式第10页,此课件共80页哦 SELECTSELECT 列表项用于指明查询输出的项目列表项用于指明查询输出的项目FROMFROM子句指明被查询的自由表、数据库表或视图名。子句指明被查询的自由表、数据库表或视图名。INTOINTO、TO TO 子句指明查询结果保存在何处。子句指明查询结果保存在何处。WHERE WHERE 子句指明查询的联接条件或筛选条件子句指明查询的联接条件或筛选条件GROUP BYGROUP BY子句表示将查询结果按指定列的值分组子句表示将查询结果按指定列的值分组UNIONU
7、NION子子句句把把一一个个SELECTSELECT语语句句的的查查询询结结果果同同另另一一个个SELECTSELECT语句的查询结果组合起来。语句的查询结果组合起来。ORDER BYORDER BY子句可对查询结果按子句中指定的列的值排序子句可对查询结果按子句中指定的列的值排序第11页,此课件共80页哦 5.1.3 SELECT-SQL应用应用第12页,此课件共80页哦SELECT子子句句 用用于于指指明明查查询询输输出出的的项项目目,可可以以是是字字段段、表表达达式式。利利用用表表达达式式可可以以查查询询表表中未存储但可以计算出的结果。中未存储但可以计算出的结果。FROM子子句句 指指明明
8、数数据据源源即即被被查查询询的的表表或或视视图图名。名。SELECT和和FROM子子句句是是每每个个SQL查查询询语语句句所所必须的必须的。一、简单查询第13页,此课件共80页哦查询全部信息查询全部信息例例:查询教师表查询教师表(js)的全部信息的全部信息select*from jsselect*from js第14页,此课件共80页哦查询某个、几个字段查询某个、几个字段例例:1、查询学生表、查询学生表(xs)中的专业代号(中的专业代号(zydh)2、查询学生表中的姓名、查询学生表中的姓名(xm)、学号学号(xh)1、SELECT FROM xs2、SELECT ,from xszydhxmx
9、h第15页,此课件共80页哦去除重复信息去除重复信息例例:查询学生表中的专业号查询学生表中的专业号(zydh),对于系号相同只显示对于系号相同只显示1次。次。SELECT DISTINCT zydh FROM xs第16页,此课件共80页哦输出字段表达式输出字段表达式例例:查询教师表查询教师表js中,教师的工号中,教师的工号(gh)、姓名、姓名(xm)、性别(、性别(xb)和年龄和年龄SELECT gh,xm,xb,;SELECT gh,xm,xb,;year(date()-year(csrq)as year(date()-year(csrq)as 年龄年龄;FROM jsFROM js第17
10、页,此课件共80页哦 WHERE子句子句 说明查询的条件:说明查询的条件:用用来来指指定定筛筛选选记记录录的的条条件件。有有多多个个条条件件时,可用时,可用AND或或OR连接。连接。第18页,此课件共80页哦条件查询条件查询例例:查询学生表(查询学生表(xs)中性别是女的学生的中性别是女的学生的学号学号(xh)、姓名、姓名(xm)、性别、性别(xb)及年龄)及年龄SELECT xh,xm,xb,year(date()-year(csrq)as 年龄年龄;FROM xs;Where _xb=女女第19页,此课件共80页哦ORDER BY子子句句 可可对对查查询询结结果果按按子子句句中中指指定定的
11、的列列的的值排序。值排序。可可以以多多个个列列,用用逗逗号号分分隔隔,写写在在前前面面的的优优先先,可可以以写写列名或编号。列名或编号。ASC表表示示升升序序,DESC表表示示降降序序。缺缺省省情情况况下下,是是以以升升序序排序排序(ASC)。第20页,此课件共80页哦排序查询结果排序查询结果例例:查询教师表(查询教师表(js)中工龄在中工龄在10年以上(包括年以上(包括10年)的教师的工号年)的教师的工号(gh)、姓名、姓名(xm)和工龄和工龄(gl),并按工龄由高到低列出。,并按工龄由高到低列出。SELECT gh,xm,_ as 工龄工龄;FROM js;WHERE _=10;ORDER
12、 BY 3 DESC year(Date()-year(gzrq)year(Date()-year(gzrq)第21页,此课件共80页哦数据区间查询:数据区间查询:在查找中,如果要求某列的在查找中,如果要求某列的数值在某个区间内,可用谓词:数值在某个区间内,可用谓词:BETWEENAND 表示;表示;如果要求某列的数值不在某个区间内,如果要求某列的数值不在某个区间内,可用谓词:可用谓词:NOT BETWEENAND 表示。表示。当然查询的条件也可以直接用相应的逻当然查询的条件也可以直接用相应的逻辑表达式来表示。辑表达式来表示。第22页,此课件共80页哦数据区间查询数据区间查询例例 查询工龄在查
13、询工龄在812年之间的教师的工号、姓年之间的教师的工号、姓名和工龄。名和工龄。SELECT gh as 工号工号,xm as 姓名姓名,;year(Date()-year(gzrq)as 工龄工龄;FROM js;WHERE year(Date()-year(gzrq);BETWEEN 8 AND 12第23页,此课件共80页哦数据区间查询数据区间查询例例 查询工龄不在查询工龄不在812年之间的教师的工号、年之间的教师的工号、姓名和工龄。姓名和工龄。SELECT gh as 工号工号,xm as 姓名姓名,;year(Date()-year(gzrq)as 工龄工龄;FROM js;WHERE
14、 year(Date()-year(gzrq);NOT BETWEEN 8 AND 12返回返回第24页,此课件共80页哦数数据据包包含含查查询询:若若查查找找的的列列值值是是某某几几个个值值中中的的一一个个,此此时时可可用用谓谓词词IN来来表表示示。同同样样可可以以使使用用谓谓词词NOT IN来来表表示示与与IN完完全相反的查询。全相反的查询。数数据据匹匹配配查查询询:在在查查找找中中,有有时时需需要要对对字字符符串串比比较较。LIKE提提供供两两种种字字符符串串匹匹配配方方式式,一一种种是是使使用用下下划划线线符符“_”,匹匹配配任任意意一一个个西西文文字字符符或或中中文文字字符符,另另一
15、一种种是是用用百百分分号号,匹匹配配0个个或或多多个个字字符符的的字字符符串串。同同样样可可以以使使用用NOT LIKE表表示示与与LIKE相相反反的的含义含义第25页,此课件共80页哦数据包含查询数据包含查询例例:查询籍贯为查询籍贯为“上海上海”或或“江苏扬州江苏扬州”的学生的学号、姓名和籍贯。的学生的学号、姓名和籍贯。SELECT xh,xm,jg FROM xs;WHERE jg IN(上海上海,江苏扬州江苏扬州)第26页,此课件共80页哦数据匹配查询数据匹配查询例例 查询在查询在“D”部门工作的教师情况,工号部门工作的教师情况,工号的第的第1位表示部门。位表示部门。SELECT*FRO
16、M js;WHERE gh LIKE D_返回返回用用%,如,如 LIKE D%LIKE D%第27页,此课件共80页哦数据包含查询数据包含查询例例 查询学生姓名中包含查询学生姓名中包含“军军”字的学生学字的学生学号、姓名。号、姓名。SELECT xh,xm FROM xs;WHERE xm LIKE%军军%返回返回第28页,此课件共80页哦l多表联接查询与单表查询的不同:多表联接查询与单表查询的不同:查询的数据源为两个以上的表或视图查询的数据源为两个以上的表或视图表之间需要建立表之间需要建立联接条件联接条件或使用或使用筛选条件筛选条件lSQL语言可以在两个表之间按指定列的相语言可以在两个表之
17、间按指定列的相同值将一个表中的行与另一表中的行连接同值将一个表中的行与另一表中的行连接起来,从而大大增强了其查询能力。起来,从而大大增强了其查询能力。二、多表查询第29页,此课件共80页哦联接查询联接查询例例 查询学生的学号、姓名、课程、成绩,并按查询学生的学号、姓名、课程、成绩,并按学号排升序。涉及学号排升序。涉及3个表:个表:xs、cj、kcSELECT ;FROM xs INNER JOIN cj INNER JOIN kc;ON Cj.kcdh=Kc.kcdh ON Xs.xh=Cj.xh ;ORDER BY Xs.xh返回返回Xs.xh,Xs.xm,Kc.kcm,Cj.cj第30页,
18、此课件共80页哦SELECT Xs.xh,Xs.xm,Kc.kcm,Cj.cj;FROM xs;INNER JOIN cj ON Xs.xh=Cj.xh ;INNER JOIN kc ON Cj.kcdh=Kc.kcdh;ORDER BY Xs.xhSELECT Xs.xh,Xs.xm,Kc.kcm,Cj.cj;FROM xs,cj,kc;WHERE Xs.xh=cj.xh AND Cj.kcdh=kc.kcdh;ORDER BY Xs.xh第31页,此课件共80页哦SELECT语句可以通过字段函数对满足条件的数据进行统计、计数语句可以通过字段函数对满足条件的数据进行统计、计数等运算。下列五种
19、字段函数可以在等运算。下列五种字段函数可以在SELECT子句中与选定的列一子句中与选定的列一起使用。起使用。l MIN 求求(字符、日期、数值字符、日期、数值)列的最小值列的最小值l MAX 求求(字符、日期、数值字符、日期、数值)列的最大值列的最大值l COUNT 对一列中的值计算个数对一列中的值计算个数l SUM 计算数值列的总和计算数值列的总和l AVG 计算数值列的平均值计算数值列的平均值这些函数可从一组值中计算出一个汇总信息。这些函数可从一组值中计算出一个汇总信息。三、统计处理第32页,此课件共80页哦GROUP BY子句:将表按列的值分组,列的值相同的分在一子句:将表按列的值分组,
20、列的值相同的分在一组内,每一组聚合生成一条记录,通常情况下,根据统组内,每一组聚合生成一条记录,通常情况下,根据统计要求进行分组,如果未进行分组,则结果为全体数据计要求进行分组,如果未进行分组,则结果为全体数据的统计。基表中的一组数据在查询结果中生成一条记录。的统计。基表中的一组数据在查询结果中生成一条记录。HAVING:在:在Having后的条件是用来指定每一分后的条件是用来指定每一分组所应满足的条件,只有符合条件的组才能在结果中组所应满足的条件,只有符合条件的组才能在结果中输出;而前面所讲的输出;而前面所讲的WHERE子句中的条件,是用来子句中的条件,是用来指定表中元组(记录)所应满足的条
21、件。指定表中元组(记录)所应满足的条件。第33页,此课件共80页哦统计查询统计查询例例 查询查询js表中表中,教师的人数、最高工龄、最低教师的人数、最高工龄、最低工龄、平均工龄。工龄、平均工龄。SELECT count(*)as 人数,;max(year(Date()-year(gzrq)as 最高工龄,;min(year(Date()-year(gzrq)as 最低工龄,;avg(year(Date()-year(gzrq)as 平均工龄;FROM js;返回返回第34页,此课件共80页哦返回返回统计查询统计查询例例 查询查询js表中表中,每个部门男女教师的人数每个部门男女教师的人数,并按部
22、门并按部门排升序,部门由工号的第排升序,部门由工号的第1位数据表示。位数据表示。SELECT left(gh,1)as 部门部门,xb as 性别性别,;count(*)as 人数人数 ;FROM js;GROUP BY 1,xb;ORDER BY 1返回返回第35页,此课件共80页哦返回返回统计查询统计查询例例 根据根据xs、cj、kc表,统计各系各门课程的考试情况。表,统计各系各门课程的考试情况。输出字段:系名、课程名、考试人数、优秀率输出字段:系名、课程名、考试人数、优秀率(=90)、不及格率,并按系名升序排序。不及格率,并按系名升序排序。select ximing,kcm,count(
23、*)as select ximing,kcm,count(*)as 考试人数考试人数 ,;,;sum(iif(cj=90,1,0)/count(*)as sum(iif(cj=90,1,0)/count(*)as 优秀率优秀率 ,;,;sum(iif(cj60,1,0)/count(*)as sum(iif(cj=5第37页,此课件共80页哦 如果一个如果一个SELECT命令无法完成查询任务,而需要一命令无法完成查询任务,而需要一个子个子SELECT的结果作为条件语句的条件,即在一个的结果作为条件语句的条件,即在一个SELECT命令的命令的WHERE子句中出现另一个子句中出现另一个SELECT
24、命令,命令,则称为嵌套查询或称为子查询,必须用括号括起来。则称为嵌套查询或称为子查询,必须用括号括起来。需要注意的是,子需要注意的是,子SELECT的结果必须是确定的内容;的结果必须是确定的内容;在在VFP查询语句的查询语句的WHERE子句中最多只能嵌套一次。子句中最多只能嵌套一次。四、嵌套查询第38页,此课件共80页哦嵌套查询嵌套查询例例 查询与李兰同学在同一个班级的所有学生姓名,班号由学查询与李兰同学在同一个班级的所有学生姓名,班号由学号的前号的前4位决定。位决定。返回返回SELECT xm as SELECT xm as 姓名姓名;FROM xs;FROM xs;WHERE Substr
25、(xh,1,4)WHERE Substr(xh,1,4)ININ;(SELECT Substr(xh,1,4);(SELECT Substr(xh,1,4);FROM xs WHERE xm=FROM xs WHERE xm=李兰李兰)可以把“IN”换为“=”第39页,此课件共80页哦 在在SQL语言中可以将两个或多个查询结果进行并语言中可以将两个或多个查询结果进行并(UNION)操作。操作。注意:两个查询结果进行并操作时,它们必须具有相同的列数,并且对应注意:两个查询结果进行并操作时,它们必须具有相同的列数,并且对应的列有着相同的数据类型和宽度。的列有着相同的数据类型和宽度。默认情况下,默认
26、情况下,UNION并运算自动去掉重复记录,若不要删除组合结果中并运算自动去掉重复记录,若不要删除组合结果中重复的行,需在重复的行,需在SELECT子句中加子句中加ALL选项。选项。在在SQL语言中提供了三种集合操作符:语言中提供了三种集合操作符:UNION(并并)、INTERSECT(交交)和和EXCEPT(差差)操作符,但操作符,但VFP系统只系统只支持支持UNION并运算。并运算。五、联合查询第40页,此课件共80页哦联合查询联合查询例例 查询计算机系和信息管理系的教师名单。要求结果中包含四查询计算机系和信息管理系的教师名单。要求结果中包含四个列:系名、姓名、性别和工龄,并按姓名排序。个列
27、:系名、姓名、性别和工龄,并按姓名排序。返回返回select ximing,xm,xb,gl;select ximing,xm,xb,gl;from js;from js;where ximing=where ximing=计算机系计算机系;union;union;select ximing,xm,xb,gl;select ximing,xm,xb,gl;from js;from js;where ximing=where ximing=信息管理系信息管理系;Order by 2Order by 2第41页,此课件共80页哦例:查询例:查询xs表中,每个班级的入学平均分以及表中,每个班级的入学
28、平均分以及xs表中全部学表中全部学生的入学平均分。生的入学平均分。sele bjdh as 班级班级,avg(rxzf)as 入学平均分入学平均分;from xs;group by 1;union;sele 总平均总平均 as 班级班级,avg(rxzf)as 入学平均分入学平均分;from xs第42页,此课件共80页哦例:基于例:基于js表和表和xs表查询全体师生名单。结果中包含表查询全体师生名单。结果中包含3个列:类别,姓名,个列:类别,姓名,性别,并按姓名升序排序。要求如果是教师,类别中为性别,并按姓名升序排序。要求如果是教师,类别中为“教师教师”,如果是学生,如果是学生,类别中为类别
29、中为“学生学生”。sele 教师教师 as 类别类别,jsxm as 姓名姓名,xb as 性别性别;from js;union;sele 学生学生 as 类别类别,xsxm as 姓名姓名,xb as 性别性别;from xs;order by 2第43页,此课件共80页哦例:基于例:基于xs表,查询入学总分在各分数段的人数。输出结果中表,查询入学总分在各分数段的人数。输出结果中包含包含2列:分数段类型和数量,并按分数段类型降序排序。分数段:列:分数段类型和数量,并按分数段类型降序排序。分数段:700以上以上,600-699,500-599,400-499。sele 700sele 700以
30、上以上以上以上 as as 分数段类型分数段类型分数段类型分数段类型,count(*)as,count(*)as 人数人数人数人数;from xs;from xs;where rxzf=700;where rxzf=700;union;union;sele 600-699 as sele 600-699 as 分数段类型分数段类型分数段类型分数段类型,count(*)as,count(*)as 人数人数人数人数;from xs;from xs;where rxzf=600 and rxzf=600 and rxzf=500 and rxzf=500 and rxzf600;union;unio
31、n;sele 400-499 as sele 400-499 as 分数段类型分数段类型分数段类型分数段类型,count(*)as,count(*)as 人数人数人数人数;from xs;from xs;where rxzf500;where rxzf=;(sele avg(b.cj)from cj b where b.kcdh=a.kcdh);order by 1第46页,此课件共80页哦返回返回例例 在学生表中查询所有同年同月同日生的男女生对。在学生表中查询所有同年同月同日生的男女生对。自联接查询自联接查询sele a.xm as nan,b.xm as nv,b.csrq;from xs
32、 a,xs b;where a.xmb.xm and;a.csrq=b.csrq and;a.xb=男男 and b.xb=女女第47页,此课件共80页哦 在在SQL语言中,语言中,INTO子句指明查询结果保存在何处。可子句指明查询结果保存在何处。可以是数组、临时表或表。以是数组、临时表或表。TO子句也可以指明查询结果输出子句也可以指明查询结果输出到何处。可以是文件、打印机或到何处。可以是文件、打印机或VFP主窗口。主窗口。若没有上述子句,则输出为浏览窗口;如果在同一个若没有上述子句,则输出为浏览窗口;如果在同一个查询语句中同时包括了查询语句中同时包括了INTO子句和子句和TO子句,则子句,则
33、TO子句子句不起作用。不起作用。设置查询输出第48页,此课件共80页哦设置查询输出设置查询输出例例 学生表学生表xs中有学号中有学号(xh,C,8)、姓名、姓名(xm,C,8)等字段等字段;成绩表成绩表cj中有学号中有学号(xh,C,8)、课程代号、课程代号(kcdh,C,3)和成绩和成绩(cj,N,3)等字段。等字段。以下以下SELECT-SQL命令是根据学生表和成绩表查询选修课程在命令是根据学生表和成绩表查询选修课程在6门门以上的学生选修课程门数、成绩优秀的课程门数以上的学生选修课程门数、成绩优秀的课程门数(注注:优秀是指成优秀是指成绩大于或等于绩大于或等于85)。查询结果输出到。查询结果
34、输出到abc表。表。返回返回 SELECT xs.xh,xs.xm,COUNT(*)AS 选课门数选课门数,;(IIF(cj.cj=85,1,0)AS 优秀课门数优秀课门数;FROM xs INNER JOIN cj ON xs.xh=cj.xh;GROUP BY xs.xh;选课门数选课门数=6;Into Table abcSUMHaving第49页,此课件共80页哦红红框框中中的的是是可可选选部部分分第50页,此课件共80页哦5.2 查询的创建和使用查询的创建和使用第51页,此课件共80页哦 5.2.1 查询的本质查询的本质第52页,此课件共80页哦l查询查询 从数据库中检索并统计出所需的
35、数据。从数据库中检索并统计出所需的数据。其结果是一个基于表或视图的数据集合。其结果是一个基于表或视图的数据集合。l创建查询创建查询 必须基于确定的数据源。必须基于确定的数据源。l数据源数据源 可是自由表、数据库表或视图。可是自由表、数据库表或视图。l注意:注意:1.查询中对应的源表的数据是不可以更改的;查询中对应的源表的数据是不可以更改的;2.查询文件的扩展名是查询文件的扩展名是.QPR;3.文件中保存的是实现查询的文件中保存的是实现查询的SELECT-SQL 命令,并非查询的结果。命令,并非查询的结果。第53页,此课件共80页哦如何创建查询文件如何创建查询文件3 3种方法:种方法:l直接使用
36、直接使用SELECT-SQL语句语句 modify command .qpr 注:运行查询文件命令注:运行查询文件命令 do.qprl查询设计器查询设计器l查询向导查询向导第54页,此课件共80页哦 5.2.2 查询设计器的使用查询设计器的使用第55页,此课件共80页哦一、建立单表查询例例 1 在学生表中查询所有在在学生表中查询所有在18182020岁之间的学生岁之间的学生的学号、姓名、性别、年龄,并按学号升序排序。的学号、姓名、性别、年龄,并按学号升序排序。例例 2 在教师表中查询所有高级职称的教师的在教师表中查询所有高级职称的教师的 姓名、姓名、性别、职称性别、职称 。第56页,此课件共8
37、0页哦二、统计处理例例 1 基于基于xs表,表,统计每班的男女生人数。输出班级统计每班的男女生人数。输出班级代号,性别,人数代号,性别,人数例例 2 基于基于xsxs表,统计每班女生的人数及女生的比例。表,统计每班女生的人数及女生的比例。输出班级代号,总人数,女生人数输出班级代号,总人数,女生人数,女生女生,比例,并按比例,并按比例降序排序。比例降序排序。lSUM(IIF(xb=“女女”,1,0)as 女生人数女生人数lSUM(IIF(xb=“女女”,1,0)/COUNT(*)as 女生比女生比例例第57页,此课件共80页哦三、多表查询例例 1 基于基于xsxs表和表和cjcj表,查询每个学生
38、各门课程的表,查询每个学生各门课程的成绩。输出:学号,姓名,课程代号,成绩。成绩。输出:学号,姓名,课程代号,成绩。例例 2 基于基于jsjs表和表和rkrk表,查询每个教师的任课情况。表,查询每个教师的任课情况。输出:工号,姓名,任课班级,课程代号。输出:工号,姓名,任课班级,课程代号。第58页,此课件共80页哦联接的类型联接的类型 P.112 表表5-6l内联接内联接 inner joinl左联接左联接 left outer joinl右联接右联接 right outer joinl完全联接完全联接 full join?join ;on xs.xh=cj.xh第59页,此课件共80页哦查询
39、结果的输出去向查询结果的输出去向l浏览窗口浏览窗口 (默认默认)ldbf表表l临时表l报表l标签l.第60页,此课件共80页哦5.3 视图的创建和使用视图的创建和使用第61页,此课件共80页哦 5.3.1 视图的实质视图的实质第62页,此课件共80页哦视图视图 是一种数据库对象,视图允许用户从一个表或一组表是一种数据库对象,视图允许用户从一个表或一组表中建立一个中建立一个“虚表虚表”。视图与表的不同之处,视图中没有数据,仅仅是视图与表的不同之处,视图中没有数据,仅仅是SQL查查询语句。询语句。分类分类本地视图本地视图:使用:使用VFPSQL语法从表或视图中获取信息。语法从表或视图中获取信息。远
40、程视图远程视图:使用远程:使用远程SQL语法从远程语法从远程ODBC数据源表中获数据源表中获取信息。取信息。ODBC(开放式数据互连开放式数据互连)是一种用于数据库服务器的标是一种用于数据库服务器的标准协议准协议)第63页,此课件共80页哦 5.3.2 创建本地视图创建本地视图第64页,此课件共80页哦视图查询注意比较注意比较 查询信息的操作基本一样查询信息的操作基本一样第65页,此课件共80页哦注意比较注意比较第66页,此课件共80页哦注意打开数据库,其中包含的对象注意打开数据库,其中包含的对象第67页,此课件共80页哦注意保存的对话操作注意保存的对话操作第68页,此课件共80页哦 5.3.
41、3 创建参数化视图创建参数化视图第69页,此课件共80页哦例:基于学生表和班级表创建一个通用视图,例:基于学生表和班级表创建一个通用视图,根据提供的班级代号,显示该班级的学生记录。根据提供的班级代号,显示该班级的学生记录。查查询询不不可可用用第70页,此课件共80页哦运行后,显示如下输入框输入班级代号运行后,显示如下输入框输入班级代号按确认按确认显示显示第71页,此课件共80页哦 5.3.4 使用视图使用视图更新基表的数据更新基表的数据第72页,此课件共80页哦l视图不仅可以显示数据,而且可以更新视图不仅可以显示数据,而且可以更新基表的数据。基表的数据。l为此需要在视图设计器的为此需要在视图设
42、计器的“更新条件更新条件”选项卡中,设置关键字段、可更新字段、选项卡中,设置关键字段、可更新字段、设置设置“发送发送SQL更新更新”选项。选项。第73页,此课件共80页哦 5.3.5 视图的操作视图的操作第76页,此课件共80页哦1、视图的打开、关闭与浏览同表的操作一样、视图的打开、关闭与浏览同表的操作一样l基表随视图的打开而打开,但是基表不随视图基表随视图的打开而打开,但是基表不随视图的关闭而自动关。的关闭而自动关。l一个视图在使用时,作为临时表在自己的工作一个视图在使用时,作为临时表在自己的工作区中打开区中打开l显示视图结构显示视图结构 USE nodata browl 视图作为数据源使用
43、视图作为数据源使用视图的操作视图的操作第77页,此课件共80页哦查询查询l查询文件中保存的是查询文件中保存的是 SELECT-SQL 语句语句l 是只读型的检索结果。是只读型的检索结果。l不能更新基表的数据不能更新基表的数据视图视图 l视图兼有表和查询的特点:视图兼有表和查询的特点:视图中是视图中是SQL查询语句,可以从一张或多张关联表中提查询语句,可以从一张或多张关联表中提取有用的信息。取有用的信息。是数据库的一部分,可以更新基表的数据。是数据库的一部分,可以更新基表的数据。视图可以作为数据源。视图可以作为数据源。查询和视图比较查询和视图比较第78页,此课件共80页哦 学号学号姓名姓名 年龄年龄 性别性别 0001 张山 21 女 0002 李四 22 男 100 英语 k02 100 数学 k01学时数学时数课程名课程名课程号课程号学生表学生表xs课程表课程表kc成绩表成绩表cj 90 0002 k02 80 0001 k01 成绩成绩 学号学号课程号课程号 60 0001 k02 70 0002 k01第79页,此课件共80页哦 学号学号姓名姓名 课程名课程名 成绩成绩 0001 张山 英语 60 0002 李四 英语 90查询学生的英语成绩查询学生的英语成绩第80页,此课件共80页哦
限制150内