VFP程序设计教程课件

上传人:我*** 文档编号:142172693 上传时间:2020-08-17 格式:PPT 页数:53 大小:464.50KB
返回 下载 相关 举报
VFP程序设计教程课件_第1页
第1页 / 共53页
VFP程序设计教程课件_第2页
第2页 / 共53页
VFP程序设计教程课件_第3页
第3页 / 共53页
VFP程序设计教程课件_第4页
第4页 / 共53页
VFP程序设计教程课件_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《VFP程序设计教程课件》由会员分享,可在线阅读,更多相关《VFP程序设计教程课件(53页珍藏版)》请在金锄头文库上搜索。

1、VFP程序设计教程,主讲老师:wj,第五章,关系数据库标准 语言SQL,第一节 SQL概述 SQL(Structured Query Language)是结构化的数据库查询语言,包含数据定义、数据操纵和数据控制。 在有些场合,几乎被认为是一种万能语言,或者是一种数据库标准语言。一经上市,多种数据库系统都将SQL语言融入其中。 从VF的角度来谈,VF能实现的功能,SQL都能实现。,SQL语言非常简洁。,SQL命令动词,SELECT语句的格式: SELECT 字段列表 FROM 表列表 WHERE GROUP BY 字段名HAVING UNION ORDER BY 字段名 功能:在一个或多个表中将

2、满足条件的多个字段显示出来。,SELECT:说明要查询的数据,即字段列表。 FROM:说明要查询的数据来自哪些表,可以对单个表或多个表进行查询。 WHERE:查询条件,即选择元组的条件。 GROUP BY:用于对查询结果进行分组,可以利用它进行分组汇总。 HAVING:必须跟随GROUP BY 短语使用,它用来限定分组必须满足的条件。 ORDER BY:用来对查询的结果进行排序。,说明数据之间的联系,如职工在哪个城市工作,一、简单查询 例 从职工关系中检索所有的工资值。 SELECT 工资 FROM 职工 SELECT DISTINCT 工资 FROM 职工 去掉查询结果中的重复值。 例 检索

3、仓库关系中的所有元组。 SELECT * FROM 仓库 等价于SELECT 仓库号,城市,面积 FROM 仓库 *是通配符,表示所有属性,即表示所有字段。,例 检索工资多于1230元的职工号 SELECT 职工号 FROM 职工 WHERE 工资1230 例 检索哪些仓库有工资多于1210元的职工 SELECT DISTINCT 仓库号 FROM 职工 WHERE 工资1210 例 给出在仓库”WH1”或”WH2”工作,并且工资少于1250元的职工 SELECT 职工号 FROM 职工 WHERE 工资1250 AND (仓库号=“WH1” OR 仓库号=”WH2”),二、联接查询 联接查询

4、是一种基于多个关系的查询。在多个表中找出满足条件的记录。 例 找出工资多于1230元的职工号和他们所在的城市。 SELECT 职工号,城市 FROM 职工,仓库 ; WHERE (工资1230) AND(职工.仓库号=仓库.仓库号) 说明:分号是续行符,有时将一条语句写在几行上,其结构看得更清楚。,例 找出工作在面积大于400的仓库的职工号以及这些职工所在的城市 SELECT 职工号,城市 FROM 职工,仓库 ; WHERE (面积400) AND(职工.仓库号=仓库.仓库号),三、嵌套查询 多个查询可以嵌套执行。 基于多个关系的查询,这类查询所要求的结果出自一个关系,但相关的条件却涉及多个

5、关系。 例 哪些城市至少有一个仓库的职工工资为1250元(工资和城市字段不在一个表中) 分析:此例求查询仓库表中的城市信息,而查询条件是职工表中的工资字段值。 SELECT城市 FROM 仓库 WHERE 仓库号 IN ; (SELECT 仓库号 FROM 职工 WHERE 工资=1250),例 查询所有的职工工资都大于1210元的仓库信息 分析:此例也可描述为”没有一个职工的工资少于或等于1210元的仓库的信息 SELECT * FROM 仓库 WHERE 仓库号 NOT IN ; (SELECT 仓库号 FROM 职工 WHERE 工资=1210),例找出和职工E4挣同样工资的所有职工 S

6、ELECT 职工号 FROM 职工 WHERE 工资=; (SELECT 工资 FROM 职工 WHERE 职工号=”E4”) 先求出E4的工资。,四、几个特殊的运算符 1、BETWEENAND表示在二者之间。 2、LIKE表示像什么一样,用于字串匹配。 3、!= 在SQL表示不等于,也可以等号表达式加NOT的方法构造。,例 检索出工资在1220元到1240远范围内的职工信息 SELECT * FROM 职工 WHERE 工资 BETWEEN 1220 AND 1240 注意表达方法,等价于: SELECT * FROM 职工 WHERE (工资 1220) AND (工资1240),例 从供

7、应商关系中检索出全部公司的信息,不要工厂或其他供应商的信息 匹配字符串查询,使用LIKE运算符 SELECT * FROM 供应商 WHERE 供应商名 LIKE “%公司” 匹配符%:表示0个或多个字符 匹配符_ :表示一个字符,五、排序 使用SQL SELECT 可以将查询结果排序,使用短句ORDER BY ORDER BY 排序项1ASC|DESC,排序项2ASC|DESC 即允许按照一列或多列排序,可以按升序排序,也可以按照降序排序,缺省为升序,若使用降序,应使用DESC参数。,例 按职工的工资值升序检索出全部职工信息 SELECT * FROM 职工 ORDER BY 工资 降序:

8、SELECT *FROM 职工 ORDER BY 工资 DESC 例先按仓库号排序,再按工资排序并输出全部职工信息 SELECT * FROM 职工 ORDER BY 仓库号,工资,六、简单的计算查询 用于计算检索的函数有: COUNT-计数,即统计记录数。 SUM-求和,即求字段的总和。 AVG-计算平均值,即求指定字段的平均值。 MAX-求最大值,即求字段的最大值。 MIN -求最小值,即求字段的最小值。,例 找出供应商所在地的数目 SELECT COUNT (DISTINCT 地址) FROM 供应商 注意:除非对关系中的元组个数进行计数,一般COUNT函数应该使用DISTINCT。 例

9、如: SELECT COUNT(*) FROM 供应商 例求支付的工资总数 SELECT SUM(工资) FROM 职工,例 检索工资多于1230元的职工号 SELECT 职工号 FROM 职工 WHERE 工资1230 例 求北京和上海的仓库职工的工资总和 SELECT SUM(工资) FROM 职工 WHERE 仓库号 IN (SELECT 仓库号 FFROM 仓库 WHERE 城市=”北京” OR 城市=”上海”),七、分组与计算查询 利用GROUP BY 进行分组计算查询,GROUP BY 短语的格式如下: GROUP BY 分组列表 HAVING FilterCondition 例

10、求每个仓库的职工的平均工资 SELECT 仓库号,AVG(工资) FROM 职工 GROUP BY 仓库号,八、利用空值查询 例 找出尚未确定供应商的订购单 SELECT * FROM 订购单 WHERE 供应商号 IS NULL 注意:查询空值时要使用IS NULL,而=NULL是无效的,因为空值不是一个确定的值,所以不能用“=”这样的运算符进行比较。 例 列出已经确定了供应商的订购单信息 SELECT *FROM 订购单 WHERE 供应商号 IS NOT NULL,九、别名与自然连接查询 在联接操作中,经常需要使用关系名作为前缀,有时这样做显得很麻烦.因此,SQL允许在FORM短语中为关

11、系名定义别名 ,十、内外层互相关嵌套查询 内层查询的条件需要外层查询提供值,而外层查询的条件需要内层查询的结果.,十一、使用量词和谓词的查询 ANY|ALL|SOME(子查询) NOTEXISTS (子查询) ANY, ALL, SOME是量词,其中ANY和SOME是同义词,在进行比较运算时,只要子查询中有一行能使结果为真,则结果就为真;而ALL 则要求子查询中的所有行都为真,结果才为真. EXIST是谓词,EXISTS 或 NOT EXISTS是用来检查子查询中是否有结果返回,即存在的元组或不存在元组.,十二、超联接查询 超联接查询首先保证一个表中满足条件的元组都在结果表中,然后将满足联接条

12、件的记录与另一个表的记录进行联接,不满足联接条件的则将应来自另一表的属性值置为空值. “*=”左联接,含义是在结果表中包含第一个表中满足条件的所有记录;如果有在联接条件上匹配的 记录,则第二个表返回相应值,否则返回空值. “=*”右联接,含义是在结果表中包含第二个表中满足条件的所有记录;如果有在联接条件上匹配的记录,则第一个表返回相应值,否则返回空值.,十三、集合的并运算 SQL 支持集合的并(UNION)运算,即可以将两个SELECT语句的查询结果通过并运算合并成一个查询结果.为了进行并运算,要求这样的查询结果具有相同的字段个数,并且对应字段的值要出自同一个值域,即具有相同的数据类型和取值范

13、围. 例:查询北京和上海的仓库信息 SELECT * FROM 仓库 WHERE 城市=”北京” UNOIN; SELECT * FROM 仓库 WHERE 城市=”上海”,十四、Visual Foxpro中SQL SELECT 的几个特殊选项 显示部分结果 例 只显示前几项记录 使用TOP nExpr PERCENT TOP 要与ORDER BY同时使用才有效.,将查询结果放在数组中 使用INTO ARRAY ArrayName 将查询结果放在数组中. SELECT * FROM 职工 INTO ARRAY tmp 将查询结果存放在临时文件中 使用INTO CURSOR CursorName

14、将查询结果放在临时数据库表文件中.该表为只读dbf文件,当关闭文件时该文件将自动删除。 SELECT * FROM 职工 INTO CURSOR tmp,将查询结果存放在永久表中 使用INTO DBF|TABLE TableName将查询结果放在表中。 SELECT * TOP 3 FROM 职工 INTO TABLE highsal ; ORDER BY 工资DESC 将查询结果存放在文本文件中 使用TO FILE FileNameADDITIVE将查询结果放在文本文件中. ADDITIVE选项使结果追加到原文件的尾部,否则将覆盖原有文件。 SELECT * TOP 3 FROM 职工 TO

15、 FILE tmp ; ORDER BY 工资 DESC,如果TO 短语和INTO短语同时使用,则TO短语将会被忽略。 输出到打印机使用TO PRINTER PROMPT 将查询结果直接输出到打印机 PROMPT打开打印机设置对话框,第三节 操作功能 一、插入记录 INSERT INTO 表名(字段1,字段2,) VALUES(字段1 值,字段2 值,) 字段名与字段值按出现的顺序一一对应,字段值按数据类型以常量的形式给出。 Visual Foxpro特殊格式: INSERT INTO 表名 FROM ARRAY 数组 | FROM 内存变量,INSERT INTO 表名说明向由指定的表中插入

16、记录,当插入的不是完整的记录时,可以指定字段; VALUES ()给出具体的记录值,按字段顺序给出各字段值; FROM ARRAY 数组名:说明从指定的数组中插入记录值; FROM 内存变量名:说明根据同名的内存变量来插入记录值,如果同名变量不存在,那么相应的字段为默认值或空。,例:往订购单中插入记录: (”E7”,”S4”,”OR01”,2001/05/25) INSERT INTO 订购单 VALUES (E7,S4, OR01,2001-05-25) 假如供应商未确定,只能先插入. INSERT INTO 订购单(职工号,订购单号) VALUES (E7,OR01),INSERT INTO FROM ARRAY的使用方法: USE 订购单 SCATTER to arr1 COPY STRUCTURE TO ord2 INSERT INTO ord2 FROM ARRAY arr1,二、更新 格式:UPDATE 表名 SET 字段名1=表达式1, 字段名2=表达式2,.WHERE 条件 如同Replace命令,对满足条件的记

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号