配色: 字号:
VFP_第5章 查询与视图
2013-01-28 | 阅:  转:  |  分享 
  
第5章查询与视图1、查询的创建与使用2、视图的创建与使用3、SELECT-SQL查询&5.1查询的创建与使用查询的目的:在相
互关联的表中查询所需要的数据查询表现形式:查询、视图查询的本质:执行SELECT-SQL命令
查询的实现方法:查询向导查询设计器使用SELECT-SQL命令5.1.1查询向导的使用查询向导可以引导用户快速设计
一个查询。示例:使用查询向导设计一个简单的单表查询:从jxgl数据库的xs表中查询系部代号为“04”且是00级的所有学生的信息
步骤如下:1、启动向导:选择查询向导2、字段选取:数据库的选择、自由表的选择3、记录筛选(可选):XDH=”04”,AT(X
H,”00”)>04、记录排序(可选):选择排序字段(最多可选3个)5、限制记录(只有当排序有效时):查询结果中出现的记录比例
。6、完成(三种选择)生成的文件:.qpr—生成的查询程序,.qpx—编译后的查询程序5.1.1查询向导的使用交叉表
查询向导:以电子表格的形式显示查询的数据,适用于主索引关键字为组合字段的表,如学生成绩的查询。操作步骤:前面的设计过程同以上
内容,但是在第二步需要确定交叉表的行和列所放的字段总结信息的加入:对交叉表数据进行统计汇总5.1.2利用查询设计器创建查询
查询向导的不足:不够灵活,功能不强,只能查询一个表中的数据查询设计器的打开:1、简单查询问题:查询教师表中基本工资大于800
的教师工号、基本工资,结果按降序排列分析问题:查询哪些数据?从何处可以得到这些数据?属于单表查询还是多表查询?查询有什么条
件?结果输出的目的地?方式?其它限制?5.1.2利用查询设计器创建查询1、简单查询查询数据源的添加:可以是表或视图查
询设计器的使用:字段、联接、筛选、排序、分组、杂项的用途查询设计器的工具栏字段选取:函数与表达式的输入与生成,表达式生成器的使
用,别名的使用筛选:筛选条件的使用比较运算符特殊操作符:like(“_”,”%”),between(上限
,下限)IN(实例列表)实例的输入:除逻辑值以外均不需要特殊分隔符杂项:查询的运行方式:即时运行、命令运行、项目管理器运
行5.1.2利用查询设计器创建查询1、简单查询分组:对相关记录的数据进行统计分类,形成结果数据,例如:统计成绩表中每门课程
的平均分集合函数:SUM,AVG,COUNT,MAX,MIN分组方法:分组字段不一定是输出的字段,但不能是计算列;分组总
是与计算相结合2、多表查询:数据来源于多个表问题:将第一例题中的查询项目增加姓名与系名,按系升序,同系降序。分析:数据将来源
于三个表:gz,js,xim注意:开始查询设计时需要添加相关表(永久关系自动带入)通常先添加父表,后添加子表表间联接的确定
:N-1个联接,联接的类型内部联接、左联接、右联接、完全联接(表5-4)联接的建立联接与筛选的区别5.1.2查询设计器的
使用综合举例1、统计各门课程不及格的学生学号、姓名、课程名称2、查询平均分超过85分的学号、姓名与平均分3、统计并显示各门
课程的代号、名称、总分、平均分、最低分、最高分、不及格的人数,并按最高分进行排序4、思考:取得奖学金的条件是:平均分在80分以上
,不能有不及格的课程,查询取得奖学金人的学号、姓名及总分5.2视图的创建与使用问题:查询的应用与其局限性对查询的结果不能
修改,即使通过设置不同的输出达到修改的目的,这种修改也不能返回到原来的表(基表)中。视图的概念基于表的可更新的数据集合,是数据
库的一部分分类本地视图:数据源直接来自于表或其它视图远程视图:数据源通过ODBC连接查询与视图的区别视图可更新,通过U
PDATE命令实现查询结果可输出到不同的对象中,而视图只能以表的形式存在查询是独立存在的,而视图是查询程序与表的结合,是数据
库的一部分查询以程序的形式可以直接执行,而视图并不产生对应的文件。5.2.1本地视图的创建与使用创建方法:视图设计器、命
令视图设计器的使用:查询05与08两个系的老师情况与查询设计器的使用类似,只多了一个更新条件选项卡更新的设置更新是否允许:
“发送SQL更新”,一般更新发生在视图关闭以后。更新的条件:必须有一个主关键字段与一个可更新字段设置方法:检查或设置关键字段
设置可更新字段打开“发送SQL更新”开关更新冲突的检查SQLWhere子句检查(UPDATE命令中)5.2.3参数
化视图问题:针对查询多个类似的数据?如各个课程的成绩情况解决的办法:创建参数化视图,将要查询的条件以参数的形式传送到SQL查询
命令中。设置方法:在筛选条件选项卡中实例填写“?<参数名>”参数化视图的运行5.2.4视图的使用视图的访问总体上视图
与表是类似的,因此对表的访问也适用于视图视图的打开与浏览USE<视图名>[参数]视图打开后,基表也会同时打开,而且视图关
闭时,基表并不关闭打开视图的多个实例—在不同的工作区只显示视图的结构—NODATA选项视图的修改、删除、重命名(通过项目管理
器)视图索引的创建:使用INDEXON命令,只在视图打开状态下有效,不能保存为视图字段创建规则:视图设计器中的字段属性。
5.3SELECT-SQL语句SQL语言概述SELECT-SQL命令使用5.3.1SQL语言概述VFP语言体系V
FP编程语言SQL标准语言SQL语言及其发展SQL—StructuredQueryLanguage:适合于关系数据库的结
构化查询语言1974年首次提出;1986年被ANSI批准为关系数据库的标准语言;1987年被ISO批准为国际标准(SQL86);
相继出现了SQL89、SQL2(1992)、SQL3(1993)等标准5.3.1SQL语言概述SQL语言基本组成数据定义(
DDL):定义表、视图、索引等CREATE,ALTER,DROP数据管理(DML):数据的查询与修改SELECT,INSER
T,DELETE,UPDATE数据控制(DCL):控制用户对数据的存取能力GRANT,REVOKE嵌入式SQL语言
SQL语言既可以独立使用(依靠某种数据库系统的支持),又可以嵌入到某一种程序设计语言中作为程序的一部分。5.3.2SELE
CT-SQL数据查询最简单的数据查询SelectFrom<表名>SELECT语句的基本组
成SELECT子句:说明需要查询的数据项目—必需FROM子句:数据项目的来源(表或视图)—必需WHERE子句:查询的条件或多
表联接条件GROUPBY子句:分组查询,统计汇总ORDERBY子句:对查询结果的排序书写注意:各个子句以空格分隔,
通常每个子句写一行(续行符;)子句内部各个项目之间使用逗号分隔5.3.2SELECT-SQL数据查询简单查询简单格式:s
electfromxs一般格式:SELECT查询项目FROM表说明5.3.2SELECT-SQL数据查询简单
查询条件子句:记录的筛选,格式:WHERE<逻辑表达式>运算符:比较、like、in、betw
een…..,and、or、not例3:查询学生表中1981年以后出生的学生姓名、籍贯与出生日期例4:查询学生表中所有江苏籍的
学生姓名与籍贯排序子句:格式:ORDERBY<排序列说明[ASC|DESC]>[,……]排序列可以是字段也可以列
编号可以进行多字段排序,指定排序方式例5:从高到低显示成绩表中01号课程的学号与成绩例6:查询学生表中学生情况,按系排序,同
系按出生日期降序排列5.3.2SELECT-SQL数据查询分组查询与统计GROUPBY<列名>[HAVIN
G<分组条件>]列可以是字段,也可以是计算值分组查询通常要与集合函数或计算列结合使用having子句对分组进行进一步的限制
,对参与分组的记录进行筛选。例7:统计各门课程学习的人数与课程代号例8:统计各个专业女同学的人数与专业代号5.3.2SEL
ECT-SQL数据查询多表查询:数据来源于不同的表或视图来源表的说明表间的联接:指定联接类型与联接字段直接使用Where
子句进行联接联接表达式的数量=N-1联接条件与筛选条件之间必须用AND相连例9:对例7修改显示课程的名称例10:显示所有
00级学生的学号、姓名、平均成绩、系名称,并按平均分排序5.3.2SELECT-SQL数据查询其它常用参数指定记录是否允许
重复:All/Distinct指定结果的范围:TOPn[PERCENT]指定查询结果的输出INTO保存目标ARRA
Y数组名CURSOR临时表名TABLE表名TOFILE文件名—保存到一个文本文件中子查询:查询的嵌套,用于条件筛
选即WHERE子句中例11:查询哪些学生在成绩表中没有成绩selectfromxswherexhnotin(
selectcj.xhfromcj)SELECT-SQL查询命令总结完整的命令格式,参见P135使用方法总结:掌握
常用子句的功能与用法,能够根据查询要求选择相应的子句分析查询项目:字段、计算值、汇总值确定数据源多表查询时的联系条件,条件数
目与关系数据的筛选条件,写法,特殊运算符排序要求:单排序、多排序,升序、降序分组统计:分组依据、分组条件,与输出项目的结合,
集合函数的使用其它要求:记录输出的范围、列名的指定、是否重复、输出目标课外作业写出如下对应的SELECT语句1、查询xs表
中的所有内容2、查询所有“北京”、“上海”与“重庆”的学生情况3、查询所有姓名为两个字的学生姓名、性别与籍贯4、返回学生成绩
表中不重复的学生学号5、查询学生成绩数据并以课程代号和成绩排序6、统计各个城市有多少名学生7、查询成绩在80分以上的学生姓名
与成绩8、查询每个系的平均成绩9、查询某一个系如计算机系的平均成绩10、在学生情况表中查询在成绩表中已经存在的学生情况淮工
东港计算机系VFP课件SELECTxh,xm,xb,xdhFromxs查询项目的指定:[别名.]查询项[[AS]
列名][,……]当项目来源于多个表时,通常要指定可以是字段名、计算表达式或常量为查询项指定一个别名例1:查询学生表中学
生的学号、姓名、籍贯,并以汉字作为列名例2:查询工资表中每个人的应发工资表说明:[数据库名!]<表名>,对当前数据库可省略数据库名,否则必须指定selectcnt(cj.kcdh)rs,kcdhfromcj;groupbycj.kcdh组合查询:将两个或以上的查询结果组合起来,UNION关键字查询结果的结构应相同只能在最后一个查询中才能使用排序,且只能以编号列作为排序列说明selectcnt(cj.kcdh)rs,kcmfromcj,kc;wherecj.kcdh=kc.kcdhgroupbycj.kcdh淮工东港计算机系VFP课件
献花(0)
+1
(本文系liyi039首藏)