本 章 内 容

39
§5.1 SQL 概概 §5.2 概概概概 SELECT-SQL §5.2.1 概概概概 §5.2.2 概概概概 §5.2.3 概概概概 概概概 概概概概概 SQL 概概 §5.2.4 本本本本 §5.2.5 本本本本本本 §5.3 概概 SQL 概概 §5.3.1 概概概概概 SQL 概概 §5.3.2 概概概概概 SQL 概概

Upload: primo

Post on 05-Jan-2016

49 views

Category:

Documents


1 download

DESCRIPTION

第五章 关系数据库 SQL 语言. 本 章 内 容. §5.1 SQL 概述 §5.2 查询语句 SELECT-SQL §5.2.1 单表查询 §5.2.2 多表查询 §5.2.3 嵌套查询. §5.2.4 自联查询 §5.2.5 集合的并运算 §5.3 其他 SQL 命令 §5.3.1 定义功能的 SQL 语句 §5.3.2 操作功能的 SQL 语句. §5.1 SQL 概述. 1 .结构化查询语言 SQL 简介 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 本  章  内  容

本 章 内 容§5.1 SQL概述

§5.2 查询语句SELECT-SQL

§5.2.1 单表查询

§5.2.2 多表查询

§5.2.3 嵌套查询

第五章 关系数据库 SQL 语言

§5.2.4 自联查询

§5.2.5 集合的并运算

§5.3 其他 SQL 命令 §5.3.1 定义功能的 SQL 语句 §5.3.2 操作功能的 SQL 语句

Page 2: 本  章  内  容

§5.1   SQL 概述 1 .结构化查询语言 SQL 简介 结构化查询语言 SQL ( Structured Query Language )是关系数据库的标准语言。目前包括 VFP 在内的数据库开发软件都支持 SQL 语言。 2 . SQL 语言的主要特点( 1 ) SQL 是一种一体化的语言,它包括数据定义、数据查询、数据操纵和数据控制功能,可以完成数据库的全部操作。( 2 ) SQL 是一种非过程化的语言,用户在编写程序时,只要指出“干什么”,而不必一步步告诉计算机“怎么干”, SQL将自动完成全部操作。

Page 3: 本  章  内  容

( 3 ) SQL 语言非常简洁且功能很强,一共只用为数不多的几条命令:1 )查询数据命令 SELECT-SQL (它是最重要的一条 SQL命令)2 )创建新表命令 CREATE TABLE-SQL

3 )修改表结构命令 ALTER TABLE -SQL

4 )追加记录命令 INSERT-SQL

5 )逻辑删除记录命令 DELETE-SQL

6 )更新记录数据命令 UPDATE-SQL

7 )创建视图命令 CREATE VIEW-SQL

( 4 ) SQL 语言既可以作为单命令以交互方式使用,也可以作为语句写入程序中以程序方式使用。

Page 4: 本  章  内  容

§5.2  查询语句 SELECT-SQL

1 . SELECT-SQL 命令的基本格式SELECT [ALL|DISTINCT][TOP nExpr [PERCENT]]

[Alias.]Select_Item [AS Column_name][,[Alias.]Select_Item [AS Column_name]…]

FROM [DataName!]TableName [[AS] Local_Alias]

[,[DataName!]TableName [[AS] Local_Alias]…]

[INNER|LEFT[OUTER]|RIGHT[OUTER]|FULL[OUTER] JOIN

[DataName!]TableName [[AS] Local_Alias]

[ON JoinCondition]…]

[WHERE JoinCondition [AND JoinCondition…]

[AND|OR FilterCondition [AND|OR FilterCondition…]]]

[ORDER BY Order_Item [ASC|DESC][,Order_Item [ASC|DESC]…]]

[GROUP BY GroupColumn [,GroupColumn…]

[HAVING FilterCondition]]

[TO SCREEN|FILE FileName [ADDITIVE]|PRINTER [PROMPT]]

[INTO TABLE TableName|CURSOR CursorName|ARRAY ArrayName]

Page 5: 本  章  内  容

  SELECT-SQL 命令的主体结构是:  SELECT < 输出列名表 > FROM < 表名 > WHERE < 查询条件 >

 单表查询是指查询结果和查询条件所涉及的字段都在同一个表中。在使用 SELECT-SQL 命令时, FROM 子句中只出现一个表名。  1 .无条件查询 命令格式: SELECT < 列名表 > FROM < 表名 >

 功能:在指定的表中查询指定的字段内容。 说明:若 < 列名表 > 使用通配符 * ,代表所有字段。

§5.2.1  单表查询

Page 6: 本  章  内  容

1 )查询指定表中所有记录的指定字段。【例 5 - 1 】在“职工业绩”数据库的 Zgjk.dbf 表中,查询所有职工的职工号、姓名和部门的信息。在命令窗口中键入:SELECT 职工号 , 姓名 , 部门 FROM Zgjk &&查询结果默认浏览窗口

2 )查询指定表中所有记录的所有字段。【例 5 - 2 】在 Zgjk.dbf 表中,查询所有职工的详细信息,并将查询结果直接显示于 VFP 主窗口。 在命令窗口中键入:SELECT * FROM Zgjk TO SCREEN

Page 7: 本  章  内  容

3 )查询指定表中所有记录的统计值。SQL 语言具有计算查询功能,允许使用统计函数构 SELECT 命令中可用的标准函数见下表。

       函 数        功 能SUM(<字段名 >) 求指定字段的总和

AVG(<字段名 >) 求指定字段的平均值

MAX(<字段名 >) 求指定字段的最大值

MIN(<字段名 >) 求指定字段的最小值

COUNT(<字段名 >) 统计表的记录个数

Page 8: 本  章  内  容

【例 5 - 3 】在 Zgjk.dbf 表中,查询所有职工的最高基本工资、最低基本工资和平均基本工资,并要求查询结果的列标题分别为:最高基本工资、最低基本工资和平均基本工资。在命令窗口中键入:SELECT MAX( 基本工资 ) AS 最高基本工资 , ;

MIN( 基本工资 ) AS 最低基本工资 , ;

AVG( 基本工资 ) AS 平均基本工资 ;

FROM Zgjk

注意: SQL 命令的续行号是半角分号;查询结果的列名可用 AS 子句指定,且 AS 可省略。

【例 5 - 4 】在 Zgjk.dbf 表中,查询所有职工的职工号、姓名和年龄。在命令窗口中键入:SELECT 职工号 , 姓名 ,YEAR(DATE())-YEAR( 出生日期 ) AS 年龄 FROM Zgjk

Page 9: 本  章  内  容

2 .条件查询格式: SELECT < 列名表 > FROM < 表名 > WHERE < 条件>

功能:在指定的表中查询满足 WHERE 条件子句的记录。说明:在构造条件表达式时,除了可以使用比较运算 符和逻辑运算符之外,还可以使用 SQL 专用运算符:BETWEEN … AND … 和…   LIKE … 。BETWEEN … AND … 运算符的含意:WHERE 基本工资 BETWEEN 200 AND 300

等效于: WHERE 基本工资 >=200 AND 基本工资 <=300 。… LIKE … 运算符的含意:WHERE 姓名 LIKE " 刘 %“

等效于: WHERE LEFT( 姓名 ,2)=" 刘 "

Page 10: 本  章  内  容

( 1 )简单条件查询【例 5 - 5 】在 Zgjk.dbf 表中,查询基本工资在 1000 元以上(含 1000 元)职工的姓名和部门(要求不重复显示)。在命令窗口中键入:SELECT DISTINCT 姓名 , 部门 , 基本工资 FROM Zgjk WHERE 基本工资 >=1000

( 2 )复合条件查询【例 5 - 6 】在 Zgjk.dbf 表中,查询家电部门已婚的职工的信息。在命令窗口中键入:SELECT * FROM Zgjk WHERE 部门 =" 家电 " AND 婚否

Page 11: 本  章  内  容

 ( 3 )模糊条件查询 在 WHERE 子句中,可使用 LIKE 运算符对字符型数据进行模糊查询。带有 LIKE 的 WHERE 子句格式如下:    WHERE LIKE "< 字符串通配式 >"

 说明:通配符 _ (半角的下划线)代表该位置任意一个字符或汉字;通配符 % (半角)代表该位置若干个字符或汉字。  【例 5 - 7 】在 Zgjk.dbf 表中,查询姓“李”的职工的信息。 在命令窗口中键入:  SELECT * FROM Zgjk WHERE 姓名 LIKE " 李 %“

 此例子也可以使用字符非精确比较和函数来实现,例如:  SELECT * FROM Zgjk WHERE 姓名 =" 李 "

  SELECT * FROM Zgjk WHERE LEFT( 姓名 ,2)=" 李 "

  SELECT * FROM Zgjk WHERE AT(" 李 ", 姓名 )=1

Page 12: 本  章  内  容

【例 5 - 8 】在 Zgjk.dbf 表中,查询姓名中第二个字为“家”的职工的信息。在命令窗口中键入:  SELECT * FROM Zgjk WHERE 姓名 LIKE "_ 家 %"

【例 5 - 9 】在 Zgjk.dbf 表中,查询基本工资在 1000 元到1200 之间的职工的信息。在命令窗口中键入: SELECT * FROM Zgjk WHERE 基本工资 BETWEEN;

1000 AND 1200

该命令等价于: SELECT * FROM Zgjk WHERE 基本工资 >=1000 AND ;

基本工资 <=1200

Page 13: 本  章  内  容

3 .对查询结果进行排序 在 SELECT-SQL 命令中,使用 ORDER BY 子句,可以使查询结果按指定要求排序。命令格式: SELECT < 列名表 > FROM < 表名 > [WHERE < 条件>];

ORDER BY <排序依据 > [ASC|DESC]

说明: 排序依据:备注型数据和通用型数据不能作为排序依据。排序依据可以是字段名、由 AS 子句命名的列标题(在 ORDER BY 子句中,不能直接使用表达式和函数)和列序号(即该列在查询结果中的位置 1 ,2 , 3… )。 排序方式: ASC 表示查询结果按照排序依据项的值升序排列, DESC 表示查询结果按照排序依据项的值降序排列。默认排序方式为 ASC 。 排序规则:数值按大小顺序,字母按“  a ” < “ A ” < “ b ” < “ B ” … 的顺序,汉字按内码值顺序,日期按前后顺序,逻辑型数据“假”在前“真”在后。

Page 14: 本  章  内  容

如果有多个排序依据,它们之间用逗号分隔。在排序时,先按第一个排序关键字排序,若第一个排序关键字的值相同,再按第二个排序关键字排序,依次类推。( 1 )单关键字排序 【例 5 - 10 】在 Zgjk.dbf 表中,查询所有职工的职工号、姓名和年龄,并按年龄由小到大顺序排列。在命令窗口中键入: SELECT 职工号 , 姓名 ,YEAR(DATE())-YEAR( 出生日期 ) AS 年龄 ;

FROM Zgjk ORDER BY 年龄( 2 )多关键字排序【例 5 - 11 】在 Zgjk.dbf 表中,查询职工的信息,并按部门升序排列,部门相同时按基本工资降序排列。在命令窗口中键入: SELECT * FROM Zgjk ORDER BY 部门 , 基本工资 DESC

Page 15: 本  章  内  容

4 .对查询结果进行分组 在 SELECT-SQL 命令中,使用 GROUP BY 子句,可以使查询结果按指定依据和条件分组。所谓的分组就是按 < 分组依据 > 表达式的值对查询结果进行分类汇总。格式: SELECT < 列名表 > FROM < 表名 > [WHERE < 条件 >];

GROUP BY < 分组依据 > [HAVING < 条件 >]

说明: 分组依据:备注型数据和通用型数据不能作为分组依据;分组依据可以是字段名和列序号(在 GROUP BY 子句中,不能直接使用表达式和函数)。 分组条件:在 GROUP 子句中使用 HAVING 子句,对分组的结果进行筛选。注意 WHERE 子句和 HAVING 子句的区别: WHERE 子句指定哪些记录能参加分组, HAVING 子句指定分组后哪些记录能作为查询的最终结果输出。

Page 16: 本  章  内  容

【例 5 - 12 】在 Zgjk.dbf 表中,查询各部门职工的人数。在命令窗口中键入: SELECT 部门 ,COUNT(*) AS 职工数 FROM Zgjk ;

GROUP BY 部门【例 5 - 13 】在 Zgjk.dbf 表中,统计各部门基本工资的总额,输出基本工资总额大等于 2500 的部门名称和基本工资总额。在命令窗口中键入: SELECT 部门 ,SUM( 基本工资 ) AS 基本工资总额 FROM Zgjk;

GROUP BY 部门 HAVING 基本工资总额 >=2500

【例 5 - 14 】在 Zgjk.dbf 表中,统计各部门已婚职工的基本工资的总额,并输出各部门名称和基本工资总额。在命令窗口中键入: SELECT 部门 ,SUM( 基本工资 ) AS 已婚职工基本工资总额 FROM;

Zgjk WHERE 婚否 GROUP BY 部门

Page 17: 本  章  内  容

  5 .指定查询结果输出的目标 在 SELECT-SQL 命令中,使用 TO 子句,可以将查询结果输出到指定目标:主窗口、 ASCII文件或打印机, VFP 默认 TO 浏览窗口。 ( 1 )将查询结果输出到文本文件  【例 5 - 15 】在 Zgjk.dbf 表中,将基本工资最高的前 2 个职工的信息存储到文本文件 TOP2GZ.txt 中。 在命令窗口中键入: SELECT TOP 2 * FROM Zgjk TO FILE TOP2GZ ;

ORDER BY 基本工资 DESC

 若要显示文本文件 TOP2GZ.txt 的内容 , 可在命令窗口中键入: Type TOP2GZ.txt &&用 TYPE命令显示无结构的文本文件。

Page 18: 本  章  内  容

6 .指定查询结果保存的方向 在 SELECT-SQL 命令中,使用 INTO 子句,可以指定查询结果保存的方向。 ( 1 )将查询结果保存到独立的表  【例 5 - 16 】在 Zgjk.dbf 表中,将男职工的信息存储到表文件 MEN.dbf 中。 在命令窗口中键入:SELECT * FROM Zgjk WHERE 性别 =" 男 " INTO TABLE MEN

USE MEN &&打开表文件BROWSE &&浏览显示表记录

Page 19: 本  章  内  容

( 2 )将查询结果保存到临时表【例 5 - 17 】在 Zgjk.dbf 表中,将男职工的信息存储到临时表MENtmp 中。 在命令窗口中键入:SELECT * FROM Zgjk WHERE 性别 =" 男 " ;

INTO CURSOR MENtmp

BROWSE &&显示内在中的临时表

注意:虽然用户可以像表文件一样使用临时表,但临时表不是文件,临时表生成在内存中。程序中常用临时表存储中间数据,当关闭程序文件时自动删除临时表。

Page 20: 本  章  内  容

 ( 3 )将查询结果保存到数组中  【例 5 - 18 】在 Zgjk.dbf 表中,将所有职工的信息存储到数组 ARRtmp 中。 在命令窗口中键入: SELECT * FROM Zgjk INTO ARRAY ARRtmp

 命令执行后,第 1 条记录的各数据项将分别写入数组元素ARRtmp(1,1)~ARRtmp(1,8) ,通用型字段没有写入数组元素,第 9 条记录的数据项将分别写入数组元素 ARRtmp(9,1)~ ARRtmp(9,8) 。 若要查看数组元素的内容,可在命令窗口中键入: DISPLAY MEMORY LIKE ARRtmp

Page 21: 本  章  内  容

 多表查询就是将两个或多个表的记录通过公共字段联接起来查询。联接运算是关系数据库中重要的操作。  VFP提供了 4 种类型的联接:内部联接、左联接、右联接和完全联接。其中内部联接是最常用的联接方式。 为了说明 VFP 的 4 种联接类型,将表 Zgjk 和 Xs另存为表 Zgjk2 和Xs2 ,并对表记录做一些增减,如图 5 - 19 所示。

图 5 - 19  表 Zgjk2 和 Xs2 窗口

§5.2.2  多表查询

Page 22: 本  章  内  容

  1 .两表间的内部联接( INNER JOIN )查询 内部联接是从相关的两个表中选取满足联接条件的记录,联接成新的记录作为查询结果输出。实现两表之间内联的方法有以下两种: ( 1 )使用 INNER JOIN 和 ON 子句  SELECT < 列名表 > FROM < 表名 1>;

  INNER JOIN < 表名 2> ON < 表名 1>.< 关联字段 >=< 表名 2>.< 关联字段 >

 ( 2 )使用 WHERE 子句  SELECT < 列名表 > FROM < 表名 1>,< 表名 2>;

  WHERE < 表名 1>.< 关联字段 >=< 表名 2>.< 关联字段 >

Page 23: 本  章  内  容

【例 5 - 19 】根据表 Zgjk2 和 Xs2 ,查询有职工号的职工的职工号、姓名、商品编号和销售数量。在命令窗口中键入:SELECT Zgjk2. 职工号 , 姓名 ,商品编号 ,销售数量 ;

FROM Zgjk2 INNER JOIN Xs2 ON Zgjk2. 职工号 =Xs2. 职工号或者 SELECT Zgjk2. 职工号 , 姓名 ,商品编号 ,销售数量 ;

FROM Zgjk2, Xs2 WHERE Zgjk2. 职工号 =Xs2. 职工号

Page 24: 本  章  内  容

 两个表满足内部联接条件“ Zgjk2. 职工号 =Xs2. 职工号”的查询结果如图 5 - 20 所示。

图 5 - 20  内部联接查询结果

Page 25: 本  章  内  容

  2 .两表间的左联接( LEFT JOIN )查询 从表 1 中选取所有记录,按联接条件与表 2 中相关的记录联接成新的记录作为查询结果输出,若表 2 中不存在相关联的记录,则查询结果输出中相应字段的值为 .NULL. 。实现两表之间左联接的命令格式为:  SELECT < 列名表 > FROM < 表名 1>;

  LEFT JOIN < 表名 2> ON < 表名 1>.< 关联字段 >=< 表名2>.< 关联字段 >

  【例 5 - 20 】根据表 Zgjk2 和 Xs2 ,查询所有职工的职工号、姓名、商品编号和销售数量,如果 Zgjk2 表中的职工没有相应销售记录,也要显示该职工的信息。 在命令窗口中键入: SELECT Zgjk2. 职工号 , 姓名 ,商品编号 ,销售数量 ;

FROM Zgjk2 LEFT JOIN Xs2 ON Zgjk2. 职工号 =Xs2. 职工号

Page 26: 本  章  内  容

两表左联查询结果如图 5 - 21 所示。

图 5 - 21  左联接查询结果

Page 27: 本  章  内  容

  3 .两表间的右联接( RIGHT JOIN )查询 从表 2 中选取所有记录,按联接条件与表 1 中相关的记录联接成新的记录作为查询结果输出,若表 1 中不存在相关联的记录,则查询结果输出中相应字段的值为 .NULL. 。实现两表之间右联接的命令格式为:  SELECT < 列名表 > FROM < 表名 1> RIGHT JOIN < 表名 2> ;

  ON < 表名 1>.< 关联字段 >=< 表名 2>.< 关联字段 >

  【例 5 - 21 】根据表 Zgjk2 和 Xs2 ,查询所有职工的职工号、姓名、商品编号和销售数量,如果某个职工在 Xs2 表中没有相应的记录,也要显示该职工的信息。 在命令窗口中键入: SELECT Zgjk2. 职工号 , 姓名 ,商品编号 ,销售数量 ;

  FROM Zgjk2 RIGHT JOIN Xs2 ON Zgjk2. 职工号 =Xs2. 职工号

Page 28: 本  章  内  容

两表右联查询结果如图 5 - 22 所示。

图 5 - 22  右联接查询结果

Page 29: 本  章  内  容

  4 .两表间的完全联接( FULL JOIN )查询 从相关的两表中选取所有记录,按联接条件联接成新的记录作为查询结果输出,若表 1或表 2 中不存在相关联的记录,则查询结果输出中相应字段的值为 .NULL. 。实现两表之间完全联接的命令格式:  SELECT < 列名表 > FROM < 表名 1> FULL JOIN < 表名 2>;

  ON < 表名 1>.< 关联字段 >=< 表名 2>.< 关联字段 >

  【例 5 - 22 】将表 Zgjk2 和 Xs2 完全联接,查询两表所涉及到的所有职工的职工号、姓名、商品编号和销售数量的信息。 在命令窗口中键入: SELECT Zgjk2. 职工号 , 姓名 ,商品编号 ,销售数量 ;

FROM Zgjk2 FULL JOIN Xs2 ON Zgjk2. 职工号 =Xs2. 职工号

Page 30: 本  章  内  容

两表全联查询结果如图 5 - 23 所示。

图 5 - 23  完全联接查询结果

注意:全联扣除空值的记录即内联。

Page 31: 本  章  内  容

  5 .多表间的联接查询 为了介绍多表间的联接查询,增加 Sp2 表,如图 5 - 24 所示。

【例 5 - 23 】根据表 Zgjk2 、Xs2 和 Sp2 ,查询有职工号的职工的职工号、姓名、商品编号、商品名称、品牌、规格型号和销售数量,并按职工号从小到大排序输出。

图 5 - 24   Sp2 表

Page 32: 本  章  内  容

在命令窗口中键入:SELECT Zgjk2. 职工号 , 姓名 ,Xs2.商品编号 ,商品名称 ,品牌 ,规格型号 ,销售数量 ;

FROM Zgjk2 INNER JOIN Xs2;

INNER JOIN Sp2 ;

ON Xs2.商品编号 = Sp2.商品编号 ;

ON Zgjk2. 职工号 = Xs2. 职工号 ;

ORDER BY Zgjk2. 职工号

或者SELECT Zgjk2. 职工号 , 姓名 ,Xs2.商品编号 ,商品名称 ,品牌 ,规格型号 ,销售数量 FROM Zgjk2, Xs2, Sp2;

WHERE Zgjk2. 职工号 =Xs2. 职工号 AND Xs2.商品编号 =Sp2.商品编号 ;

ORDER BY Zgjk2. 职工号

Page 33: 本  章  内  容

  嵌套子查询是指在 SELECT-SQL 命令中包含了另一个SELECT-SQL 命令。嵌套子查询 SELECT-SQL 命令的形式如下:  SELECT < 表 1 的列名表 > FROM < 表名 1>;

  WHERE < 表 1 的关联字段 > IN;

  (SELECT < 表 2 的关联字段 > FROM < 表名 2> WHERE < 表 2 的查询条件 >)

 说明:命令中“ IN” 是一个关系运算符,表示表 1 中关联字段的值必须与从表 2 查询出的关联字段中的一个的值相匹配。 命令执行过程:首先执行子查询,然后执行外查询。

§5.2.3  嵌套查询

Page 34: 本  章  内  容

  【例 5 - 24 】根据表 Zgjk 和 Xs ,查询销售数量在 5 以上(含5 )的职工的职工号与姓名(要求不重复显示)。

图 5 - 26  例 5 - 24 查询的结果

 本例既可以使用嵌套子查询,也可以不使用嵌套子查询,而使用内联查询。 ( 1 )使用嵌套子查询 在命令窗口中键入: SELECT 职工号 , 姓名 FROM Zgjk WHERE 职工号 IN ;

( SELECT 职工号 FROM Xs WHERE 销售数量 >=5 )

 查询结果如图 5 - 26 示。

Page 35: 本  章  内  容

( 2 )不使用嵌套子查询在命令窗口中键入:SELECT DISTINCT Zgjk2. 职工号 , 姓名 FROM Zgjk;

INNER JOIN Xs ON Zgjk. 职工号 =Xs. 职工号 ;

WHERE 销售数量 >=5

或者SELECT DISTINCT Zgjk2. 职工号 , 姓名 FROM Zgjk,Xs;

WHERE Zgjk. 职工号 =Xs. 职工号 AND 销售数量 >=5

不使用嵌套子查询和使用嵌套子查询的结果相同。

Page 36: 本  章  内  容

 自联查询的含意:在 SELECT-SQL 命令将一个关系与其自身进行联接而进行的查询。为了区分内外层查询,在 FROM 子句中为内外层关系指定不同的别名。 自联查询的命令格式如下:  SELECT < 别名 1. 列名表 > FROM < 表名 > < 别名 1> WHERE < 自联字段>=;

  (SELECT < 自联字段 > FROM < 表名 > < 别名 2>;

  WHERE < 别名 1. 关联字段 = 别名 2. 关联字段 >)

  【例 5 - 25 】查询每个职工销售数量最高的商品编号的信息。 在命令窗口中键入: SELECT out. 职工号 ,out.商品编号 ,out.销售数量 ;

FROM Xs out WHERE 销售数量 =;

(SELECT MAX(销售数量 ) FROM Xs inner1;

WHERE out. 职工号 =inner1. 职工号 )

§5.2.4  自联查询

Page 37: 本  章  内  容

自联查询结果如图 5 - 27 所示。

图 5 - 27  例 5 - 25 查询的结果

Page 38: 本  章  内  容

   SQL 支持集合的并运算,即使用并算符( UNION )将两个SELECT-SQL 语句的查询结果合并成一个查询结果。 命令格式:  SELECT < 列名表 1> FROM < 表名 1> WHERE < 条件 1>…;

  UNION;

  SELECT < 列名表 2> FROM < 表名 2> WHERE < 条件 2>…

 功能:将两个 SELECT-SQL 语句的查询结果合并成一个查询结果输出。

 说明:在两个 SELECT-SQL 语句中,查询结果 < 列名表 >

中的字段个数、字段的名、型和宽都要相同。

§5.2.5  集合的并运算

Page 39: 本  章  内  容

【例 5 - 26 】查询在家电和文具部门工作的职工的信息。在命令窗口中键入:SELECT * FROM Zgjk WHERE 部门 =" 家电 ";

UNION;

SELECT * FROM Zgjk WHERE 部门 ="文具 "

查询结果如图 5 - 28 所示。

图 5 - 28  例 5 - 26 查询的结果