4.高级查询

一.嵌套的子查询

二.相关子查询

三.派生表

四.EXISTS运算符

五.CAST和CONVERT

 

序.什么是子查询
 1.子查询是嵌套在其他查询中的常规的T-SQL查询(用括号括起来),当需要一个SELECT语句作为数据部分的基础或另一个查询中的条件的要素时,就是创建子查询。
  
 2.子查询满足的需求:
  (1).把一个查询分解成一系列的逻辑步骤。
  (2).提供一个列表作为WHERE子句和 [ IN | EXISTS | ANY | ALL] 的目标对象。
  (3).提供由父查询中每一条记录驱动的查找。

一.嵌套的子查询
 1.嵌套子查询只朝一个方向进行——要么返回一个而用于外部查询的值,要么返回一个与IN运算符一起使用的的值的列表。
 2.嵌套子查询中,内部查询只处理一次。
 3.与NULL比较总会得到NULL。如果允许NULL在子查询中出现,则在与NOT IN相比较时,外部查询中的所有行都会被确定为错误的——这将返回空的列表。
 2.ANY, SOME和ALL 

二.相关子查询
 1.执行步骤:
  (1)外部查询得到一条记录并将其传入到内部查询。
  (2)内部查询基于传入的值执行。
  (3)内部查询从其结果中把值传回到外部查询,外部查询使用这些值来完成其处理。
 2.ISNULL函数
  ISNULL(<要检查的表达式>, <如为NULL时的表达式>)
  两个表达式的数据类型必须相同,或者可以隐式转换。

三.派生表
 1.派生表(有时成为“内联视图“)由查询结果集的列和行组成。
 2.当结果集相当庞大且将要联结大量的记录时,可能要考虑使用临时表并在其上构建索引(派生表没有索引)。

四.EXISTS运算符
 1.EXISTS的性能要高于JOIN。当使用EXISTS关键字时,SQL Server不必在所有的行上进行联结。实际上,SQL Server将浏览记录,知道找到第一个满足条件的记录然后停止在那里。在进行内部联结时,性能差异将更为显著。

五.CAST和CONVERT
 1.CAST和CONVERT都是用来进行数据类型转换的。多数时候,它们提供相同的功能,除了CONVERT还能完成一些日期格式转换,而CAST则不能提供此功能。
 2.CAST是ANSI兼容的,而CONVERT不是。

 

posted on 2009-03-30 01:33  舞月闻笛  阅读(1008)  评论(1)    收藏  举报

导航