关系数据库标准语言SQL

上传人:宝路 文档编号:47967362 上传时间:2018-07-07 格式:PPT 页数:43 大小:181.33KB
返回 下载 相关 举报
关系数据库标准语言SQL_第1页
第1页 / 共43页
关系数据库标准语言SQL_第2页
第2页 / 共43页
关系数据库标准语言SQL_第3页
第3页 / 共43页
关系数据库标准语言SQL_第4页
第4页 / 共43页
关系数据库标准语言SQL_第5页
第5页 / 共43页
点击查看更多>>
资源描述

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

1、第5章关系数据库标准语言SQLnSQL全称是结构化查询语言(Structured Query Language),它是国际标准数据库语 言,如今无论是Visual Foxpro、Access这样 的微机上常用的小型数据库管理系统,还是 Oracle、Sybase、Informix、SQL Server这 样的大型数据库管理系统,都支持SQL语言 。SQL命令可以替代多条Visual FoxPro命令 。 5.1 SQL语言概述结构化查询语言SQL是一种介于关系代数与关系 演算之间的语言。它的主要特点如下: n1. 一体化语言n2. 高度非过程化语言n3语言简洁,易学易用n4统一的语法结构n5视

2、图数据结构n6Visual FoxPro中的SQL5.2 SQL的数据查询功能数据查询是对数据库中的数据按指定条件和 顺序进行检索输出。 5.2.1 SELECT语句格式 Select语句的基本格式为:select from where 5.2.2 投影查询投影查询是指从表中查询全部列或部分列。 1.查询全部字段 【例5-1】查询职工信息表中全部信息。nSELECT * FROM 职工信息表n等价于下面的查询语句:nSELECT 职工号,姓名,性别,年龄,婚否,职称,部门编号 ,出生日期 FROM 职工信息表说明:星号“*”表示表中所有字段 2.查询部分字段 【例5-2】查询职工信息表中职工号

3、,姓名和年龄。nSELECT 职工号,姓名,年龄 FROM 职工信息表3.取消重复记录 在SELECT语句中,可以使用DISTINCT来取消查询结 果中重复的记录。 【例5-3】查询职工表中所有的部门编号。 SELECT DISTINCT 部门编号 FROM 职工信息表4.查询经过计算的表达式 【例5-4】查询职工工资表中的职工号,基本工资,岗 位工资,院龄工资,职务工资,税金和实发工资。 SELECT 职工号,基本工资,岗位工资,院龄工资,职务津 贴,税金,; (基本工资+岗位工资+院龄工资+职务津贴-税金) AS 实 发工资 FROM 职工工资表 说明:AS用于修改查询结果中指定列的列名。

4、AS也可 以省略。5.2.3 条件查询nSELECT-SQL语句的查询方式很丰富,使用 WHERE子句可以查询满足某些条件的记录。 在WHERE子句中可以用关系运算符、逻辑运 算符及特殊运算符构成较复杂的条件表达式 。 1.单条件查询 【例5-5】查询职工信息表中已婚职工的信息。 SELECT * FROM 职工信息表 WHERE 婚否【例5-6】查询职工表中年龄大于等于30岁的职工的姓 名,年龄和职称。nSELECT 姓名,年龄,职称 FROM 职工信息表 WHERE 年龄=302.多重条件查询 【例5-7】查询职工信息表中出生日期小于1970年副教 授的姓名、年龄、职称和出生日期。nSEL

5、ECT 姓名,年龄,职称,出生日期 FROM 职工信息 表 WHERE 职称=”副教授”AND;YEAR(出生日期)2000 【例5-15】统计职工信息表中有几个部门。nSELECT COUNT(DISTINCT 部门编号) AS;部 门数 FROM 职工信息表 【例5-16】统计职工部门表中职工人数的最大人数、最 小人数、平均数和总人数。nSELECT MAX(职工人数)AS 最大人数,;MIN(职工人数) AS 最小人数,;AVG(职工人数) AS 平均人数,SUM(职工人数) ;AS 总人数 FROM 职工部门表n2. 分组查询nSQL可以利用GROUP BY子句按某个字段或多个字段进

6、行分组,每组在某个字段或多个字段组合上的值要相同 。n【例5-17】分组求职工信息表中男女职工的平均年龄。nSELECT 性别, AVG(年龄) FROM ;职工信息表GROUP BY 性别 【例5-18】查询职工信息表中至少有4个职工的部门。 SELECT 部门编号,COUNT(*) AS 人数FROM 职工信;息 表 GROUP BY 部门编号HAVING COUNT(*)=4n说明: HAVING子句限定分组条件。5.2.5排序查询n在SQL语言中,ORDER BY子句用于对查询结果按 一个或多个查询列进行排序。其中包括升序(ASC )和降序(DESC),缺省值为升序。n1. 单列排序n

7、【例5-19】查询职工信息表中年龄40岁以上按出生 日期字段降序排列的全部职工信息。nSELECT * FROM 职工信息表;WHERE 年龄=40 ORDER BY 出生日期 DESC2. 多列排序n查询结果中按多个查询列排序。 【例5-20】查询职工信息表中,部门编号为“103”的职 工信息,结果按性别的升序、年龄的降序排列。nSELECT * FROM 职工信息表 WHERE;部门编号=”103”ORDER BY 性别,年龄 DESC3. 前面部分记录查询n在查询语句中,TOP PERCENT子句查询满 足条件的前面部分记录,其中的表达式必为数值表达 式。n【例5-21】查询职工信息表中

8、,年龄最大的三人信息 。nSELECT * TOP 3 FROM 职工信息表 ;ORDER BY 年龄 DESC n【例5-22】查询职工信息表中,年龄最小的20%的员 工信息。nSELECT * TOP 20 PERCENT FROM 职工信息表 ;ORDER BY 年龄 5.2.6 连接查询n一个数据库中的多个表之间一般都存在某种内在联系 ,它们共同提供有用的信息。前面的查询都是针对一 个表进行的。若一个查询同时涉及两个以上的表,则 称之为连接查询。内连接查询 命令的语法格式如下:nSELECT FROM , WHERE 连接条 件 AND 查询条件n说明:连接条件为:表1.公共字段=表2

9、.公共字段 2. 自连接查询n自身连接查询指连接操作不仅可以在两个表之间进 行,也可以是一个表与其自己进行连接的查询。在 连接查询中,为了区分字段名,常用表名作为字段 名的前缀,有时显得很麻烦。因此,SQL语言中允 许表名定义别名。 命令的语法格式如下:n. n【例5-25】查询职工信息表中,年龄比曾玲珑年长 的职工姓名和年龄。 nSELECT a.姓名,a.年龄 FROM 职工信息表 a, ;职工信息表 b;WHERE a.年龄b.年龄 AND b.姓名=”曾玲珑”5.2.7超连接查询nSQL中FROM子句后的连接称为超连接,超连 接有四种形式。n命令的语法格式如下:nSELECT.FROM

10、 INNER | LEFTOUTER|RIGHTOUTER|FULLOUTE R;JOIN ! AS Local_AliasONn其中:OUTER关键字可被省略,包含OUTER 强调这是一个外连接(outer join)。n1内部连接n使用INNER JOIN形式的连接称为内部连接,INNER JOIN等价于JOIN。INNER JOIN与普通连接相同:只 有满足条件的记录才出现在查询结果中。 n【例5-26】将职工信息表和职工部门表按内部形式连 接,包含职工号、姓名、部门名称字段。nSELECT A.职工号,姓名,部门名称 FROM ;职工信息表 A INNER JOIN 职工部门表 B;O

11、N A.部门编号 =B.部门编号2左连接nLEFTOUTER JOIN 称为左连接,在查询结果中包含 JOIN 左侧表中的所有记录,以及JOIN 右侧表中匹配 的记录。 3右连接nRIGHTOUTER JOIN 称为右连接,在查询结果中包 含JOIN 右侧表中的所有记录,以及JOIN 左侧表中匹 配的记录。 4完全连接nFULLOUTER JOIN 称为完全连接,在查询结果中包 含JOIN 两侧表中的所有匹配记录和不匹配的记录。5.2.8 嵌套查询带有比较运算符的子查询 n在嵌套查询中,当子查询的结果是一个单值(只有一 个记录或一个字段值 ),可以用、=、 等比较运算符来生成父查询的查询条件。

12、 【例5-30】查询出职工信息表中信息学科部所有职工 的姓名。nSELECT 姓名FROM 职工信息表 WHERE;部门编号=(SELECT 部门编号;FROM 职工部门表 WHERE 部门名称;=”信息学科部”)2. 带有IN谓词的子查询n在嵌套查询中,子查询的结果一般是一个集合,因 此在外层查询中,可以用IN谓词来作为查询条件。n【例5-31】查询基本工资大于2000的职工姓名和职 称。nSELECT 姓名,职称 FROM 职工信息表 ;WHERE 职工号 IN ;(SELECT 职工号 FROM 职工工资表;WHERE 基本工资2000)n3. 带有ANY或ALL谓词的子查询n在嵌套查询

13、中,子查询的返回值不止一个,则必须在 WHERE子句中指明应怎样使用这些返回值。通常使 用谓词ANY和ALL。IN 也可等同使用。n【例5-32】查询职工的年龄大于部门编号=“101”的任 何一个职工年龄的职工的姓名。nSELECT 姓名 FROM 职工信息表;WHERE 年龄ANY;(SELECT 年龄 FROM 职工信息表;WHERE 部门编号=”101”)【例5-33】查询职工的年龄大于部门编号=“101”的所有 职工年龄的职工的姓名。nSELECT 姓名 FROM 职工信息表 ;WHERE 年龄ALL;(SELECT 年龄 FROM 职工信息表;WHERE 部门编号=”101”) 4.

14、 带有EXISTS谓词的子查询 n在嵌套查询中,EXISTS是用来检查子查询中是否有 结果返回(是否为空)。NOT EXISTS表示是空的结 果集。 【例5-34】查询职工库中,不存在的部门名称的职工信 息。nSELECT * FROM 职工信息表 WHERE NOT EXISTS;(SELECT * FROM 职工部门表 WHERE 部门编号=职 工;信息表.部门编号) 5.2.9 集合查询nUNION子句可以进行集合的并运算,即可以将两个 SELECT语句的查询结果合并成一个查询结果。当然 ,要求进行并运算的两个查询结果具有相同的字段个 数,并且对应字段的值要具有相同的数据类型和取值 范围

15、。nUNION子句的语法格式:UNION ALL 【例5-35】查询职工信息表中,助教和讲师的职工信息 。nSELECT * FROM 职工信息表 ;WHERE 职称=”助教” UNION ;SELECT * FROM 职工信息表 ;WHERE 职称=”讲师”5.2.10 查询去向nSELECT语句默认的输出去向是在浏览窗口中显示 查询结果。可使用特殊的子句来修改SELECT语句 的查询结果的输出去向。 1. 将查询结果存放到永久表中n使用子句INTO DBF|TABLE ,可以将查询结 果存放到永久表中,为DBF文件并成为当前表。 2将查询结果存放到临时文件中n使用子句INTO CURSOR

16、 3将查询结果存放到数组中n使用子句INTO ARRAY 4将查询结果存放到文本文件中n使用子句TO FILE ADDITIVE 5将查询结果直接输出到打印机n使用子句TO PRINTER PROMPT 5.3 SQL的数据操纵功能 5.3.1 插入数据n插入数据是不断地向已存在的表中插入新记录,这 由INSERT命令实现。n命令的语法格式如下:nINSERT INTO ( ,) ;VALUES (,) 功能:在指定表的表尾添加一条新记录,其值为 VALUES后面表达式的值。 n【例5-40】在职工信息表中插入一条新记录。nINSERT INTO 职工信息表(职工号,姓名,性别,年龄,;婚否,职称,部门编号,出生日期);VALUES(”107033”,”张为民”,”男”,24,.T.,; ”助教,”107”, 1985/04/01)5.3.2 更新数据n更新数据就是对存储在表中的记录进行修改,命令为 UP

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

最新文档


当前位置:首页 > 中学教育 > 教学课件

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