Visual FoxPro 程序设计 与应用开发教程第六章_第1页
Visual FoxPro 程序设计 与应用开发教程第六章_第2页
Visual FoxPro 程序设计 与应用开发教程第六章_第3页
Visual FoxPro 程序设计 与应用开发教程第六章_第4页
Visual FoxPro 程序设计 与应用开发教程第六章_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

第6章查询处理界面

6.1

使用查询文件查询

6.2使用结构化查询语言SQL查询

6.1使用查询文件查询

6.1.1用设计器创建查询

1.打开查询设计器

打开“新建”对话框窗口。选定文件类型为“查询”,单击“新建文件”按钮;或打开“项目管理器”,选择“数据”选项卡中的“查询”项,单击“新建”按钮。2.创建单表查询

添加数据源后,关闭添加对话框。在设计器字段页面选择需要字段后,关闭设计器。3.创建多表查询

打开查询设计器并添加两个表以后,屏幕上会弹出“连接条件”对话框。最后单击“确定”按钮建立内部联接。在查询设计器窗口可以看到两个表之间出现了联接线。

将查询中需要的字段从“可用字段”框拖到“选定字段”框中,最后单击窗口关闭按钮。4.运行查询文件

在“项目管理器”窗口的查询项中先指定该查询文件,再单击“运行”按钮;②

打开其“查询设计器”,在“查询”下拉菜单中单击“运行查询”选项;③

打开其“查询设计器”,在工具栏中单击“运行”按钮;④

打开其“查询设计器”,敲快捷键Ctrl+Q;⑤

打开其“查询设计器”,单击鼠标右键打开快捷菜单,单击“运行查询”选项;⑥

在“程序”下拉菜单中,单击“运行”选项,在弹出对话框中选定该文件,单击“运行按钮;⑦

在命令窗口执行命令:DO学生来源.QPR5.查看查询文件程序

在“查询”下拉菜单中,单击“查看SQL”选项;②

在快捷菜单中单击“查看SQL”选项;③

在查询设计器的工具栏中。单击“SQL”按钮。6.编辑修改查询程序6.1.2查询设计器的选项卡1.字段卡

也可以为查询列表增添统计字段。比如为“学生来源”查询文件增加一个年龄表项。这个表项在两个表中都没有相匹配的字段,需要通过计算得到。在“函数和表达式”文本框中输入统计表达式:YEAR(DATE())-YEAR(CSNY)。接着单击“添加”按钮,

2.筛选卡

3.联接卡

4.排序依据卡

5.分组依据卡(1)添加统计项

在“字段”卡中添加统计项,计算平均年龄的公式为:

AVG(YEAR(DATE())-YEAR(Student_jb.csny))(2)分组统计将原来的筛选条件都删除,再打开“分组依据”页面,将名称字段MC添加到“分组字段”框中,分组依据卡设置如下图。6.杂项卡6.1.3用向导创建查询

首先打开“新建”窗口,选择“查询”类型,单击“向导”按钮,打开“向导选取”窗口。

比如要统计学生表中不同地区的男女生人数,可以用“交叉表”实现。

在三种向导方式中选择如“交叉表向导”,然后再单击“确定”按钮进入向导流程。向导的第一步如图。

从STUDENT_JB表中选择“可用字段”到“选定字段”框中,如上图。然后单击“下一步”按钮,进入“步骤2”,如图。

将字段JG作为列标头,字段XB作为行标头,而字段XM作为数据区数据。然后单击“下一步”按钮,进入“步骤3”,如图所示。

选定“总结”和“分类汇总”参数如图所示。然后单击“下一步”按钮,进入“步骤4”,如图所示。

指定图标中不“显示NULL值”,单击“预览”按钮可以看到图表显示如图所示。

6.1.4查询输出方式的选择

如果在打开“查询设计器”以后,在主菜单的“查询”下拉菜单中,单击“查询去向”选项;或者在查询设计器工具栏中,单击“查询去向”按钮;还可以在快捷菜单中,单击“输出设置”选项。屏幕上将弹出“查询去向”对话框窗口。_GENGRAPH="C:\PROGRAMFILES\MICROSOFTVISUALSTUDIO\VFP98\WIZARDS\WZGRAPH.APP"6.2使用结构化查询语言SQL SQL语言的功能很强,但是由于设计精巧,语言十分简介,通俗易懂。其核心功能只使用了9条命令动词。

l

SELECT 数据查询

l

CREATE、DROP、ALTER 数据定义

l

INSERT、UPDATE、DELETE 数据操纵

l

GRANT、REVOKE 数据控制

VisualFoxPro6.0仍然以传统的数据库语言为基础,但是也嵌入了SQL语言。VisualFoxPro中只能支持:SELECT、CREATE、DROP、ALTER、INSERT、UPDATE、DELETE命令。

6.2.1数据查询命令

格式:SELECT[ALL|DISTINCT][别名.]<字段表达式>[AS列名][,别名.][<字段表达式>[AS列名],…] FORM[数据库名!]<表或视图名>[,[数据库名!]<表或视图名>,…][[AS]本地别名] [INNER|LEFT[OUTER]|RIGHT[OUTER]|FULL[OUTER]JOIN

数据库名!]表名[[AS]本地别名][ON连接条件…][WHERE<连接表达式>[AND<连接表达式>…][AND|OR<筛选条件>[AND|OR<筛选条件>]]] [GROUPBY<分组表达式>[,<组表达式>…]][HAVING<条件表达式>] [ORDERBY<字段名>[ASC|DESC][,<字段名>[ASC|DESC]]…] [UNION[ALL]<SELECT命令>] [TOP<数值表达式>[PERCENT]] [INTO<输出目标>]|[TOFILE<文件>[ADDITIVE]] |[TOPRINTER[PROMPT]]|[TOSCREEN]1.基本查询

(1)单表查询所有字段

SELECT*FROMSTUDENT(2)控制输出方向

SELECT*FROMSTUDENTTOPRINTER(3)查询指定表列

SELECTXM,XB,JGFROMSTUDENT(4)取消重复行

SELECTXB,JGDISTINCTFROMSTUDENT(5)查询经过计算的值

SELECTXH,SX+WY+JSJ,(SX+WY+JSJ)/3FROMSTUDENT SELECTXHAS学号,SX+WY+JSJAS总分,(SX+WY+JSJ)/3AS平均分FROMSTUDENT

(6)查询满足逻辑条件记录

全部女生记录

SELECT*FROMSTU_JBWHEREXB=“女”全部北京女生记录

SELECT*FROMSTU_JBWHEREXB=“女”ANDJG=“北京”成绩都超过85分记录

SELE*FROMSTU_CJWHERESX>85ANDWY>85ANDJSJ>85同时也显示具体人名

SELESTU_JB.XM,STU_CJ.SX,STU_CJ.WY,STU_CJ.JSJ FROMSTU_JB,STU_CJWHERESTU_JB.XH=STU_CJ.XHANDSX>85ANDWY>85ANDJSJ>85(7)查询某个范围记录用传统与或关系

SELECTXM,XB,CSNYFROMSTUDENT_JBWHERECSNY>={^1981-01-01}ANDCSNY<={^1981-12-31}用谓词BETWEEN…AND…

SELECTXM,XB,CSNYFROMSTUDENT_JBWHERECSNYBETWEEN{^1981-01-01}AND{^1981-12-31}(8)查询某个集合记录用谓词IN或NOTIN

SELECTXM,XB,JGFROMSTUDENT_JBWHEREJGIN(“北京”,“上海”)SELECTXM,XB,JGFROMSTUDENT_JBWHEREJG="北京"ORJG="上海"

SELECTXM,XB,JGFROMSTUDENT_JBWHEREJGNOTIN("北京","上海")

(9)查询字段值字符匹配

用谓词LINK其中“%”表示大于等于0个任意字符,“_”表示任意一个字符

SELECT*FROMSSWHEREMCLIKE“%西”

SELECTJSH,XM,XB,ZCFROMJZG1WHEREZCLIKE“%教%”SELECTJSH,XM,XB,ZCFROMJZG1WHEREZCLIKE"_教_"(10)查询含有空值NULL的记录(敲Ctrl+0)

SELECTXH,JSJFROMSTUDENT_CJWHEREJSJISNULL(11)使查询结果排序显示

用ORDERBY子句

SELE*FROMSTUDENT_CJORDERBYJSJDESCSELE*FROMSTUDENT_CJORDERBYJSJDESC,SXASC(12)使用集函数计算查询

SUM(<字段>) 求该字段值的和

AVG(<字段>) 求该字段值的平均值

COUNT(*) 求记录行数

MIN(<字段>) 求该字段列中最小值

MAX(<字段>) 求该字段列中最大值计算人数及各科平均分

SELECTCOUNT(*)AS"学生数",AVG(SX)AS"数学平均分",AVG(WY)AS"外语平均分",AVG(JSJ)AS"计算机平均分"FROMSTUDENT_CJ用GROUPBY让查询结果按一列或多列分组显示

SELE"统计"AS分类,XBAS性别,SUM(SX)AS总成绩

FROMSTUDENTGROUPBYXB2.连接查询(1)两个表之间的连接

SELECTDISTINCTSTUDENT_JB.JG,SS.QHFROMSTUDENT_JB,SSWHERESTUDENT_JB.JG =SS.MCANDXB="女"

该命令实际上是建立STUDENT_JB表和SS表之间的内部连接。写出完整的命令形式应当是。

SELECTDISTINCTSTUDENT_JB.JG,SS.QHFROMSTUDENT_JBINNERJOINSSONSTUDENT_JB.JG=SS.MCANDXB="女"

(2)单表自身连接

已经建立了钢笔配件材料表WWW.DBF如下:

编写SQL语句

SELEWWW1.PM,WWW2.XHAS墨水编号FROMWWWWWW1,WWWWWW2WHEREWWW1.XH= WWW2.BHANDWWW1.PMLIKE"%笔"3.嵌套查询

(1)使用谓词IN SELECTXM,XB,JGFROMSTUDENT_JBWHEREJGIN("北京","上海")(2)使用谓词BETWEEN

SELECT*FROMSTUDENT_CJWHEREJSJBETWEEN70AND90(3)使用谓词ANYSELECTXM,JGFROMSTUDENT_JBWHEREXH=ANY(SELECTXHFROMSTUDENT_CJWHEREWY>90)(4)使用谓词ALL

SELECTXM,ZC,JBGZFROMJZG2WHEREJBGZ>=ALL(SELECTJBGZFROMJZG1WHEREZC=“教授”) SELECTXM,ZC,JBGZFROMJZG2WHEREJBGZ>=ANY(SELECTJBGZFROMJZG1WHEREZC=“教授”)(5)使用谓词EXISTS SELECT*FROMSSWHEREEXISTS(SELECT*FROMSTUDENT_JBWHEREJG=SS.MC) SELECT*FROMSSWHERENOTEXISTS(SELECT*FROMSTUDENT_JBWHEREJG=SS.MC)6.2.2数据定义命令

1.表的定义

格式:CREATETABLE|DBF<表名>[FREE](<字段名1><类型 >(<长度>[,<小数位数>])[,<字段名2><类型>(<长度 >[,<小数位数>])…][NULL][NOTNULL][DEFAULT字段初值][PRIMARYKEY][UNIQUE] [CHECK(表的有效性规则)][ERROR“错误信息”]

[NULL]允许该字段出现空值,若打开了一个数据库,可用[PRIMARYKEY]指定该字段为主索引;用[UNIQUE可]指定候选索引;用[FREE]使新建表为自由表。[DEFAULT字段初值]选项可指定初始值。字段的数据类型可以是C、D、T、N、F、I、B、Y、L、M、G、P。

例如:要建立学生数据表XS1.DBF,其中有:姓名XM,年龄NL和性别XB三个字段;其中姓名不为空,取值惟一。

CREATETABLEXS1(XMC(6)NOTNULLUNIQUE,NLN(4,1),XBL)

还可以对年龄字段的值增加有效性限制和初值,执行这样的命令如下。CREATETABLEXS3(XMC(6)PRIMARYKEY,NLN(4,1)CHECK(NL>16ANDNL<26)ERROR”年龄值超出范围!”DEFAULT18,XBL)

2.表的删除

格式:DROPTABLE<表名> DROPTABLEXS13.表结构的修改

格式:ALTERTABLE<表名>ADD|ALTER[COLUMN]<字段名1><类型>(<长度>[,<小数位数>][NULL][NOTNULL][CHECK(字段有效性规则)][ERROR”错误信息”][DEFAULT字段初值][PRIMARYKEY][UNIQUE]例如:要为学生数据表XS1.DBF增加职称字段ZC,并将年龄字段NL的宽度改为2无小数。

ALTERTABLEXS1ADDZCC(6)ALTERNLN(2,0)4.视图的定义

CREATEVIEW<视图名>[(列名[,列名……])]AS任意SELECT语句 在执行命令之前,一定要先打开一个数据库。例如:要为学生表XS1.DBF建立视图HHHH,其中包含职称字段ZC和姓名字段XM。

CREATEVIEWhhhhASSELEXM,ZCFROMXS1例如:要将学生表STUDENT_JB和成绩表STUDENT_CJ联系起来,建立一个可以同时查看每人的籍贯和各科成绩的视图。

CREATEVIEWABCASSELEXM,JG,SX,WY,JSJFROMSTUDENT_JBJB,STUDENT_CJCJWHEREJB.XH=CJ.XH

5.视图的删除

格式:

DROPVIEW<视图名> DROPVIEWHHHH6.2.3数据操纵功能

1.记录插入

格式1:

INSERTINTO<表名>(<字段名1>[,<字段名2>]……)VALUES(<表达式1> [,<表达式2>]……)格式2:

INSERT

温馨提示

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

评论

0/150

提交评论