GZICP.com   
 
    返回首页
    联系我们
 
 
     

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

www.gzicp.com   2004年7月9日 17:25:40
 
  1、用集合运算符组合查询                                                      
  UNION、EXCEPT 以及 I
查询。执行用这些集合运算
不同的结果。
NTERSECT 集合运算符使您能够
符连接的每个查询并组合各个查

将两个或更多外层查询组合成单个
询的结果。根据运算符不同,产生



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

  在下列 UNION 运算符
8 年的人员的姓名:
的示例中,查询返回薪水高于 $

21,000、有管理责任且工龄少于


  (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 运算符通过包括所有在 TABL
生出一个结果表。当 ALL 随 EXCEPT 一
E1 中但不在 TABLE2 中的行并消除所有重复行而派
起使用时 (EXCEPT ALL),不消除重复行。

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


   SELECT ID, NAME FROM STAFF WHERE SALARY > 21000

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

                                                                       

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

   


  4、INTERSECT 运算符                                                

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

  在下列 INTERSECT 运
于8年的雇员的姓名和 ID。
算符的示例中,查询返回收入超

过 ,000 有管理责任且工龄少


   SELECT ID, NAME FROM STAFF WHERE SALARY > 21000

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


  各个查询的结果在关于

UNION 的一节中列出。这两个

使用 INTERSECT 的查询的结果为


   


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



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


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


  在具有相同数据类型和
针对 UNION、EXCEPT 以及
类型的规则。
相同长度的列之间进行的运算会
INTERSECT 集合运算符的结果,

产生一个具有该类型和长度的列。
参见 SQL Reference 中结果数据


 

ChinaITLab 

相关文章
·SQL入门:相关子查询(2004年07月09日)
·SQL入门:相关名(2004年07月09日)
·SQL入门:表表达式(2004年07月09日)
·SQL入门:条件表达式(2004年07月09日)
·SQL入门:转换数据类型(2004年07月09日)
·SQL入门:标量全查询(2004年07月09日)
·SQL入门:分组(2004年07月09日)
·SQL入门:使用函数(2004年07月09日)
·SQL入门:使用子查询(2004年07月09日)
·SQL入门:从多个表中选择数据(2004年07月09日)
·SQL入门:给表达式命名(2004年07月05日)
·SQL入门:使用表达式来计算值(2004年07月05日)
·SQL入门:运算次序(2004年07月05日)
·SQL入门:除去重复行(2004年07月05日)
·SQL入门:将行进行排序(2004年07月05日)
·SQL入门:选择行(2004年07月05日)
·SQL入门:选择列(2004年07月05日)
·SQL入门:创建视图(2004年06月30日)
·SQL入门:删除数据(2004年06月30日)
·SQL入门:更改数据(2004年06月30日)
·SQL入门:插入数据(2004年06月30日)
·SQL入门:创建表(2004年06月30日)
·SQL入门:数据类型(2004年06月28日)
·SQL入门:模式(2004年06月28日)
·SQL入门:视图(2004年06月28日)
·SQL入门:表(2004年06月28日)
最新文章
·防范SQL注入式攻击  (2004年09月05日)
·SQL injection的实现与应用  (2004年09月04日)
·SQL入门:目录视图的介绍  (2004年07月15日)
·SQL入门:大对象 (LOB)  (2004年07月15日)
·SQL入门:用户定义函数  (2004年07月15日)
·SQL入门:用户定义类型  (2004年07月15日)





 
 
Copyright © 1999-2008 GZICP.com All Rights Reserved