第四章 VF关系数据库标准语言SQL教案 下载本文

内容发布更新时间 : 2024/5/5 18:59:40星期一 下面是文章的全部内容请认真阅读。

学习必备 欢迎下载

第四章 关系数据库标准语言SQL

SQL:是结构化查询语言,它包括数据查询、数据定义、数据操纵、数据控制四部分。但在VF中只绍介查询、定义、操纵三个方面。 SQL命令动词: SQL功能 数据查询 数据定义 数据操纵 数据控制 一、查询功能

1、SQL语言的核心是查询。

查询的基本形式:

SELECT <字段名/表达式> FROM <表名/视图名> WHERE <条件>

由于表是由行和列组成就像数学中所学的坐标由X轴和Y轴构成,所需确定某个点需要说明X为多少Y为多少。而表中需要查询某些数据就必需指明行和列,所以在查询时:

1 FROM<表名/视图名>:说明查询的数据来自于所需要的表或视图。若某于多个表时,各个

表之间用逗号隔开。

2 SELECT<字段名/表达式>:说明从表或视图中所查询结果是哪些字段名或表达式的值(各

字段名或表达式之间用逗号隔开)即针对表的列来操作(限定列)。

3 WHERE<条件>:说明从表或视图中所查询结果是哪些行即记录针对表的行来操作(限定

行)。

关于其它短语的说明: 短语 表名.* DISTINCT IN BETWEEN…AND LIKE 说明 来自于某(些)表的所有字段(属性) 去掉查询结果中的重复记录(元组) 相当于数学集合“∈”只需属于其中一个元素(值)就是满足条件;NOT IN则不属于其中任意一个元素(值)就满足条件 表示…和…之间,注意和第二章BETWEEN()函数的区别 字符串匹配运算符,注意通配符是“%”和“_”与第二章LIKE()函数区别 命令动词 SELECT CREATE、DROP、ALTER INSERT、UPDATE、DELETE GRANT、REVOKE 学习必备 欢迎下载

ORDER BY GROUP BY 对指定某个(些)字段排序,只能对最终的查询结果排序,不能用于子查询 用于分组计算查询(指定分组依据) 对GROUP BY分组计算查询的结果进一步的加以限定即限定分组(对分组之后的限HAVING 定),必须跟GROUP连用,不能单独使用。但与WHERE条件无关,因WHERE条件是对分组之前限定某些元组(记录)是否来参加分组。(注:HAVING与WHERE使用的区别) IS NULL IS NOT NULL ANY/SOME ALL EXISTS NOT EXISTS COUNT() MAX() MIN() AVG() SUM() [INNER] JOIN LEFT JOIN RIGHT JOIN 查询某字段为空值的记录(元组),但不能用“=NULL”表示 查询某字段不为空值的记录(元组),但不能用“#NULL”或“NOT IS NULL” 子查询中只需一行为 .T.则外层就满足条件 子查询中所有的行都为 .T.则外层就满足条件 子查询中只需有结果(无论多少),则外层就满足条件 子查询中只需有结果,则外层就满足条件 统计查询结果的记录(元组)条数 对某列(数值类型)求最大值 对某列(数值类型)求最小值 对某列(数值类型)求平均值 对某列(数值类型)求和 普通(内部)连接即只有满足条件的记录才出现在查询结果当中 左连接即除满足条件的记录外,第一个表不满足条件的记录也出现在查询结果当中 右连接即除满足条件的记录外,第二个表不满足条件的记录都会出现在查询结果当中 全连接即除满足条件的记录外,第一个表和第二个表中不满足条件的记录都会出现在查询结果当中 SQL查询中唯一的一个并运算,将两个SELECT查询语句的查询的结果合并成一个查询结果 显示前面的部分记录,必须跟ORDER BY 连用。注意TOP必须书写在查询结果第一个字段的前面如:SELECT TOP2 姓名,出生日期 FROM XS 把查询结果存储到某个数组当中 这五个函数只能跟在后面,不能直接跟在其它短语后面 FULL JOIN UNION TOP INTO ARRAY 学习必备 欢迎下载

INTO CURSOR INTO TABLE/DBF TO FILE TO PRINTER

把查询结果存储到某个临时表当中 把查询结果存储到某个永久表(自由表)中 把查询结果存储到某个文本文件当中 把查询结果输出到打印机 可以在3个区域中创建SELECT命令。 1 在命令窗口中; 2 在VFP程序中 3 在查询设计器中

注:当FROM后面来自于多个表时,必须写连接条件(通常根据表的公共字段作为连接条件),此时在书写公共字段之前必须加以别名限定。

定义表的别名方法见教材P137,超连接的格式见教材P140 FROM书写不要写成=>FORM 二、查询方法: 1、 简单查询:

例:从职工表中检索所有的工资值。 SELECT 工资 FROM 职工表

或者SELECT * FROM 职工表

如果要去掉重复值用:DISTINCT

例:检索哪些仓库有工资多于1260元的职工号

SELECT DISTICT 仓库号 FROM 职工表 WHERE工资>1260 2、 单击的连接查询:

类似于多个表的查询,与嵌套查询的区别是要查询的结果呆以出自多个表中。而嵌套查询的结果是基于一个表中。

例:找出工资多于1250元的职工号与他们所在的城市。

这里所要求检索的住处分别出自职工表和仓库表两个关系,这样的检索肯定是基于多个关系的,这类查询一般用连接查询来实现。