第5章查询和视图_第1页
第5章查询和视图_第2页
第5章查询和视图_第3页
第5章查询和视图_第4页
第5章查询和视图_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

第五章查询和视图本章知识点:查询,视图,select-sql语句查询:从表中检索或统计出所需的数据视图:是一张虚表,不仅具有查询的功能,而且可以改变视图中记录的值,并把结果送回到源表中5.1查询的创建和使用5.2视图的创建和使用5.3select-sql语句查询的创建和使用一、查询的有关概念二、利用查询设计器建立基于单表的查询三、创建多表查询四、交叉表查询查询的有关概念定义:是指向一个数据库发出检索信息的请求,使用一些条件提取特定的记录。查询的结果:基于表和视图的动态的数据集合。查询的数据源:自由表,库表,视图(可以是单张表,也可以是多张相关的表)查询的本质:生成一条select-sql语句,一个查询保存为一个扩展名为.qpr的文件。利用查询设计器建立基于单表的查询1、打开查询设计器2、定义查询输出的内容3、设置查询的筛选条件4、设置查询结果的排序依据5、设置查询结果的分组依据6、对查询结果的其它设置7、运行查询8、选择查询结果的输出类型例5.1

查询教师工资表中基本工资在500元以上(含500元)的教师的工号、基本工资情况,并按基本工资的降序排序。打开查询设计器打开查询设计器的方式:项目管理器/查询/新建文件菜单/新建,常用工具栏/新建命令createquery查询设计器界面上半部分:数据表显示区,首先应添加数据源下半部分:6个选项卡查询设计器界面查询设计器查询所基于的表列表六个选项卡输出字段定义查询输出的内容“字段Fields”选项卡,添加、全部添加1)若输出的列不是直接来源于表字段,可以定义关于表字段的函数或表达式2)选定的顺序决定了结果中信息列的顺序3)若给字段添加别名,可在“函数和表达式”文本框中输入,如js.ghas工号4)工具按钮:查询设计器工具栏/SQL按钮,可以看到系统自动生成的select-sql语句输出字段设置查询的筛选条件“筛选Filter”选项卡:利用条件表达式,定义记录子集1)一行构成一个逻辑关系

行之间的关系可用逻辑运算符指定2)在“实例”文本框中输入比较条件时应注意p117设置查询结果的排序依据“排序依据OrderBy”选项卡“排序条件OrderingCriteria”列表框中的顺序决定了排序的优先权设置查询结果的分组依据“分组依据GroupBy”选项卡分组:将一组类似的记录压缩成一个结果记录作用:可完成基于一组记录的计算相关函数:COUNT(),SUM(),AVG(),MAX(),MIN()说明:1.用于分组的字段不一定是已选定输出字段,但应该是表中的原始字段,不能是一个计算字段2.若在分组的基础上,还需对结果进行筛选,单击“满足条件Having”按钮对查询结果的其它设置“杂项Miscellaneous”选项卡1.排除结果中所有重复的行(无重复记录Noduplicates)2.设置结果的记录范围全部All前n个记录Topn前n%个记录nPercent运行查询“运行”按钮:!菜单命令:查询/运行查询命令:do*.qpr选择查询结果的输出类型若为选择输出类型,结果将输出在浏览窗口中菜单命令:查询/查询去向

Query/Query

Destination创建多表查询1)与单表查询区别#表的数目是两张或两张以上#多张表之间需建立联接条件2)联接的概念:联接是根据给定的联接条件将两个关系模式拼成一个新的关系,联接是指查询或视图的一个数据库操作,两张表的联接结果是一张新表。3)联接的类型例5.2

查询森环院中每位学生的成绩情况,包括学号,姓名,总分,平均分,最低分,并按总分降序排序。(xim,xs,cj三张表)联接的类型内联接(innerjoin)两张表中仅满足条件的记录。左联接(leftouterjoin)表中在联接条件左边的所有记录和表中联接条件右边的且满足联接条件的记录右联接(rightouterjoin)表中在联接条件右边的所有记录和表中联接条件左边的且满足联接条件的记录完全联接(fulljoin)表中不论是否满足条件的所有记录(笛卡尔积)例:R:S:则:RХ

S=abcd

aabbccddaabbfffhg

Avdcfffhg

Avdcccdd

ab

cd

aabbccddAvdcfffhg结论:如果R中有M个子段,X条记录如果S中有N个子段,Y条记录则:R和S的笛卡尔积记录个数为X*Y条字段个数为M+N个笛卡尔积交叉表查询交叉表查询:以电子表格形式显示数据的查询,可以使用交叉表向导建立交叉表查询,只能基于单张表建立交叉表查询步骤:字段选取-〉布局-〉加入总和信息-〉完成视图的创建和使用一、基本概念二、创建本地视图三、用视图更新源表数据四、创建参数化视图五、视图的使用基本概念查询:得到的只是一组只读型的检索结果视图:不仅可以从表中提取一组记录,还可以改变这些记录的值,并把更新的结果送回源表,是数据库的一个组成部分,是基于表的并且可更新的数据集合。视图的特点:兼有表和查询的特点视图的类型:本地视图-使用VFP-SQL语法从表或视图中选择信息;远程视图-使用远程SQL语法从远程ODBC数据源表中选择信息。ODBC:一种用于数据库服务器的标准协议,通过ODBC可访问多种数据库中的数据,可安装多种数据库的ODBC驱动程序,使VFP可与该数据库相连,访问数据库中的数据。创建本地视图1)视图设计器项目管理器/本地视图/新建数据库打开时,文件/新建,常用/新建数据库打开时,Createview命令2)createsqlview命令格式:createsqlviewViewNameasselect-sql语句例,createsqlviewaaasselect*fromxs用视图更新源表数据检验视图对表的更新:Updatettsetcj=0wherett.xh='950101'SelectttBrowseSelectcjbrowse更新方法:1)“视图设计器”界面2)函数dbsetprop()更新步骤:1)使表可更新2)设置关键字段3)设置可更新字段4)设置‘发送SQL更新’创建参数化视图目的:限定视图的作用范围,可避免每取一部分记录就要单独创建一个视图的情况参数化视图的创建方法:1)视图设计器:筛选选项卡,cj.kcdh=?课程代号&&课程代号为参数名2)createsqlview命令中加一条where子句Createsqlviewaaasselectcj.xh,cj.kcdh,cj.cjfromcj;Where

cj.kcdh=?课程代号orderbycj.xh本质:在视图的select-sql语句中加一条where子句子句是根据所提供的参数值建立的仅下载那些符合where子句条件的记录参数值的传递:1)可以在运行视图时传递2)也可以以编程方式传递,如:

课程代号=‘02’

usejxsj!aa

browse视图的使用1、视图的处理类似于表的处理:用use命令打开、关闭视图在浏览窗口中显示视图记录在数据工作期窗口中显示打开的视图在文本框、表单或报表中使用视图作为数据源既可通过项目管理器,又可借助VFP语言来使用视图2、视图的打开与浏览3、创建视图索引4、创建临时关系5、用数据字典定制视图6、集成视图视图的打开与浏览界面:项目管理器窗口,数据工作期窗口命令:Use、browse命令注:1)打开视图时,若视图基于本地表,则在其它工作区中同时打开基表,数据工作期窗口显示视图及其基表(自动打开的本地基表并不在关闭视图时自动关闭);若视图基于远程表,则基表将不在工作区中打开,只在数据工作期窗口显示远程视图的名称2)可在多个工作区中多次打开一张视图的多个实例,默认情况下,每次使用视图时,都要去取一个新的数据集合,但可在use命令中使用norequery或again子句,不必重新查询数据源而打开视图的另一个实例(视图为远程视图是特别有用,无需等待从远程数据源中下载数据)创建视图索引方法:indexon命令indexoneExpressiontagTagName[forlExpression][asending|desending][unique|candidate]说明:与表的索引不同,在视图上创建的本地索引非永久保存,随视图的关闭而消失创建临时关系作用:子表记录指针跟随主表记录指针移动而移动创建临时关系的命令:setrelationtoSelect0Usecjordertagxh&&设置子表的主控索引Select0UsexsSetrelationtoxhintocj解除临时关系:

setrelationto/setrelationoff说明:可在视图索引之间、视图索引与表索引之间创建临时关系若要对一张视图于一张表创建临时关系,可在关系中设置视图为父表,表为子表用数据字典定制视图可为视图创建标题、注释、默认值、字段及有效性规则及有效性信息,视图的数据字典在功能上与库表中的相应部分非常相似以语言方式(函数dbsetprop())创建或在视图设计器中创建集成视图多级视图:一张基于视图的视图,或基于集成了本地表、本地视图或远程视图的视图,称为多级视图。顶层视图:集成了其它视图的视图。使用多级视图时,顶层视图所基于的视图和各级视图使用的基表将出现在数据工作期窗口中,远程表不会出现在数据工作期窗口中。select-sql语句一、SQL语言概述(structuredquerylanguage)是美国国家标准局ANSI确认的关系数据库语言的标准,一个SQL命令可以代替多个VFP命令,VFP支持的SQL命令有:Select-sql,alter

table-sql,create

table-sql,create

cursor-sql,delete-sql,insert-sql,update-sql二、select-sql命令简介1)语法格式P1352)select-sql命令主要组成部分三、举例说明举例说明1、基于单张表的查询2、基于多张表的查询3、含有计算字段的查询4、子查询5、组合查询select-sql命令主要组成部分Select……

From……指定数据源表…join…on…确定源表之间的联接Where……筛选记录或确定源表之间的联接Groupby……定义记录的分组Having……筛选结果记录Orderby……指定结果的顺序Into|to……指定输出类型all|distinct……指定有无重复记录TopnExpr|[percent]

……指定结果的范围1)显示js表中所有教师的工号和姓名2)显示xs表中学号以“95”开头的学生情况3)从高到低显示cj表中代号为“02”的课程的学生的学号和成绩selectjs.gh,js.xmfrom

jsSelect

*

from

jxsj!xs

where

substr(xh,1,2)='95'Select*fromjsxj!xswhere

like("95*",xh)Selectcj.xh,cj.cjfromjxsj!cj;wherecj.kcdh="02";orderbycjdesc1)显示xs和zy两张表中的三个字段xh,xm,zymc的内容,并根据zydh字段联接两张表。Select

xs.xh,xs.xm,zy.zymc;fromjxsj!xs,jxsj!zy;where

xs.zydh=zy.zydh2)显示cj表中有不及格课程成绩的学生的学号和姓名,有多门课程不及格的同学只显示一次。Select

distinct

cj.xh,xs.xm;fromjxsj!xs,jxsj!cj;wherecj.cj<60andcj.xh=xs.xh1)显示cj表中课程代号以及最高分Select

cj.kcdh,max(cj.cj)as“最高分”;fromjxsj!cj;groupby

kcdh2)查询每门课程的课程代号和名称以及最高分,并把查询结果保存到kc_maxcj.dbf中。Selectcj.kcdh,kc.kcm,max(cj.cj)as

'最高分';fromjxsj!cj,jxsj!kc;wherecj.kcdh=kc.kcdh;groupbycj.kcdh;intotablekc_maxcjbrowse显示js表中已担任课程教师的工号和系名。Selectjs.gh,js.xm;fromjxsj!js;wherejs.gh;

in

温馨提示

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

评论

0/150

提交评论