VFP基础教程-创建查询和视图
VFP课件查询与视图
查询结果排序
排序决定了查询输出结果中记录或行的先后顺序,我们可以通
过“排序依据”选项卡设置查询的排序次序,方法同在用查询向
导设计查询介绍的一样,首先从“选定字段”框中选定要使用的
字段2024/2/24
16
并把它们移到“排序条件”框中,然后利用“排序选项”(从 中选择升序或降序)来设置排序条件。本例中设置Student.学号, 升序为排序依据。
选择筛选字段 设置筛选条件 输入筛选实例 是否区分大小写 设置条件逻辑
在字段名下的下拉选择框中选择“Student.性别”,在“条件”
下的下拉选择框中选择“=”,在“实例”下的文本框中输入.T.,
则查询所有的男生。
2024/2/24
15
在“逻辑”下的下拉选择框中选择“AND”,然后再在字段名下 的下拉选择框中选择“Student.学号”,在“条件”下的下拉选 择框中选择“In”,在“实例”下的文本框中输入“9904,9804” (请注意中间的“,”是En状态下输入的)。
单击
单击【预览】按钮可以显示查询结果。根据要求,设置条件如上图。其中,
虽然表中没有年级字段,但可通过“学号”得到年级(学号的前二位为年
级)202。4/2/24
6
——
查 询 向 导
记
录
排
序
调整排 序顺序
移动按钮
选择排序字段 单击【添加】 选择排序方式 单击
2024/2/24
7
查询向导——限制记录
说明:查询结果中所包含
2024/2/24
14
பைடு நூலகம்
筛选记录
选择表中符合条件的一部分记录而不是全部记录是查询的重要 任务。此例要求从所有学生的信息中选出“学号”前四位为 “9904”和“9804”的所有男生,可以利用查询设计器中的“筛选” 选项卡。“筛选”选项卡可确定用于选择记录的字段和比较准则, 以及输入与该字段进行比较的示例值。
VFP计算机二级 第5章 查询与视图
GROUP BY
——定义查询分组
按指定字段进行分组、汇总。 在分组时如果包含条件,用HAVING后的关 系表达式或逻辑表达式表示。
例:
SELECT Rsda.编号,Rsda.性别,Rsda.婚否, Rsda.基本工资,SUM(Rsda.基本工资) AS 工资合计 FROM 人事管理!rsda GROUP BY Rsda.性别,Rsda.婚否 HAVING Rsda. 基本工资>=500
(9)运行查询 (10)保存查询文件
查询文件的扩展名为.QPR。
例:查询XS1.DBF学生数据表中性别、贷
款总额,人数,平均欠款额。(见“xb+
dkje查询.qpr”)
二、执行查询
(1)在[查询设计器]中,选择系统[查询]菜单的[运行查 询]命令,或右键快捷菜单的[运行查询]命令。 (2)打开某项目在[项目管理器]中,选择某数据库并将 其展开,选择该数据库的某查询,再选择[运行]按钮。
(5)确定排序方式
对于查询结果可以将记录按一定顺序排列。 如果 不设置筛选条件,在此可完成对数据表所有记录的 排序,并可将结果输出到另一表中。
(6)对查询结果进行分组
对于查询结果可以按指定字段依次对它们进行分 组操作。分组操作就是将同类的记录合并、汇集到 一个记录中(同类最后一条记录),进行如SUM (求和)、COUNT(统计记录数)、AVG(求平 均值)等操作。
(7)限制记录
如果不希望查询显示整个表的所有记录。选择
部分记录显示,只有选择了排序次序后,才能
在排序的结果中显示部分记录。
在“部分类型”中可选择,是按“所占记录百
分比”选择“数量”,还是按“记录号”选择
VFP数据库系统Visual FoxPro查询与视图
第八章查询与视图8.1创建查询查询8.1.1利用“查询向导”建立查询⏹在“项目管理器”中选择“数据”选项卡,然后选择“查询”。
⏹选择“新建”。
⏹选择“查询向导”按钮。
⏹选择所建查询的类型。
⏹按照向导屏幕上的指令进行操作。
8.1.2利用查询设计器设计查询1. 在“项目管理器”中,选择“数据”选项卡,然后选择“查询”选项。
2. 单击“新建”按钮,弹出“新建查询”对话框。
3. 单击“新建查询”按钮,添加建立查询的表,选择出现在查询结果中的字段。
4. 设置选择条件来查询给出所需结果的记录。
5. 设置排序或分组选项来组织查询结果。
6. 选择查询结果的输出类型,包括浏览、表、报表等。
7. 运行查询。
8.1.3查询的运行和修改1. 在“项目管理器”的“数据”选项卡中选择要运行的查询文件名,然后单击“运行”按钮即可。
2. 选择查询文件,单击“修改”按钮,打开“查询设计器”窗口,然后选择“查询”菜单下的“运行查询”命令,或者在工具栏选择按钮。
3. 用命令方式运行查询文件,格式为:DO查询文件名。
8.1.4定向输出查询结果⏹浏览:在“浏览”窗口中显示查询结果。
⏹临时表:将查询结果保存在临时表中。
⏹表:将查询结果作为表文件保存起来。
⏹图形:使查询结果可用于Microsoft Graph,图形使包含在Visual FoxPro中的一个独立的OLE应用程序。
⏹屏幕:在活动输出窗口中显示查询结果。
⏹报表:向报表文件发送查询结果。
⏹标签:向标签文件发送查询结果。
8.2创建视图视图8.2.1利用“视图向导”创建视图1. 在“项目管理器”中,选定一个数据库。
2. 选定“本地视图”,选择“新建”按钮。
3. 选择“视图向导”按钮。
4. 按照向导屏幕上的指令操作。
8.2.2用视图设计器创建视图1. 从“项目管理器”中选定一个数据库,展开该数据库。
2. 选择“本地视图”并选择“新建”按钮,弹出“新建本地视图”按钮。
3. 单击“新建视图”按钮,在“添加表或视图”对话框中,选定需使用的表或视图,再选择“添加”。
VF数据库第9章视图与查询操作
精选ppt
5
(3)命令说明:
① <新文件名>是指重新排列后的新数据表文件名.
② 排序规则:
排序关键字,仅能使用当前数据表的字段名,不允许使
用任何类型表达式。字段类型可以是C型、N型、D型、L
型。
如果选择多个字段作为关键字段来进行多重排序,之间
要用英文状态下的逗号“,”分隔。排在最前面的为第一
关键字段,最先排序,第一关键字段值相同,则按第二关
[ASCENDING|DESCENDING] 说明: [OF<非结构复合索引文件名>]:非结构复合索引文件名
例题:
将学生档案表数据表文件按班级和出生日期(索引标识为
BJCSRQ )升序,按性别升序索引(索引标识为XB),建立非
结构化复合索引文件xbbj。
Use 学生档案表
INDEX ON 班级+dtoc(出生日期) TAG BJRQ OF XBBJ
或非压缩的。压缩的单索引文件是非压缩的单索引文件的 六分之一,所以,如果没有兼容问题,一般采用压缩的单 索引文件。
精选ppt
10
(2)复合索引文件(*.CDX) 复合索引文件可以含多个索引标识,其扩展名为“CDX”,
每个索引都有一个索引标识。 复合索引文件为减少占用存储空间,其总是以压缩方式存
储。 复合索引文件可分为结构的和非结构的两种。 结构化复合索引文件与原数据表文件名相同(后缀
说明: ①TAG<索引标识名>:复合索引文件每个索引都必须有一
个索引标识。 ②记录的顺序默认为升序,也可用“Ascending”表示,
降序用“Descending”。 ③当一个复合索引文件中存在多个索引标识的时候,分别
建立,最新建立的索引标识将自动打开并处于主控索引的 位置。 ④ 建立结构化复合索引文件,必须以独占方式打开数据表.因 为,结构化复合索引的标识精符选pp要t 保存到表的结构中去。 18
查询与视图VFP课件
查询与视图
一 创建查询(打开查询设计器): 创建查询(打开查询设计器) 1.鼠标操作:“文件” →“新建” →“查询” →“新 1.鼠标操作:“文件” 建文件夹” 2. 命令操作: CREATE QUERY 查询文件名
二
介绍“查询设计器”
查询设计器下部分的窗口中有几个选项卡,其含义简介如 下: “字段”:对应于SELECT短语,用来选定包含在查询结果 中的字段 图之间的联接关系; “筛选”:对应于WHERE短语,用于指定查询条件; “排序依据”:对应于ORDER BY短语,用来指定排序的 字段和排序方式;
BY和HAVING短语,用于分组; “杂项”:可以指定是否要重复记录(DISTINCT)以及列在 前面的记录(TOP短语)
“分组依据”:对应于GROUP
三 查询的输出
鼠标操作:“查询” →“查询去向”
四 运行查询(先保存再运行)
鼠标操作: 单击“查询”/“运行查询”,或 “!”按钮 。 单击“查询”/“运行查询”,或 命令操作:Do 命令操作:Do 查询文件名 :查询文件名中一定要给出查询文件的扩展名.qpr :查询文件名中一定要给出查询文件的扩展名.qpr :单击“查询”/“查看SQL”,Select-SQL命令将文本窗口 :单击“查询”/“查看SQL”,Select-SQL命令将文本窗口 中显示
一
创建视图(打开视图设计器)
鼠标操作:打开 “数据库设计器” “文件”/“新建” “文件”/“新建” “视图” 命令操作:CREATE 命令操作:CREATE VIEW 视图文件名
数据库表,创建视图。
VF查询与视图
填空 1、为“成绩”表中“总分”字段增加有效性规则:“总分必须 大于等于0并且小于等于750”,正确的SQL语句是: TABLE 成绩 ALTER 总分 总分>=0 AND 总分 <=750
2、为“学生”表的“年龄”字段增加有效性规则“年龄必须在18~45岁之间” 的SQL语句是 ALTER TABLE学生ALTER年龄 年龄<=45 AND 年 龄>=18 2、在SQL语言中,用于对查询结果计数的函数是 。 3、在SQL的SELECT查询中,使用 4、使用SQL Select语句进行分组查询时,有时要求分组满足某个条件时才查 询,这时可以用 子句来限定分组。 5、设有SC(学号,课程号,成绩)表,下面SQL的SELECT语句检索成绩高于 或等于平均成绩的学生的学号。 SELECT 学号 FROM SC WHERE 成绩>=(SELECT FROM SC)
空值查询
表中值为空表示没有确定内容,当要查询的时候: repl 供应商号 with null,订购日期 with null for 职工号 ="E4 " 然后才能用IS NULL查询,考试的时候不需要设置。
当需要本仓库的职工的工资和本仓库的平均工资 进行比较时候
自身连接和嵌套查询 sele * from 职工 A where 工资>(sele avg(工资) from 职工 B where A.仓库号=B.仓库号) 自身连接:将同一关系与自身连接。 注意:应用的原因:根据出自同一个字段,值域相同 的两个进行比较。属性是“包含”与“被包含”的关 系。
5.在Visual Foxpro中,如果要将学生表S(学号,姓名,性别,年 龄)中“年龄”属性删除,正确的SQL命令是 。 A)ALTER TABLE S DROP COLUMN 年龄 B)DELETE 年龄FROM S D)ALTER TABLE S DELETE COLUMN 年 龄 D)ALTER TABLE S DELETE年龄 6.在Visual Foxpro的数据库表中只能有一个 。 A)候选索引 B)普通索引 C)主索引 D)惟一索引 7. 设有学生表 S( 学号 ,姓名,性别 , 年龄),查询所有年龄小于等于 18 岁的女同学,并按年龄进行降序生成新的表WS,正确的SQL命令是 。 A)SELECT*FROMS WHERE性别=“女”AND年龄<=18ORDER BY 4 DBSC INTO TABLE WS B)SELECT*FROMS WHERE 性别 = “女” AND 年龄 <=18ORDER BY 年龄 INTO TABLE WS C)SELECT*FROMS WHERE 性别 = “女” AND 年龄 <=18ORDER BY 年龄 DESC INTO TABLE WS D)SELECT*FROMS WHERE 性别 = “女” OR 年龄 <=18ORDER BY 年龄
visualfoxpro数据库查询与视图
3.记录级规则主要包括记录有效性、触发器的设置和表注释。
每逢星期一才可做插入、追加、 更新和删除记录的操作:
“教授的基本工资要≥1650元,其 他职工为:
CDOW(DATE())="Monday"
学习 教程 教材 分享】GOOD
多媒体课件【友5情50≤基本工资≤3000"
GOOD STUDAY,
10
6
分享】GOOD GOOD STUDAY,
6.浏览数据库文件
浏览数据库rsgzk.dbc的命令如下:
CLOSE DATABASE ALL&&浏览前首先关闭.DBC文件
USE rsgzk.dbc
&&打开数据库文件必须指明扩展名. DBC
BROWSE
学习 教程 教材 多媒体课件【友情
7
分享】GOOD GOOD STUDAY,
(1)按照表4-7和表4-8建立部门代码表(bmdm)和增资表(zz)结构, 并输入记录数据。
(2)建立数据库rsgzk.dbc。
(3)添加表rsb.dbf、gzb.dbf、bmdm.dbf和zz.dbf 。
学习 教程 教材 多媒体课件【友情
3
分享】GOOD GOOD STUDAY,
2.用命令方式建立数据库
删除规则:是指删除父表中的记录时使用的规则,包括级联、 限制和忽略3种。
插入规则:是指在子表中插入新的记录,或更新已存在的记录 时所用的规则,包括限制和忽略2种。
学习 教程 教材 多媒体课件【友情
13
分享】GOOD GOOD STUDAY,
级联 限制 忽略
更新规则
删除规则
插入规则
当父表中的关键字 当父表的记录被删 值被修改时,系统 除时,系统相应的 用新的关键字值更 删除子表中所有相 新子表中所有相关 关记录 记录
VFP第四章查询视图
Full Join:指定将所有满足和不满足条件的记 录都包含在查询结果中。
▪ [字段名]用来设置联接两的字段或表达式. 注:此外建立联接的字段不一定是表中的 索引,除备注字段和通用字段外,可在任意 字段间建立联接.
D.CREATE VIEW myview SELECT * FROM 歌手 WHERE LIKE(“1”,歌手号)
用于分组的字段不一定是选定输出的字 段,但分组字段不能是一个计算字段。
可以用 满足条件… 来对分组结果进行 进一步筛选。
(6)“杂项”选项卡 用于指定是否要对重复记录进行检索,是 否对返回记录结果的最大数目或最大百分 比作限制。 [列在前面的记录]:
选择”全部”,则表示查询记录范围是全部记录. 不选择”全部”时,下面选项变为可用,可在记录个 数微调框中,选择或输入查询范围的记录个数.选 中”百分比”复选框,则[记录个数]微调框变为[百分 比]微调框
一个相匹配,这些样本由逗号分隔.
[实例]:是一个文本框,要注意在实例框中输入 不同数据类型时的格式: 1) 字符串可以不带引号(当与源表中的字段名
相同时才用引号); 2) 日期型数值要用{^ }括起来; 3) 逻辑型数据两侧要带“ .”号,如 .T.,.F. [大小写]:指定在条件中与实例的比较是否区分 大小写.选中表示不区分大小写. [逻辑]:将两个筛选条件用逻辑运算符AND或OR 连接.
▪ 4.查询的建立,见上机演示。
查询设计器
2. 查询设计器的使用
使用查询设计器中的“页面”选项 修改查询(定义输出的内容)
(1)“字段”选项卡 用于选取最后在查询结果中输出的字段。 选取的字段对象可以是一个表中的字段,多 个表中的字段或某个字段的表达式,如对某 一数值型字段的求和或求平均值.
VFP 第四章 查询和视图
第二节 视图的创建和使用
视图可以从表中提取一组记录,查看、改变这些记录, 并把更新的数据送回到原表中。 视图具有表和查询的共有特点,视图中的源表数据表 称之为“基表”(Base table) 可以创建两种视图:本地视图和远程视图。 远程视图使用SQL语法从远程数据源表中选择信息, 本地视图使用VFP的SQL语法从视图或表中选择信 息,可以将一个或多个远程视图添加到本地视图。 ODBC(open database connectivity)是一种用于数据库 的标准协议,通过他可访问多上 count(*) as 人数, AVG(table2.score) as “均分”; C)进一步的, 如果还想对查询结果进行记录的筛选,如仅想统 计男生或女生的平均分数及人数,可以在满足条 件选项里选择相应的条件,此时SELECT_SQL语 句会加上 having table1.sex=“男” 7)对查询结果的其他设置 A) “杂项”选项卡包含 《有无重复记录》 B)《设置记录的范围》共有:全部 / n个数 / 百分比 三个选项。 8) 运行查询 “!”按钮 / do example1.qpr / 查询->运 行查询 等方法。
第一节 查询的创建和使用
一:查询的本质 1)查询是指向一个数据源发出检索信息的请求,它 依据一定的条件提取特定的记录,查询运行的结 果是一个基于表和视图的动态 的数据集合。 2)创建查询基于的数据源可以是自由表、数据库表、 或另一个视图。并且常常不止一个表——方能显 出查询优势。 3)一个查询是SELECT_SQL语句,一个查询保存为 一个扩展名为 .qpr的文件。文件中保存的是实现查 询的SELECT_SQL语句(程序),而不是查询结 果。查询和视图本质上都是SELECT_SQL命令的 可视化 的设计方法。
VFP第4章 查询和视图
说明:查询文件的扩展名.qpr不可缺省 说明:查询文件的扩展名 不可缺省
注意事项
没有用到的表不要添加。 没有用到的表不要添加。 “分组依据”的设置(什么时候设?如何设?) 分组依据”的设置(什么时候设?如何设?) 分组依据 “筛选”与“满足条件”的区别。 筛选” 满足条件”的区别。 筛选 “前n个(前百分之 个)”时要排序。 前 个 前百分之n个 时要排序。
详细语法格式
SELECT [ ALL | DISTINCT ] ; [ TOP 数值 [ PERCENT ] ; 输出数据项 [ AS 标题 ] ; FROM 数据源表 ; 联接类型 JOIN 表名 ON 联接条件 ; INTO | TO 输出去向 ; WHERE 筛选条件 ; GROUP BY 分组依据 ; HAVING 分组结果筛选条件 ; UNION [ALL] 另一条SELECT-SQL语句 ; ORDER BY 排序依据
基于单个表的查询示例
表中所有教师的工号和姓名。 【例1】显示 表中所有教师的工号和姓名。 】显示JS表中所有教师的工号和姓名 表中学号以“ 开头的学生情况。 【例2】显示 表中学号以“01”开头的学生情况。 】显示XS表中学号以 开头的学生情况 【例3】基于 】基于KC表查询所有不带删除标记且课时 表查询所有不带删除标记且课时 数超过5或课时数少于 或课时数少于3(不包括5和 )的课程。 数超过 或课时数少于 (不包括 和3)的课程。 要求输出字段为: 要求输出字段为:kcdh、kcm、kss、bxk、xf, 、 、 、 、 , 查询结果按kss降序排序 降序排序。 查询结果按 降序排序。 【例4】统计各个系男女教师的人数,输出字段为: 】统计各个系男女教师的人数,输出字段为: xdh、xb、人数。 、 、人数。
vfp的查询和视图
二、视图的创建和使用
视图的概念:把分散在相关表中的数据通过联 接条件把他们收集到一起,构成一张“虚表”。 这张“虚表”就是视图,视图是数据库的一个组 成部分,是基于表的并且可更新的数据集合
视图与查询的区别:视图除了可以用来查询数 据之外,还可以当作表来使用,可以作为数据源, 也可对查询出来的数据进行修改并送回源表中
❖多表查询的创建:步骤 例题 ▪ 若有2张以上的表,在添加时一定要注意先后次 序,“纽带表”要放在两张“父表”之间 ▪ 若已进行了永久性关系的设置,则无须进行联接 ▪ 修改联接条件可在“查询设计器”—“联接”卡 片中进行 ▪ 联接条件和筛选条件类似,都是选出符合条件的 记录;不同的是筛选是将字段值和筛选值进行比 较,而联接条件是将一张表中的字段值与另外一 张表中的字段值进行比较
❖查询时会考到的最难的程度如下例:
查询信息管理系中所有成绩在480分以上,并且各门课程的成
绩不低于70分的学生。要求在查询的结果中包含学号,姓名, 总分,均分,最低分,并按照总分从高到底排列
❖ 一部分查询的练习 1. 查询学生的学号,姓名,系名,总分和平均分, 按照系名升序排序,同一个系的学生按照总分 降序排序。 2. 查询每个系每门课程的总分和平均分,要求输 出课程名,课程代号,系名,每个系的平均成 绩和总成绩,按课程代号升序排序 3. 查询各个系每位教师的课时数,要求输出系名, 工号,姓名,课时数,并按系名升序排序,同 一个系的教师按照工号升序排序 4. 查询计算机科学系各位教师的课时数,要求输 出工号,姓名,系名,课时数,并按工号降序 排序,并且将查询信息保存为表,表名为:
vf数据查询与建立视图
10
5.2 建立视图
5.2.1 视图简介 视图是一个定制的虚拟逻辑表,视图中只存放相应的数据逻辑 关系,并不保存表的记录内容,但可以在视图中改变记录的值, 然后将更新记录返回到源表。 视图与查询在功能上有许多相似之处,但又有各自特点,主要 区别如下:
功能不同:视图可以更新字段内容并返回源表,而查询文件 中的记录数据不能被修改。
3.查询去向的设置
单击“查询设计器”工具栏中的“查询去向”按钮或在系统 菜单中单击【第查9页询/共】17页|【查询去向】命令,弹出“查询去向”对 话框,如图5-15 所示。其中共包含7个查询去向,各项的含义 见表5-1。
9
5.1.4 复杂查询的设计
1.多表查询的创建 2.交叉表查询的创建
交叉表是类似电子表格形式来表现二维分析数据的一种表。 例如,在学生成绩总表中,是由学生“姓名”和本学期的各 门“课程名称”构成了一个二维表,此表的交叉点为“成绩” 的分值。
8
2.查询的修改
修改可以用以下3种方法:
① 在“项目管理器”窗口中,选择要修改的查询文件,单击右 边的“修改”按钮,进入“查询设计器”窗口中修改。
② 选择【文件】|【打开】命令,在“打开”对话框中,选择 所要修改的查询文件,单击“确定”按钮,进入“查询设计器” 窗口中修改。
③ 在命令窗口中,键入 MODIFY QUERY <查询文件名>。
2
(3)设置查询条件 (4)设置排序字段 (5)设置记录输出范围 (6)保存查询
第3页/共17页”窗口有二种方法,
(1) 选择【文件】│【新建】命令,进入“新建”对话框,选择“查询”单选按钮, 单击“新建”按钮;
(2) 在“项目管理器”窗口中,选择“数据”选项卡,选中“查询”文件类型,单 击“新建”按钮,出现“新建查询”对话框,单击“新建查询”按钮。
VFP创建查询
VFP创建查询预览说明:预览图片所展示的格式为文档的源格式展示,下载源文件没有水印,内容可编辑和复制【原创教程】数据库----创建查询说明:下面所提到的“当前目录”是指答题文件夹中的FOXKT文件夹;而且以下文件名、字段名、字段值中的字母和数字都是英文半角字符。
在FoxPro环境中进行如下操作:1、创建数据表:在当前目录(FOXKT文件夹)中创建数据表STRUB.DBF,结构如下:Field Name Type Width Dec产品编号Character 12产品名称Character 20生产日期Date合格率Numeric 6 22、数据计算:在当前目录下打开FoxB.DBF,计算所有记录的“总人数”列,计算公式为:总人数= 男性职工+ 女性职工3、创建索引:为FoxB.DBF建立索引:索引名为“ZHIGONG”、降序、类型为“普通索引”、表达式为“男性职工”。
4、创建查询:打开FoxB.DBF建立一个查询,字段选择企业编号、企业名称、女性职工字段,筛选记录条件为女性职工小于等于50,排序选择按女性职工升序排序。
将生成的查询以文件名tb保存在FOXKT 文件夹下(注意:扩展名默认)。
5、关闭所有打开的数据库,退出FoxPro应用程序。
操作步骤:1、打开本题,进入VFP系统环境后,单击“文件--新建”菜单。
2、文件类型选择“查询”,单击“新建文件”大按钮。
3、此时出现“打开”对话框,选择要打开的数据表文件。
4、单击“添加表或视图”右上角的关闭按钮,关闭这个没用窗口。
5、在“查询设计器”窗口中操作,双击“可用字段”列表中的“企业编号”“企业名称”“女性职工”这些字段,使它们出现在右侧“选定字段”的窗口中。
6、单击“筛选”选项卡,在“字段名”列表中选择“女性职工”,条件列表中选择“<=”,“实例”中填写50。
7、单击“排序依据”选项卡,双击“选定字段”中的“女性职工”使之出在现右侧的“排序条件”方框中,排序选项选择“升序”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.1 创建查询1. 查询的概念查询:就是向一个数据库发出检索信息的请求,从中提取符合特定条件的记录。
查询文件:即保存实现查询的SELECT-SQL命令的文件。
查询文件保存时,系统自动给出扩展名.qpr;查询被运行后,系统还会生成一个编译后的查询文件,扩展名为 .qpx。
查询结果:通过运行查询文件得到的一个基于表和视图的动态的数据集合。
查询结果可以用不同的形式来保存。
查询中的数据是只读的。
查询的数据源:可以是一张或多张相关的自由表、数据库表、视图。
2. 用查询设计器创建查询基本步骤:打开查询设计器→ 添加创建查询所基于的数据表→定义输出内容→设置联接、筛选、排序、分组条件→ 选择查询结果的输出形式→保存查询文件→运行查询。
(1)打开查询设计器方法1:从文件菜单或工具栏上单击新建→查询→新建文件→进入查询设计器方法2:当所用到的数据表已在项目中时,从项目管理器窗口中单击数据→ 查询→新建→ 新建查询→进入查询设计器方法3:从命令窗口中输入命令:create query 查询文件名& 创建新查询modify query 查询文件名& 修改已存在的查询(2) 定义查询的输出内容单击字段选项卡→从可用字段列表框中单击所需字段(当输出的列不是直接来源于表中的字段时,单击函数和表达式框边的… 按钮,打开表达式生成器,构造出所需的表达式)→单击添加按钮→所需字段自动出现在选定字段框中。
(3) 设置查询的筛选条件筛选条件决定将哪些记录显示出来。
在筛选框中构造筛选条件表达式时,要注意在实例框中输入不同数据类型时的格式:1) 字符串可以不带引号(当与源表中的字段名相同时才用引号);2) 日期型数值要用{ }括起来;3) 逻辑型数据两侧要带 .号,如 .T.,.F.(4) 设置查询结果的排序依据排序决定查询输出结果中记录显示的顺序。
设置方法:单击排序依据→ 从选定字段框选中字段→选择升序或降序→单击添加。
(5) 设置查询结果的分组依据分组是指将一组类似的记录压缩成一个结果记录,目的是为了完成基于该组记录的计算,比如:求平均值、总和、统计个数、其中的最大值、最小值等。
几个常用的统计函数功能求平均值求总和求最大值求最小值统计个数名称AVG()SUM()MAX()MIN()COUNT()用于分组的字段不一定是选定输出的字段,但分组字段不能是一个计算字段。
可以用满足条件… 来对分组结果进行进一步筛选。
(6)对查询结果的其他设置可以排除查询结果中所有重复的行,并设置结果的记录范围。
(7)选择查询结果的输出类型默认情况下,查询结果将输出在浏览窗口中,且其中的数据是只读的。
设置其他输出类型的方法:打开查询菜单→ 选择查询去向→ 在查询去向对话框中选择一种。
一般多选择表或报表。
(8)运行查询在查询设计器打开的状态下,单击常用工具栏上的!按钮或从查询菜单中选择运行查询。
其他情况下,可从项目管理器中选中查询文件并单击运行按钮,或从程序菜单中选择执行命令,或从命令窗口中输入: DO 查询文件名。
(9)创建多表查询打开查询设计器→ 将所需的多个相关表添加进来→设置联接条件→按上面(2)至(8)步进行。
3. 用查询向导创建查询(1)创建标准查询:打开待查询的数据表→从文件菜单中单击新建→在新建对话框中选择查询并单击向导→选择查询向导→从单张或多张相关的表中进行字段选取→ 设置筛选条件→设置排序次序→选择查询结果的保存方式→给出查询文件名并选择保存位置→查询结果显示在查询窗口中。
注意:查询此时得到的数据是只读的,不可以更新。
(2)交叉表查询打开待查询的数据表→从文件菜单中单击新建→在新建对话框中选择查询并单击向导→选择交叉表向导→从单张表中选取字段→设计布局→加入总和信息→选择查询结果的保存方式→给出查询文件名并选择保存位置→查询结果显示在查询窗口中。
注意:不是任何表都适宜采用交叉表的形式。
(3)用SELECT-SQL命令创建查询常用的格式:SELECT表名1. 字段名1 [AS标题名1], 表名1. 字段名2 [AS标题名2], …FROM 数据库名! 表名1 [,数据库名! 表名2 ] [, 数据库名! 表名3 ][TO FILE 文本文件名 | into table | into cursor表文件名 ][ WHERE选定条件][GROUP BY分组字段名 ][HAVING分组中的满足条件 ][ORDER BY排序字段名1 [ASC | DESC] [, 排序字段名2 [ASC | DESC] ...]]示例:浏览学生中的查询学生 student.qpr :SELECT 表xs.xh as 学号, 表xs.xm as 姓名, 表xs.xb as 性别, ;表xs.csrq as 出生日期, 表xs.bj as 班级名称;FROM 数据test!表xs;WHERE 表xs.bj =cs1;ORDER BY 表xs.xh;INTO TABLE xs浏览成绩中的按课程查询 sub_cj.qpr :SELECT 表xs.bj as 班级名称, COUNT(表xs.xh) as 班级人数, AVG(表cj.cj) as 平均分, ;MAX(表cj.cj) as 最高分, MIN(表cj.cj) as 最低分;FROM 数据test!表xs, 数据test!表cj, 数据test!表kc;WHERE 表cj.xh = 表xs.xh;AND 表kc.kcm = 表cj.kcm;AND 表cj.kcm = sc1;GROUP BY 表xs.bj;ORDER BY 表xs.bj;INTO TABLE sub_cj5.2 创建视图1. 视图的特点1) 视图是存在于数据库中的一个虚表,不以独立的文件形式保存;2) 视图中的数据是可以更改的,它不仅具有查询的功能,且可以把更新结果反映到源数据表中;3) 视图打开时,其基表自动打开,但视图关闭时,其基表并不随之自动关闭;4) 视图的数据源可以是自由表、数据库表或另一个视图。
2. 用视图设计器创建本地视图从项目管理器中选择一个数据库→选择本地视图→ 单击新建按钮→选择新视图→添加所需的数据表→在视图设计器中按照与创建查询相同的步骤(2)~(6)建立视图→ 设置更新条件→保存视图→给出视图名称→关闭视图设计器(可以先运行一下看看)。
创建参数化视图:在筛选页面的实例框中输入:?参数名→从查询菜单中选择视图参数→在对话框中给出参数名并选择参数类型→确定→保存视图→给出视图名称→关闭视图设计器(可以先运行一下看看)。
3. 用视图向导创建本地视图从项目管理器中选择一个数据库→选择本地视图→单击新建按钮→选择视图向导→选取字段→关联表→记录操作范围→筛选记录→排序记录→选择保存方式→完成。
4. 用CREATE SQL VIEW 命令创建视图打开数据库,用命令来创建视图:OPEN DATABASE 数据库名CREATE SQL VIEW 视图文件名AS SQL-SELECT 语句例: OPEN DATABASE SJCREAT SQL VIEW SCORE AS SELECT SJCJ.XH, SJCJ.CJ ;FROM SJ!SJCJ WHERE SJCJ.KCH=”计算机基础”5. 视图的使用用菜单方式对视图中的记录进行编辑的方法与操作数据表相同。
也可用以下命令操作。
视图操作基本命令打开视图文件并浏览OPEN DATABASE数据库名USE视图文件名BROWSE修改视图MODIFY VIEW视图文件名视图重命名RENAME VIEW原视图文件名TO新视图文件名删除视图DELETE VIEW视图文件名6.利用视图更新源表数据可在视图设计器的更新条件页面中进行如下设置来实现对源表数据的更新:1)从表框中选择想要更新的源表;2)在字段名框中单击一个字段前关键列 和更新列 ,使其作为主关键字和可更新字段;3)将发送SQL 更新复选框选中5.3 SQL 语言中的命令语句SQL是一种日趋流行的标准的数据库系统管理语言,能使数据检索异常地方便、灵活。
VFP5.0支持的7条SQL命令一览表命令功能示例备注CREATE TABLE -SQL创建一个指定字段的表create table xs (;xh c(4) default "1201" primary key,;xm c(6), ; xb c(2) check xb="男" or xb="女" error "性别只能是男或女" default "女",; nl n(2) null )新表的每个字段由名称、类型、精度、比例、是否支持 NULL 值和参照完整性规则来定义,可从命令本身或数组中获得这些定义。
CREATECURSOR-SQL 创建一个临时表CREATE CURSOR teacher ;(TeacherID N(5), Name C(20), Address; C(30),OfficeNo C(8) NULL, Specialty M) ALTER TABLE - SQL以编程方式修改一个已存在的表的结构。
ALTER TABLE xscj ADD COLUMN kcmc C(14)可以修改表中每个字段的名称、类型、精度、比例、是否支持 NULL 值和参照完整性规则。
ALTER TABLE cj; ALTER COLUMN cj SET CHECK cj >= 0; ERROR " 成绩不能为负数"SELECT - SQL从一个或多个表中检索数据。
SELECT 表xs.xh, 表xs.xm, 表xs.xb, ;FROM 数据test!表xs;WHERE 表xs.xh >'81991025'; ORDER BY 表xs.xh可以用union 命令连接两个条件。
DELETE - SQL 使用 SQL 语句将表中的记录加上删除标记。
DELETE FROM cj WHERE cj<60INSERT - SQL在已存在表的末尾追加一条新记录 INSERT INTO xs (xh ,xm ,xb ) VALUES;("8399101", "张丽", "女")新记录包含的数据列在 INSERT 命令中,或者来自数组。
UPDATE - SQL 更新表中的记录UPDATE cj SET cj = cj*1.05 WHERE cj>80可以基于SELECT - SQL 语句结果更新记录。