VFP程序设计教程.ppt_第1页
VFP程序设计教程.ppt_第2页
VFP程序设计教程.ppt_第3页
VFP程序设计教程.ppt_第4页
VFP程序设计教程.ppt_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

VFP程序设计教程,主讲老师:wj,第五章,关系数据库标准 语言SQL,第一节 SQL概述 SQL(Structured Query Language)是结构化的数据库查询语言,包含数据定义、数据操纵和数据控制。 在有些场合,几乎被认为是一种万能语言,或者是一种数据库标准语言。一经上市,多种数据库系统都将SQL语言融入其中。 从VF的角度来谈,VF能实现的功能,SQL都能实现。,SQL语言非常简洁。,SQL命令动词,SELECT语句的格式: SELECT 字段列表 FROM 表列表 WHERE GROUP BY 字段名HAVING UNION ORDER BY 字段名 功能:在一个或多个表中将满足条件的多个字段显示出来。,SELECT:说明要查询的数据,即字段列表。 FROM:说明要查询的数据来自哪些表,可以对单个表或多个表进行查询。 WHERE:查询条件,即选择元组的条件。 GROUP BY:用于对查询结果进行分组,可以利用它进行分组汇总。 HAVING:必须跟随GROUP BY 短语使用,它用来限定分组必须满足的条件。 ORDER BY:用来对查询的结果进行排序。,说明数据之间的联系,如职工在哪个城市工作,一、简单查询 例 从职工关系中检索所有的工资值。 SELECT 工资 FROM 职工 SELECT DISTINCT 工资 FROM 职工 去掉查询结果中的重复值。 例 检索仓库关系中的所有元组。 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”),二、联接查询 联接查询是一种基于多个关系的查询。在多个表中找出满足条件的记录。 例 找出工资多于1230元的职工号和他们所在的城市。 SELECT 职工号,城市 FROM 职工,仓库 ; WHERE (工资1230) AND(职工.仓库号=仓库.仓库号) 说明:分号是续行符,有时将一条语句写在几行上,其结构看得更清楚。,例 找出工作在面积大于400的仓库的职工号以及这些职工所在的城市 SELECT 职工号,城市 FROM 职工,仓库 ; WHERE (面积400) AND(职工.仓库号=仓库.仓库号),三、嵌套查询 多个查询可以嵌套执行。 基于多个关系的查询,这类查询所要求的结果出自一个关系,但相关的条件却涉及多个关系。 例 哪些城市至少有一个仓库的职工工资为1250元(工资和城市字段不在一个表中) 分析:此例求查询仓库表中的城市信息,而查询条件是职工表中的工资字段值。 SELECT城市 FROM 仓库 WHERE 仓库号 IN ; (SELECT 仓库号 FROM 职工 WHERE 工资=1250),例 查询所有的职工工资都大于1210元的仓库信息 分析:此例也可描述为”没有一个职工的工资少于或等于1210元的仓库的信息 SELECT * FROM 仓库 WHERE 仓库号 NOT IN ; (SELECT 仓库号 FROM 职工 WHERE 工资=1210),例找出和职工E4挣同样工资的所有职工 SELECT 职工号 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),例 从供应商关系中检索出全部公司的信息,不要工厂或其他供应商的信息 匹配字符串查询,使用LIKE运算符 SELECT * FROM 供应商 WHERE 供应商名 LIKE “%公司” 匹配符%:表示0个或多个字符 匹配符_ :表示一个字符,五、排序 使用SQL SELECT 可以将查询结果排序,使用短句ORDER BY ORDER BY 排序项1ASC|DESC,排序项2ASC|DESC 即允许按照一列或多列排序,可以按升序排序,也可以按照降序排序,缺省为升序,若使用降序,应使用DESC参数。,例 按职工的工资值升序检索出全部职工信息 SELECT * FROM 职工 ORDER BY 工资 降序: SELECT *FROM 职工 ORDER BY 工资 DESC 例先按仓库号排序,再按工资排序并输出全部职工信息 SELECT * FROM 职工 ORDER BY 仓库号,工资,六、简单的计算查询 用于计算检索的函数有: COUNT-计数,即统计记录数。 SUM-求和,即求字段的总和。 AVG-计算平均值,即求指定字段的平均值。 MAX-求最大值,即求字段的最大值。 MIN -求最小值,即求字段的最小值。,例 找出供应商所在地的数目 SELECT COUNT (DISTINCT 地址) FROM 供应商 注意:除非对关系中的元组个数进行计数,一般COUNT函数应该使用DISTINCT。 例如: 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 例 求每个仓库的职工的平均工资 SELECT 仓库号,AVG(工资) FROM 职工 GROUP BY 仓库号,八、利用空值查询 例 找出尚未确定供应商的订购单 SELECT * FROM 订购单 WHERE 供应商号 IS NULL 注意:查询空值时要使用IS NULL,而=NULL是无效的,因为空值不是一个确定的值,所以不能用“=”这样的运算符进行比较。 例 列出已经确定了供应商的订购单信息 SELECT *FROM 订购单 WHERE 供应商号 IS NOT NULL,九、别名与自然连接查询 在联接操作中,经常需要使用关系名作为前缀,有时这样做显得很麻烦.因此,SQL允许在FORM短语中为关系名定义别名 ,十、内外层互相关嵌套查询 内层查询的条件需要外层查询提供值,而外层查询的条件需要内层查询的结果.,十一、使用量词和谓词的查询 ANY|ALL|SOME(子查询) NOTEXISTS (子查询) ANY, ALL, SOME是量词,其中ANY和SOME是同义词,在进行比较运算时,只要子查询中有一行能使结果为真,则结果就为真;而ALL 则要求子查询中的所有行都为真,结果才为真. EXIST是谓词,EXISTS 或 NOT EXISTS是用来检查子查询中是否有结果返回,即存在的元组或不存在元组.,十二、超联接查询 超联接查询首先保证一个表中满足条件的元组都在结果表中,然后将满足联接条件的记录与另一个表的记录进行联接,不满足联接条件的则将应来自另一表的属性值置为空值. “*=”左联接,含义是在结果表中包含第一个表中满足条件的所有记录;如果有在联接条件上匹配的 记录,则第二个表返回相应值,否则返回空值. “=*”右联接,含义是在结果表中包含第二个表中满足条件的所有记录;如果有在联接条件上匹配的记录,则第一个表返回相应值,否则返回空值.,十三、集合的并运算 SQL 支持集合的并(UNION)运算,即可以将两个SELECT语句的查询结果通过并运算合并成一个查询结果.为了进行并运算,要求这样的查询结果具有相同的字段个数,并且对应字段的值要出自同一个值域,即具有相同的数据类型和取值范围. 例:查询北京和上海的仓库信息 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将查询结果放在临时数据库表文件中.该表为只读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 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 表名说明向由指定的表中插入记录,当插入的不是完整的记录时,可以指定字段; 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命令,对满足条件的记录进行替换修改操作。 例给WH1仓库的职工提高10%的工资 UPDATE 职工 SET 工资=工资*1.10 WHERE 仓库号=”WH1”,三、删除 命令: DELETE FROM 表名 WHERE 条件删除满足条件的记录。 例要 删除仓库关系中仓库号值是WH2的元组. DELETE FROM 仓库 WHERE 仓库号=”WH2” 注意:此删除同样是逻辑删除记录.,第四节 定义功能 标准的SQL的数据定义功能包括数据库的定义、表的定义、视图的定义、存储过程的定义、规则的定义和索引的定义。 一、表的定义 格式:Create Table 表名(字段1 数据类型(长度,小数位数),字段2 数据类型(长度,小数位数),),例 用命令建立订货管理1数据库. CREATE DATABASE 订货管理1 例用SQL CREATA命令建立仓库1表 CREATE TABLE 仓库1(仓库号 C (5)PRIMARY KEY,城市 C (10),面积 I CHECK(面积0) ERROR “面积应该大于0!”),用SQL CREATE命令建立职工1表 CREATE TABLE 职工1( 仓库号 C(5),职工号 C(5) PRIMARY KEY, 工资 I CHECK(工资=1000 AND工资=5000) ERROR “工资值的范围在1000-5000! ” DEFAULT 1200,FOREIGN KEY 仓库号 TAG 仓库号 REFERENCES 仓库1) 说明:与表仓库1按仓库号建立关联。,二、表的删除 删除表的SQL命令是: DROP TABLE 表名 彻底删除指定的表。,三、表结构的修改 修改表结构的命令是ALTER TABLE,该命令有三种格式。 格式一: ALTER TABLE 表名字 ADD |ALTER 字段名 字段类型 字段宽度 NULL |NOT NULL CHECK ERRORDEFAULT PRIMARY KEY|UNIQUEREFERENCES .TAG .,如添加字段 格式:Alter Table 表名 Add Column 字段名 数据类型(长度) 如修改字段 格式:Alter Table 表名 Alter Column 字段名 数据类型(长度),格式2:可删除字段、修改字段名;定义、删除和修改表一级的有效性规则。 删除字段 格式:Alter Table 表名 Drop Column 字段名,四、视图的定义 视图:在关系数据库中,也称作窗口,即操作表的窗口,可以把它看作是从表中派出

温馨提示

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

评论

0/150

提交评论