Visual FoxPro程序设计课件第5章查询与视图_第1页
Visual FoxPro程序设计课件第5章查询与视图_第2页
Visual FoxPro程序设计课件第5章查询与视图_第3页
Visual FoxPro程序设计课件第5章查询与视图_第4页
Visual FoxPro程序设计课件第5章查询与视图_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

第5章查询与视图5.1查询设计器

5.2SQL语言5.3视图5.1查询设计器5.1.1打开查询设计器5.1.2查询设计器的组成1.查询设计器窗口查询设计器窗口分为两部分。上半部分用于显示查询中要使用的表或视图,每一张表都由可改变大小的窗口来表示,窗口中列举了该表的字段信息。如果查询包含多个表,并且其中两个表之间有一条线相连,就表示这两个表之间建立了关系。下半部分有6个选项卡,用户对其进行相应的设置即可完成查询。2.查询设计器工具栏5.1.3使用查询设计器创建、运行和修改查询

1.新建查询2.运行查询查询设计完成后,通过运行查询可以浏览查询的结果。运行查询有以下三种方法。3.修改查询若要对已建立的查询文件进行修改,只需要重新打开相应的查询文件即可对其进行修改,打开查询文件有以下两种方法。(1)菜单法(2)命令法5.1.4查询的输出去向在查询设计器中可以根据需要定制查询的输出去向。定制查询去向要先在查询设计器中打开查询文件,然后单击“查询”菜单中的“查询去向”命令,或是单击查询设计器工具栏中的“查询去向”按钮,即可弹出“查询去向”对话框,VisualFoxPro共提供了7种输出去向,下面逐一进行介绍。(1)浏览(2)临时表(3)表(4)图形(5)屏幕(6)报表(7)标签5.1.5查看SQL语句用户通过查询设计器创建查询文件,查询设计器根据用户的设置自动生成一条SELECT语句,也就是说查询结果实质上是由一条SELECT语句实现的。5.2SQL语言

结构化查询语言SQL(StructuredQueryLanguage)是关系数据库的标准语言。SQL由于其使用方便、功能丰富、语言简洁易学等特点,很快得到推广和应用,目前绝大多数商品化关系数据库管理系统,如Oracle、Sybase、SQLSever、Access、FoxPro等,都支持SQL作为查询语言。VFP引入SQL语言后大大增强了自身功能,一条SQL命令可以替代多个VFP命令。用户不仅可以直接利用SQL语言进行查询,还可以将查询设计器中的SQL-SELECT语句粘贴到过程或事件代码中运行。SQL语言的主要功能是同各种数据表建立联接、检索和更新数据表,VFP支持SQL的数据定义、数据查询和数据操纵功能,由于VFP在安全控制方面的不足,所以它没有提供数据控制功能。5.2.1SQL数据定义语句数据定义语句包括三部分内容:定义数据表、定义视图和定义索引。对于定义数据表,又包括定义数据表的结构,例如创建、修改或者删除数据表对象等。1.表的定义格式:CREATETABLE<表名>[FREE](<字段名1><类型>[(<宽度>[,<小数位数>])][,<字段名2><类型>[(<宽度>[,<小数位数>])]…)功能:建立数据表。说明:(1)表名是所要建立的数据表的名称。(2)FREE表示建立一个自由表。(3)类型为字段的类型,如:C、N、D等。2.表的删除格式1:

DROPTABLE<表名>功能:删除表。格式2:DROPVIEW<视图名>功能:删除视图。3.表结构的修改格式1:ALTERTABLE<表名>ADD<字段名><类型>/ALTER<新字段名><新类型>功能:添加新的字段或修改已有字段的定义。格式2:ALTERTABLE<表名>DROP<字段名>/RENAME<字段名>TO<新字段名>功能:删除字段或修改字段名。5.2.2SQL数据操纵语句数据操纵包括向表中插入数据、修改数据和删除数据,是实现表对数据管理的过程。1.记录的插入格式:INSERTINTO<表名>[(<字段名表>)]VALUES(<表达式表>)功能:向指定表中添加一条记录。说明:(1)<字段名表>可以是一个或多个字段,各字段间以逗号间隔,缺省情况下,按字段的顺序依次赋值。(2)VALUES(<表达式表>)为要追加的记录各字段的值。2.记录的删除格式:DELETEFROM<表名>[WHERE<条件表达式>]功能:根据给出的条件,逻辑删除表中记录。若省略WHERE子句,则逻辑删除表中所有记录。3.记录的更新记录更新是指对表中记录进行修改。格式:UPDATE<表名>SET<字段1>=<表达式1>[,<字段2>=<表达式2>…][WHERE<条件>]5.2.3SQL数据查询语句数据查询是SQL语言中最重要、最核心的功能。SQL的数据查询操作是通过SELECT查询命令实现的。1.SELECT命令格式:SELECT[ALL│DISTINCT][TOPn[PERCENT]]<查询项1[AS列标题1]>[,<查询项2[AS列标题2]>…]FROM<表名1[[AS]别名1]>[,<表名2[[AS]别名2]>…][WHERE<筛选条件>|<联接条件>][GROUPBY<分组选项>[HAVING<过滤条件>]][ORDERBY<排序选项>][ASC|DESC][INTO<目标>]|[TOFILE<文本文件名>]|[TOPRINTER]|[TOSCREEN]2.简单查询简单查询是基于一个表的查询,即查询的结果来自于一个表,查询条件简单。查询时,在SELECT语句的FROM短语后只列出一个表名。【例5-13】查询“学生档案”表中的所有记录。SELECT*FROM学生档案 说明:“*”为通配符,表示所有字段。如果只显示部分字段,需要将要显示的字段逐一列出。【例5-14】查询“学生档案”表所有记录的学号、姓名、性别和籍贯。SELECT学号,姓名,性别,籍贯FROM学生档案【例5-15】查询“学生档案”表中籍贯为“陕西”和“湖北”的学生记录。SELECT*FROM学生档案WHERE籍贯="陕西"OR籍贯="湖北"3.特殊运算符在WHERE子句中可以使用以下特殊运算符构造条件表达式。(1)BETWEEN<m>AND<n>:用来判断某个介于[m,n]之间的值,m为区间的下限,n为区间的上限。【例5-18】查询“学生档案”表中1990年出生的学生记录。SELECT*FROM学生档案WHERE出生年月BETWEEN{^1990-01-01}AND{^1990-12-31}(2)LIKE<字符表达式>,其中字符表达式中可使用“_”或“%”作为通配符;“%”表示0个或多个任意字符,“_”表示一个任意字符。【例5-19】查询“学生档案”表中姓“王”的学生记录,显示其学号、姓名、出生年月字段,如图5-19所示。SELECT学号,姓名,出生年月FROM学生档案WHERE姓名LIKE"王%"4.统计函数SELECT语句不仅具备一般的查询功能,还具有统计方式的查询功能,比如查询学生的平均成绩,学生人数等。SQL提供的统计函数有:(1)COUNT():计数;(2)SUM():求和;(3)AVG():求平均值;(4)MAX():求最大值;(5)MIN():求最小值。这些函数可以在SELECT语句中对查询结果进行统计计算【例5-22】查询“学生档案”表中女生的人数。SELECTCOUNT(*)AS女生人数FROM学生档案WHERE性别="女"5.高级查询(1)分组查询分组查询是把待查询的数据按某种方式分组,然后对分组后的数据进行查询操作。SELECT语句的GROUPBY子句用来实现分组查询,还可配合HAVING短语对分组后的待查询数据设置过滤条件,即只对分组后满足HAVING<条件>的数据记录进行查询操作。【例5-23】查询“学生档案”表中来自不同地方的学生人数SELECT籍贯,COUNT(*)AS人数FROM学生档案GROUPBY籍贯【例5-24】查询“学生档案”表中来自陕西和湖北的学生人数。SELECT籍贯,COUNT(*)AS人数FROM学生档案GROUPBY籍贯;HAVING籍贯="陕西"OR籍贯="湖北"(2)排序通过SELECT语句,还可以对查询的结果进行排序,这样更便于用户观察查询的结果。SELECT语句的ORDERBY子句用来实现查询结果的排序功能。【例5-26】查询“学生档案”表中的所有记录,查询结果按出生年月升序排列。SELECT*FROM学生档案ORDERBY出生年月【例5-27】计算每名同学的总成绩,并按总成绩的降序排列,如图5-23所示。SELECT学号,姓名,sum(成绩)AS总成绩FROM成绩表GROUPBY学号ORDERBY总成绩DESC【例5-28】查询“学生档案”表中的所有记录,首先按“性别”的降序排列,如果性别相同,再按“出生年月”的升序排列。SELECT*FROM学生档案ORDERBY性别DESC,出生年月(3)简单的联接查询联接是关系的基本运算之一。联接查询是一种基于多个关系的查询,即查询的结果出自多个表。实现简单的联接查询的方法是在WHERE后面给出联接条件,联接条件是两个表的公共字段值相等,也就是说,进行联接查询的两个表必须要存在公共字段。【例5-29】查询商务秘书系学生的院系名称、学号、姓名、性别、出生年月和籍贯,如图5-24所示。SELECTA.院系名称,B.学号,B.姓名,B.性别,B.出生年月,B.籍贯FROM院系信息A,学生档案BWHEREA.院系代码=B.院系代码ANDA.院系名称="商务秘书系"(4)嵌套查询嵌套查询与简单的联接查询的相同之处在于查询的条件都涉及多个表,不同之处在于嵌套查询的结果出自一个表而非多个表。【例5-30】查询学生数据库中成绩不及格的学生的学号、姓名和班级信息。SELECT学号,姓名,班级FROM学生档案WHERE学号IN(SELECT学号FROM成绩表WHERE成绩<60)说明:①本例中含有两个查询块,即内层查询块和外层查询块,内层查询块的功能为在“成绩表”中查询成绩不及格的学生的学号,外层查询块利用内层查询块的结果进一步在“学生档案”表中查询这些学生的学号、姓名和班级信息。②IN的作用相当于集合运算符∈(包含于)。(5)利用空值(.NULL.)查询在VFP中有两个容易混淆的概念,空值和“空”值。所谓“空”值,是指该字段没有输入任何值,“空”值依字段的数据类型不同而不同,对于字符型来说,“空”值就是空格或空串;对于数值型来说,“空”值就是0;对于逻辑型来说,“空”值就是.F.。所谓空值(.NULL.)是一个特定的值,是一个需要输入的值,其含义是目前尚待确定的值。SELECT支持利用空值进行查询。因为空值不是一个确定的值,查询是否为空值时要使用“ISNULL”,而不能使用“=NULL”。(6)显示部分结果当查询结果包含的记录数较多时,可以只显示部分记录。若只需显示前几条记录时,可以在SELECT语句中使用TOPn进行查询,n为1至32767间的整数,作用为只显示前n条记录;当使用TOPnPERCENT时,n为0.01至99.99之间的实数,作用为显示结果中前百分之n的记录,TOPn[PERCENT]短语要与ORDERBY子句同时使用才有效。【例5-34】查询学生成绩表中总成绩最高的三名学生。SELECTTOP3学号,姓名,SUM(成绩)AS总成绩FROM成绩表GROUPBY学号ORDERBY总成绩DESC(7)定制查询的输出可以在SELECT语句中使用[INTO<目标>]来控制查询结果的输出去向,下面介绍两种特殊的用法。①将查询结果存放到数组中INTOARRAY<数组名>可以将查询结果存放到数组中。一般情况下,存放结果的数组为二维数组,每行为一条记录,每列对应一个字段,将查询结果存放在数组中,使得在程序中使用数据更加方便。②将查询结果存放到临时文件中INTOCURSOR<文件名>可以将查询结果存放到临时的表文件中。所谓临时表就是一个只读的.dbf文件,查询结束后该临时文件自动打开成为当前表,可以象一般的表文件一样使用,当关闭此文件时该文件会自动删除。(8)超联接查询在VisualFoxPro中,支持SQL的超联接查询,格式如下:SELECT<……>FROM<表名>[INNER]|LEFT|RIGHT|FULLJOIN<表名>ON<联接条件>WHERE<……>【例5-37】从学生数据库中查询学生的学号、姓名、班级、和成绩。SELECT学生档案.学号,学生档案.姓名,学生档案.班级,成绩表.成绩FROM学生档案INNERJOIN成绩表ON学生档案.学号=成绩表.学号上面的查询语句作用等价于:SELECT学生档案.学号,学生档案.姓名,学生档案.班级,成绩表.成绩FROM学生档案,成绩表WHERE学生档案.学号=成绩表.学号5.3视图

视图提供了一种存取或编辑存储在多个相关文件中数据的方法。使用视图能够从表中提取一组记录,改变这些记录的值,并将改变后的值存入表中。视图提取数据的来源可以是本地表、其它视图、存储在服务器上的表或远程数据源。根据数据源的不同,VisualFoxPro中的视图分为本地视图和远程视图。使用当前数据库中的表建立的视图称为本地视图,使用当前数据库以外的数据源建立的视图称为远程视图。5.3.1视图的基本概念1.视图的概念视图是一个虚拟表,它的数据来源于数据库表,这些数据在数据库中并不实际存储,仅在数据库的数据字典中存储视图的定义,但视图一经定义,就成为数据库的一个组成部分。对视图可以进行查询操作,也可以利用它实现对数据库表的修改。视图兼有“表”和“查询”两者的特点。它可以象查询一样进行数据的检索,也可以浏览和修改表中数据,但视图在使用上比表更灵活。2.建立视图的优点(1)保障数据的安全性和完整性。(2)简化对数据库的操作。(3)从多角度看待同样的数据。5.3.2创建本地视图在VisualFoxPro中创建视图是通过“视图设计器”完成的。1.打开视图设计器2.视图设计器视图设计器与查询设计器界面非常相似,设计方法也基本相同,其不同点主要有以下几个方面。(1)查询设计器的结果是将查询以.qpr文件的形式保存在磁盘上;而视图设计完成后,是保存在数据库文件中的,没有生成独立的文件。(2)查询可以单独运行,而视图的运行依赖于数据库中的数据表,它本身并不保存数据,它的数据来源于数据表。(3)查询不可更新,视图可以更新数据。所以,视图设计器相比查询设计器增加了一个“更新条件”选项卡。(4)“视图设计器”工具栏中没有“查询去向”按钮,即视图不能设置查询去向。3.使用视图(1)打开视图的方法在数据库设计器中,在视图窗口的标题栏上单击鼠标的右键,从弹出的快捷菜单中选择“修改”,即可弹出视图设计器窗口。(2)运行视图的方法运行视图的方法有以下三种:①打开数据库后,使用命令:USE<视图名>②双击数据库设计器窗口中视图窗口的标题栏。③在视图设计器中打开

温馨提示

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

评论

0/150

提交评论