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

上传人:豆浆 文档编号:6456343 上传时间:2017-08-08 格式:PPT 页数:38 大小:539KB
返回 下载 相关 举报
第四章 关系数据库标准语言SQL_第1页
第1页 / 共38页
第四章 关系数据库标准语言SQL_第2页
第2页 / 共38页
第四章 关系数据库标准语言SQL_第3页
第3页 / 共38页
第四章 关系数据库标准语言SQL_第4页
第4页 / 共38页
第四章 关系数据库标准语言SQL_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《第四章 关系数据库标准语言SQL》由会员分享,可在线阅读,更多相关《第四章 关系数据库标准语言SQL(38页珍藏版)》请在金锄头文库上搜索。

1、1,第四章 关系数据库标准语言SQL,2,SQL(Structured Query Language),4.1 SQL概述(一),SQL语言具有如下特点: 1、SQL语言是一种一体化语言,它包括数据定义、数据查询、数据操纵和数据控制等方面的功能,它可以完成数据库活动中的全部工作。 2、SQL语言是一种高度非过程化的语言,它没有必要一步步地告诉计算机“如何”去做,而只需要描述清楚用户要“做什么”,SQL语言就可以将要求交给系统,自动完成全部工作。,SQL不仅有数据查询功能,包含数据定义、数据操纵和数据控制 。,3,4.1 SQL概述(二),3. SQL语言非常简洁。见下表,VF在SQL方面提供支

2、持数据定义、数据查询和数据操纵功能,没有提供数据控制功能 。,4. SQL语言可以直接以命令方式交互使用,也可以嵌入到程序设计语言中以程,4,4.2 查询功能,SQL的核心是查询。SQL的查询命令也称作SELECT命令,它的基本形式由SELECT-FROM-WHERE查询模块组成,多个查询可以嵌套执行。 VF的SQL SELECT 命令的语法格式如下: select 字段列表 FROM 表名 WHERE GROUP BY .HAVING ORDER BY ,5,SELECT说明要查询的字段名 FROM说明要查询的数据来自哪个或哪些表,可以对单个表或多个表进行查询; WHERE说明查询条件,即选

3、择元组的条件; GROUP BY短语用于对查询结果进行分组,可以利用它进行分组汇总; HAVING短语必须跟随GROUP BY 短语使用,它用来限定分组必须满足的条件; ORDER BY 用来对查询的结果进行排序。,几点说明,6,4.2.1简单查询,例41 从职工关系中检索所有的工资值。 SELECT 工资 FROM 职工 例42 检索仓库关系中的所有元组。 SELECT * FROM 仓库 *表示查询FROM子句后列表中的所有字段等价于SELECT 仓库号,城市,面积 FROM 仓库,7,4.2.2 简单的联接查询,联接查询是一种基于多个关系的查询. 例4.6 找出工资多于1230元的职工号

4、和他们所在的城市 Select 职工号,城市 from 职工,仓库; where 工资1230 and 职工.仓库号=仓库.仓库号仓库关系和职工关系之间存在一个一对多的联系。 例4.7 找出工作在面积大于400的仓库的职工号以及这些职工所在的城市 SELECT 职工号,城市 FROM 职工,仓库 ; WHERE (面积400) AND(职工.仓库号=仓库.仓库号),8,4.2.3 嵌套查询,基于多个关系的查询,这类查询所要求的结果出自一个关系,但相关的条件却涉及多个关系。 当检索关系X中的元组时,它的条件依赖于相关的关系Y中的元组属性值,这时使用嵌套查询. 例4.8 哪些城市至少有一个仓库的职

5、工工资为1500元 分析:此例要求查询仓库表中的城市信息,而查询条件是职工表中的工资字段值. SELECT城市 FROM 仓库 WHERE 仓库号 IN ; (SELECT 仓库号 FROM 职工 WHERE 工资=1500),9,4.2.4 几个特殊的运算符,BETWEENAND LIKE != NOT 例4.11 检索出工资在1400元到1600元范围内的职工信息 SELECT * FROM 职工 WHERE 工资 ; BETWEEN 1400 AND 1600 等价于: SELECT * FROM 职工 ; WHERE (工资 1400) AND (工资1440,17,HAVING子句总

6、是跟在GROUP BY 子句之后,不可以单独使用. HAVING子句和WHERE子句不矛盾,在查询中是先用WHERE子句限定元组,然后进行分组,最后再用HAVING子句限定分组.,18,4.2.8利用空值查询,例423 找出尚未确定供应商的订购单 SELECT * FROM 订购单 WHERE 供应商号 IS NULL 注意:查询空值时要使用is NULL,而=NULL是无效的,因为空值不是一个确定的值,所以不能用“=”这样的运算符进行比较。 例424 列出已经确定了供应商的订购单信息 SELECT *FROM 订购单 WHERE 供应商号 IS NOT NULL,19,4.2.9 别名与自然

7、连接查询,在联接操作中,经常需要使用关系名作为前缀,有时这样做显得很麻烦.因此,SQL允许在FROM短语中为关系名定义别名 比如,如下的联接语句是一个基于4个关系的联接查询,其中必须使用关系名做前缀 SELECT 供应商名 FROM 供应商 a,订购单 b,职工 c,仓库 d; WHERE 地址=”北京” AND 城市=”北京”; AND a.供应商号=b.供应商号; AND b.职工号=c.职工号; AND c.仓库号=d.仓库号,20,注意,多个表的联接,注意联接条件的写法. SELECT 仓库.仓库号,城市,供应商名,地址; FROM 供应商 join 订购单 join 职工 join

8、仓库; on 仓库.仓库号=职工.仓库号 AND; on 订购单.职工号=职工.职工号AND; on 供应商.供应商号=订购单.供应商号,21,4.2.14 Visual Foxpro中SQL SELECT 的几个特殊选项,1.显示部分结果 例4.34 只显示前几项记录 使用TOP nExpr PERCENT TOP 要与ORDER BY同时使用才有效. 例4.36显示工资最高的前3位职工的信息 Select * top 3 from 职工表 order by 工资 desc例4.37显示工资最低的30%职工的信息 Select * top 30 percent from 职工表 order

9、by 工资,22,2.将查询结果放在数组中 使用INTO ARRAY ArrayName 将查询结果放在数组中. SELECT * FROM 职工 INTO ARRAY tmp 3. 将查询结果存放在临时文件中 使用INTO CURSOR CursorName将查询结果放在临时数据库表文件中.该表为只读dbf文件,当关闭文件时该文件将自动删除。 SELECT * FROM 职工 INTO CURSOR tmp,23,4.将查询结果存放在永久表中 使用INTO DBF|TABLE TableName将查询结果放在永久表中. SELECT * TOP 3 FROM 职工 INTO TABLE hi

10、ghsal ; ORDER BY 工资DESC,24,5. 将查询结果存放在文本文件中 使用TO FILE FileNameADDITIVE将查询结果放在文本文件中. ADDITIVE选项使结果追加到原文件的尾部,否则将覆盖原有文件。 SELECT * TOP 3 FROM 职工 TO FILE tmp ; ORDER BY 工资DESC 如果TO 短语和INTO短语同时使用,则TO短语将会被忽略。,25,4.3 SQL的操作功能,4.3.1 插入向表中追加记录。,4.3.2 更新 更新满足条件的一些记录(元组)的字段值,4.3.3 删除删除满足条件的记录。,26,4.3.1 插入,格式:IN

11、SERT INTO dbf_name 字段名列表 values (值列表),27,例:往档案关系中插入元组: (”王浩”,”男”,”2003020101”, ”200302010106”,”河南”, ”90”,” 2001-04-24 ” ,”应用化学”)INSERT INTO 档案 VALUES (”王浩”,”男”,”2003020101”, ”200302010106”,”河南”, 90,1988-04-24,”应用化学”) 假如某些字段未确定,只能先插入. INSERT INTO 档案 (姓名,性别,专业) VALUES (”张南”,”女”,”会计学”) 这时,未确定字段属性值为空.,28,4.3.2 更新,SQL的数据更新命令如下: UPDATE TableName SET Column_Name1 = eExpression1WHERE Condition 例如:给WH1仓库的职工提高10%的工资 UPDATE 职工 SET 工资=工资*1.10 WHERE 仓库号=”WH1”,29,4.3.3 删除,命令: DELETE FROM TableName WHERE Condition 例如:要 删除仓库关系中仓库号值是WH2的元组. DELETE FROM 职工 WHERE 仓库号=”WH2” 注意:此删除同样是逻辑删除记录.,30,441 表的定义,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

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