`
wangzhen5
  • 浏览: 79213 次
  • 性别: Icon_minigender_1
  • 来自: 河南省
社区版块
存档分类
最新评论

SQL入门用集合运算符组合查询

SQL 
阅读更多
SQL入门:用集合运算符组合查询

--------------------------------------------------------------------------------

http://www.sina.com.cn 2006年10月01日 14:41 ChinaByte

  1、用集合运算符组合查询

  UNION、EXCEPT 以及 INTERSECT 集合运算符使您能够将两个或更多外层查询组合成单个查询。执行用这些集合运算符连接的每个查询并组合各个查询的结果。根据运算符不同,产生不同的结果。

  2、UNION 运算符

  UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。

  在下列 UNION 运算符的示例中,查询返回薪水高于 $21,000、有管理责任且工龄少于 8 年的人员的姓名:

  (1)

  SELECT ID, NAME FROM STAFF WHERE SALARY > 21000

  UNION

  (2)

  SELECT ID, NAME FROM STAFF WHERE JOB='Mgr' AND YEARS < 8

  ORDER BY ID

  各个查询的结果如下:

  (1)

  





  (2)

  





  数据库管理程序组合这两个查询的结果,消除重复行,并按升序返回最终结果。

  





  如果在带有任何集合运算符的查询中使用 ORDER BY 子句,则必须在最后一个查询之后写该子句。系统对组合的回答集进行排序。如果两个表中的列名不同,则组合的结果表没有相应列的名称。替代地,将这些列按其出现的顺序编号。因此,如果想要对结果表进行排序,则必须在 ORDER BY 子句中指定列号。

  3、EXCEPT 运算符

  EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。

  在下列 EXCEPT 运算符的示例中,查询返回收入超过 $21,000 但没有经理职位且工龄为 8 年或更长的所有人员的姓名。

  SELECT ID, NAME FROM STAFF WHERE SALARY > 21000

  EXCEPT

  SELECT ID, NAME FROM STAFF WHERE JOB='Mgr' AND YEARS < 8

  各个查询的结果在关于 UNION 的一节中列出。上面的语句产生下列结果:

  





  4、INTERSECT 运算符

  INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。

  在下列 INTERSECT 运算符的示例中,查询返回收入超过 $21,000 有管理责任且工龄少于8年的雇员的姓名和 ID。

  SELECT ID, NAME FROM STAFF WHERE SALARY > 21000

  INTERSECT

  SELECT ID, NAME FROM STAFF WHERE JOB='Mgr' AND YEARS < 8

  各个查询的结果在关于 UNION 的一节中列出。这两个使用 INTERSECT 的查询的结果为:

  





  5、当使用 UNION、EXCEPT 以及 INTERSECT 运算符时,记住下列事项:

  运算符的查询选择列表中的所有对应项必须是相容的。有关更多信息,参见 SQL Reference 中的数据类型相容性表。

  ORDER BY 子句(如果使用该子句的话)必须放在最后一个带有集合运算符的查询后面。对于每个运算符来说,如果列的名称与查询的选择列表中对应项的名称相同,则该列名只能在 ORDER BY 子句中使用。

  在具有相同数据类型和相同长度的列之间进行的运算会产生一个具有该类型和长度的列。针对 UNION、EXCEPT 以及 INTERSECT 集合运算符的结果,参见 SQL Reference 中结果数据类型的规则。


分享到:
评论

相关推荐

    (第一卷)Microsoft.SQL.Server.2008技术内幕:T-SQL语言基础

     书中并非系统地罗列T-SQL的各种语法元素,而是结合实践中的各种问题,教读者如何用SQL作为语言工具来思考问题,揭示基于集合查询的强大威力。本书内容丰富、文字简洁明快,列举的实例具有一定的难度,而且实用性较...

    LINQ入门及应用 10/13

     4.1 LINQ标准查询运算符概述  4.2 Enumerable类的介绍  4.3 用于延期执行的Enumerable类方法成员  4.3.1 Take方法  4.3.2 TakeWhile方法  4.3.3 Skip方法  4.3.4 SkipWhile方法  4.3.5 Take、TakeWhile、...

    (第二卷)Microsoft SQL Server 2008技术内幕:T-SQL语言基础

     书中并非系统地罗列T-SQL的各种语法元素,而是结合实践中的各种问题,教读者如何用SQL作为语言工具来思考问题,揭示基于集合查询的强大威力。本书内容丰富、文字简洁明快,列举的实例具有一定的难度,而且实用性较...

    数据透视表SQL语句入门

    在Excel中使用MS Query查询外部数据库的内容的优点是:不用设置公式、编写VBA代码、源数据库不用打开。 但要注意:源数据库的记录要有字段名,由于设置查询时的路径固定,。 因此源数据库文件不能随意移动(如确实要...

    程序员的SQL金典.rar

     8.4 集合运算符与子查询  8.4.1 IN运算符  8.4.2 ANY和SOME运算符  8.4.3 ALL运算符  8.4.4 EXISTS运算符  8.5 在其他类型SQL语句中的子查询应用  8.5.1 子查询在INSERT语句中的应用  8.5.2 子查询在UPDATE...

    程序员的SQL金典4-8

     8.4 集合运算符与子查询  8.4.1 IN运算符  8.4.2 ANY和SOME运算符  8.4.3 ALL运算符  8.4.4 EXISTS运算符  8.5 在其他类型SQL语句中的子查询应用  8.5.1 子查询在INSERT语句中的应用  8.5.2 子查询在UPDATE...

    程序员的SQL金典6-8

     8.4 集合运算符与子查询  8.4.1 IN运算符  8.4.2 ANY和SOME运算符  8.4.3 ALL运算符  8.4.4 EXISTS运算符  8.5 在其他类型SQL语句中的子查询应用  8.5.1 子查询在INSERT语句中的应用  8.5.2 子查询在UPDATE...

    程序员的SQL金典7-8

     8.4 集合运算符与子查询  8.4.1 IN运算符  8.4.2 ANY和SOME运算符  8.4.3 ALL运算符  8.4.4 EXISTS运算符  8.5 在其他类型SQL语句中的子查询应用  8.5.1 子查询在INSERT语句中的应用  8.5.2 子查询在UPDATE...

    程序员的SQL金典3-8

     8.4 集合运算符与子查询  8.4.1 IN运算符  8.4.2 ANY和SOME运算符  8.4.3 ALL运算符  8.4.4 EXISTS运算符  8.5 在其他类型SQL语句中的子查询应用  8.5.1 子查询在INSERT语句中的应用  8.5.2 子查询在UPDATE...

    Java数据库编程宝典2

    7.2.8 集合运算符 7.3 转义序列 7.4 子查询 7.4.1 使用ANY,SOME和ALL谓词 7.4.2 使用IN和NOT IN谓词 7.4.3 使用EXISTS和NOT EXISTS谓词 7.4.4 嵌套子查询 7.4.5 测试子查询 7.5 子查询的额外用途 7.5.1 ...

    Java数据库编程宝典4

    7.2.8 集合运算符 7.3 转义序列 7.4 子查询 7.4.1 使用ANY,SOME和ALL谓词 7.4.2 使用IN和NOT IN谓词 7.4.3 使用EXISTS和NOT EXISTS谓词 7.4.4 嵌套子查询 7.4.5 测试子查询 7.5 子查询的额外用途 7.5.1 ...

    Java数据库编程宝典1

    7.2.8 集合运算符 7.3 转义序列 7.4 子查询 7.4.1 使用ANY,SOME和ALL谓词 7.4.2 使用IN和NOT IN谓词 7.4.3 使用EXISTS和NOT EXISTS谓词 7.4.4 嵌套子查询 7.4.5 测试子查询 7.5 子查询的额外用途 7.5.1 ...

    Java数据库编程宝典3

    7.2.8 集合运算符 7.3 转义序列 7.4 子查询 7.4.1 使用ANY,SOME和ALL谓词 7.4.2 使用IN和NOT IN谓词 7.4.3 使用EXISTS和NOT EXISTS谓词 7.4.4 嵌套子查询 7.4.5 测试子查询 7.5 子查询的额外用途 7.5.1 ...

    Visual C# 2008从入门到精通.pdf

     本书同时还介绍了大量Visual C# 2008的开发经验,对使用中的重点、难点进行了专门的讲解,是一本有效、实用的从入门到精通级的学习指南。  本书适合于学习Visual C# 2008技术的初、中级读者使用,如果是初学者,...

    LINQ入门及应用 11/13

     4.1 LINQ标准查询运算符概述  4.2 Enumerable类的介绍  4.3 用于延期执行的Enumerable类方法成员  4.3.1 Take方法  4.3.2 TakeWhile方法  4.3.3 Skip方法  4.3.4 SkipWhile方法  4.3.5 Take、TakeWhile、...

    LINQ入门及应用 8/13

     4.1 LINQ标准查询运算符概述  4.2 Enumerable类的介绍  4.3 用于延期执行的Enumerable类方法成员  4.3.1 Take方法  4.3.2 TakeWhile方法  4.3.3 Skip方法  4.3.4 SkipWhile方法  4.3.5 Take、TakeWhile、...

    LINQ入门及应用 1/13

     4.1 LINQ标准查询运算符概述  4.2 Enumerable类的介绍  4.3 用于延期执行的Enumerable类方法成员  4.3.1 Take方法  4.3.2 TakeWhile方法  4.3.3 Skip方法  4.3.4 SkipWhile方法  4.3.5 Take、TakeWhile、...

    明日科技C#开发入门及项目实战

    实例127 使用odbc dsn连接sql server数据库 实例128 使用ado.net对象录入数据 实例129 利用存储过程录入数据 实例130 使用oledbdatareader读取文本文件的内容 实例131 使用sqldatareader读取用户登录信息 实例132 ...

    java从入门到精通70个PPT

    javaPPT 从入门到精通 从基础到框架 70个PPT 1.初识java 2.变量、数据类型和运算符和表达式 3运算符和程序流程结构 4.数组 5.类和对象 6.字符串 7.封装,继承,多肽 8.接口与抽象类 9.java集合类 10.jdbc 11 html...

    Python编程入门经典

    第2章 数值与运算符 15 2.1 不同类型的数值 15 2.2 程序文件 17 2.2.1 使用不同的类型 18 2.2.2 基本算术 20 2.2.3 一些惊喜 22 2.3 使用数值 23 2.3.1 求值顺序 23 2.3.2 数值格式 24 2.3.3 可能会发生的错误 25 ...

Global site tag (gtag.js) - Google Analytics