Visual FoxPro程序设计 联系客服

发布时间 : 星期二 文章Visual FoxPro程序设计更新完毕开始阅读f6b0c36e561252d380eb6e58

全国计算机等级考试二级教程——Visual FoxPro程序设计

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

教学内容与目的:

?掌握SQL的基本概念;

?掌握SQL的查询功能;

?熟悉SQL的操作功能,包括插入、更新和删除功能; ?熟悉SQL的定义功能。

教学重点: SQL的查询功能

教学难点: 嵌套查询、自联查询、内外层互相关嵌套查询 课时分配: §5.1、§5.2:10课时 §5.3:2课时

§5.4: 4课时

§5.1 SQL概述

SQL——Stuctured Quevy Langage 结构化查询语言

查询是SQL的重要组成部分,SQL还包括数据定义、数据操纵和数据控制功能等部分,SQL已经成为关系数据库的标准数据语言,该语言具有如下特点:

1.SQL是一种一体化的语言,它包括了数据定义、数据查询、数据操纵和数据控制等方面的功能,它可以完成数据库活动的全部工作, 2.SQL是一种高度非过程化的语言,用户只需要描述“做什么”,SQL语言就可以将要求交给系统,系统自动完成全部工作。

-45-

全国计算机等级考试二级教程——Visual FoxPro程序设计 3.SQL语言非常简洁,很接近自然语言(英语),因此易学,易掌握。 4.SQL语言可以直接以命令方式交互使用,也可以嵌入到程序设计语言中以程序方式使用。

§5.2查询功能

SQL的核心是查询,查询命令是SELECT。常用语法格式如下:

SELECT?? FROM?? [WHERE??]

[GROUP BY??] [HAVING??] [UNION[ALL]??] [ORDER BY??] 说明:

① SELECT说明要查询的数据。

② FROM说明要查询的数据来自那个或那些表可以对单个表或多个表进行查询。

③ WHERE说明查询条件即选择元组的条件。

④ GROUP BY 短语用于对查询结果进行分组,可以利用它进行分组汇总。 ⑤ HAVING必须跟随GROUP BY使用,用来限定分组必须满足的条件。 ⑥ ORDER BY用来对查询的结果进行排序。 介绍十种SELECT查询应用 一、简单查询

1.无条件查询:

由SELECT和FROM短语构成 2.条件查询:

由SELECT、FROM和WHERE短语构成 3.[DISTINCT]短语,去掉结果种的重复值 例1:从职工关系检索仓库WH2的所有工资值

SELECT工资FROM职工WHERE仓库号=“WH2” 例2:检索仓库中的所有元组 SELECT * FROM 仓库 等同于

select仓库号,城市,面积 from 仓库 练习

-46-

全国计算机等级考试二级教程——Visual FoxPro程序设计 ① 从仓库表中查询所在城市。

② 查询2001年元月1日(前)后的所有定单

③ 查询在仓库WH3工作,并且工资高于1230的所有职工 解:①select 城市 from仓库

②select订购单号from订购单 where 订购日期>{^2001/01/01}

③select职工号 from 职工 where仓库号=“WH3” and 工资>1230

二、简单的联接查询

联接是关系的基本操作之一,连接查询是基于多个关系的查询。 例:找出工作在面积大于400的仓库的职工号以及这些职工工作所在的城市

select 职工号,城市 from仓库,职工;

where(面积>400) and (职工.仓库号=仓库.仓库号)

说明: ①在VF的SQL命令中分号是续行符号。

②当from后的多个关系中有同名字段时,须用前缀指明字段所属的

表。

③多表连接查询时要指明查询联接条件。 ................

练习:

查询2001年5月25日订购商品的订单的供应商和地址 解:

Select 供应商名,地址 from订购单,供应商;

Where (订购日期={^2001/05/25}) and (订购单.供应商号=供应商.供

应商号)

三、嵌套查询(有两个以上查询条件,且在不同关中)

当查询所要求的结果出自一个关系,但相关的条件却涉及多个关系,则使用嵌套查询。

即当检索关系X中的元组时,它的条件依赖于相关的关系Y中的元组属性值,此时用嵌套查询比较方便。

外层查询的条件依赖于内层查询的结果。 .................

注:记录字段值区分大小写 ............

例1:哪些城市至少有一个仓库的职工工资为1250元?

Select城市from 仓库 WHERE仓库号 IN; (SELECT 仓库号 FROM 职工 WHERE工资=1250) 例2:找出和职工E4挣同样工资的所有职工 select 职工号 from 职工 where工资=;

(select 工资 from职工 where职工号=“E4”) 例3:查询所有职工的工资都多于1230元的仓库的信息

-47-

全国计算机等级考试二级教程——Visual FoxPro程序设计 分析:①查询范围来源于职工表,而结果在仓库表,故用嵌套查询。

②若条件设为工资>1210,则比如WHI中工资有满足条件的,也没不满

足条件的 ,故无法适应此情况

应该设为:仓库号not in??工资<=1210

③如果某仓库还没有职工,则也满足②的条件not in职工,故应添加条件,保证该仓库至少有一名职工。

解: select * from 仓库 where仓库号not in ; (select 仓库号from 职工 where工资<=1210) and 仓库号 in (select 仓库号from 职工) 练习:

找出和职工E3有相同供应商的订购单及其订购日期.

解:select 订购单号,订购日期 from 订购单 where 供应商号 in ;

(select 供应商号 from 订购单 where 职工号=“E3”)

四.几个特殊运算符

1.BETWEEN??AND?? 在??和??之间

例:检索出工资在1220元到1240范围内的职工信息。 Select * from职工 where 工资 between1220and1240

说明:①此条件等价于(工资>=1220)and(工资<=1240),但更简洁。 ②“不在??之间”可用not between??and?? select * from 职工 where工资 not between 1220 and 1240 2.LIKE%——表示0个或多个字符 LIKE_——表示一个字符

例:检索出供应商是某公司的信息。

select * from 供应商 where 供应商名Like“% 公司” 3.不等于“!=”可用否定运算符NOT表示。 例:找出不在北京的供应商信息。

Select * from 供应商 where not(地址=“北京”) 学生练习:

1.找出定单号在OR70到OR80间的供应商。 2.检索出供应商是某厂的信息。 3.找出不在北京和上海的仓库。 解:

1.Select 供应商号 from 订购单 ;

where 订购单号 between “OR70” and “or80”

2.Seleet * from 供应商 where 供应商名 Like “%厂”

3.Select 仓库号 from 仓库 where not(城市=“北京” or 城市=“上

-48-