预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共122页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第六章关系数据库标准语言SQLSQL是结构化查询语言StructuredQueryLanguage的缩写。查询是SQL语言的重要组成部分,但不是全部,SQL还包含数据定义、数据操纵和数据控制功能等部分。现在所有的关系数据库管理系统都支持SQL。FoxPro从2.5ForDOS版就开始支持SQL,现在的VF当然在这方面更加完善。 表5.1SQL命令动词SQL语言具有如下主要特点: SQL是一种一体化的语言,它包括了数据定义、数据查询、数据操纵和数据控制等方面的功能,它可以完成数据库活动中的全部工作。 SQL语言是一种高度非过程化的语言,它没有必要一步步地告诉计算机“如何”去做,而只需要描述清楚用户要“做什么”,SQL语言就可以将要求交给系统,自动完成全部工作。 SQL语言非常简洁。 SQL语言可以直接以命令方式交互使用,也可以嵌入到程序设计语言中以程序方式使用。VF是将SQL语言直接融入到自身的语言之中,使用起来更方便。 查询功能: SELECT[ALL|DISTINCT][<别名>.]<选项>[,[<别名>.]<选项>……] FROM<表名>[<别名>][,<表名>[<别名>]……] [WHERE<条件表达式>][AND<条件表达式>……] [GROUPBY<分组选项>[,<分组选项>……]] [HAVING<组条件表达式>] [ORDERBY<排序选项>[ASC|DESC][,<排序选>[ASC|DESC]……]] 命令中各参数的含义如下: SELECT是该命令的主要关键字。 ALL|DISTINCT表示ALL和DISTINCT任选其一,ALL表示所有的记录,DISTINCT表示去掉重复记录。 FROM说明要查询的数据来自哪个或哪些表,可以对单个表或多个表进行查询;WHERE说明查询条件,即选择元组的条件; GROUPBY短语用于对查询结果进行分组,可以利用它进行分组汇总; HAVING短语必须跟随GROUPBY使用,它用来限定分组必须满足的条件; ORDERBY短语用来对查询的结果进行排序 简单查询 例 1、从职工关系中检索所有工资值。 SELECT工资FROM职工 可以看到在结果中有重复值,若要去掉重复值只需要指定DISTINCT短语。 SELECTDISTINCT工资FROM职工 2、查询仓库关系中的所有元组。 SELECT*FROM仓库 3、查询工资多于1230元的职工号。 SELECT职工号FROM职工WHERE工资>1230 4、查询哪些仓库有工资多于1210元的职工。 SELECTDISTINCT仓库号FROM职工表WHERE工资>1210 5、查询在仓库“wh1”或“wh2”工作,并且工资少于1250元的职工号。 SELECT职工号FROM职工表;&&(续行符) WHERE工资<1250AND(仓库号=”wh1”OR仓库号 =”wh2”) 简单的联接查询 例: 1、查询工资多于1230元的职工号和他们所在的城市。 SELECT职工号,城市FROM职工,仓库; WHERE(工资>1230)AND(职工.仓库号=仓库.仓库号 2、找出工作在面积大于400的仓库的职工号以及这些职工工作所在的城市。 SELECT职工号,城市FROM仓库,职工表; WHERE(面积>400)AND(职工表.仓库号=仓库.仓库号) 嵌套查询 SELECT嵌套查询是一种子查询,子查询的特征是能够将一个查询的结果作为另一个查询的一部分,子查询是对查询结果的查询。在SQL中,有些查询不用子查询无法表达。子查询要加括号,并且与SELECT语句的形式类似,也有FROM子句,以及可选择的WHERE、GROUPBY和HAVING子句等。子查询中的子句与SELECT语句中的子句格式相同,用于子查询时,它们执行正常的功能,但是子查询和SELECT语句还是有如下区别: (1)子查询通常必须生成单字段数据作为其查询结果,即必须是一个确定的项。若为一个集合,则需要使用谓词演算查询。 (2)ORDERBY子句不能用于子查询,子查询结果只是被主查询内部使用,对用户是不可见的,所以对它们的任何排序都是没有意义的。 例 1、哪些城市至少有一个仓库的职工工资为1250元? SELECT城市FROM仓库WHERE仓库号IN; (SELECT仓库号FROM职工WHERE工资=1250) 2.查询所有职工的工资都多于1210元的仓库的信息。 此查询也可描述为:没有一个职工的工资少于或等于1210元的仓库的信息。 SELECT*FROM仓库WHERE仓库号NOTIN; (SELECT仓库号FROM职工表WHERE工资<=1210) 注:尽管在“武汉“的”wh4”仓库还没有职工,但该仓库的信息也被检索出来了,所以必须认真分析