1.sqlserver编程入门经典---更复杂的查询

sqlserver

7.1 子查询的概念

    子查询是嵌套在另一个查询中的普通T-SQL查询,通常满足几个需求:

       将子查询分解为一系列的逻辑步骤,

       提供一个列表作为where子句和【in\exists\any\all】的目标,

       为父查询中的每个记录提供一个查询表。

     嵌套子查询有两个模板:

     select <select list>

     from <sometable>

     where <somecolumn>=(

               select <single column>

               from <sometable>

               where <condition that results in only one row returned>)

     或者

     select <select list>

     from <sometable>

     where <somecolumn> in (

              select<single column>

              from<sometable>

              where <condition>

         )

   

 

7.2 关联子查询

7.2.1 关联子查询的工作原理

    关联子查询与嵌套子查询不同之处在于信息传递是双向的,而不是单向的,内部查询用外部查询提供的信息运行,发之亦然。

7.2.2 在where子句中的关联子查询

7.2.3 处理null数据--isnull函数

     isnull(<experession to test>,<replacement value if null>)

7.3 派生表

    要创建派生表,需要做一下两件事情:

    将生成结果集的查询用小括号括起来,

    给查询结果取别名,这样它可以作为表被引用。

7.4 exists运算符

    exists运算符与in关键字很相似,但是使用exists并不是真正返回数据,而是根据是否存在数据满足查询中exists语句所建立的条件标准,返回简单的true或者false结果。

7.5 混合数据类型:cast和convert

   cast和convert都可以执行数据类型转换,在大部分情况下,两者执行同样的功能,不同的是convert还提供一些日期格式的转换,而cast没有这个功能。

7.6 merge命令

   merge命令是sqlserver2008中的新功能,可以将多个dml动作语句(insert,update,delete)组合成一个整体动作,从而提高性。

7.7 性能方面考虑

 对于外部查询的每行,子查询返回的值都一样:预查询,声明一个变量,然后选择需要的值赋给这个变量,这样子查询就只执行一次,而不是对外部表的每个记录都执行一次。

两个表都比较小(比如不超过10000个记录):子查询

根据所有条件,匹配只会返回一个值:子查询

根据所有条件,匹配只返回很少的值,在查找列上没有索引:子查询

查找表相对很小,但是基表很大:嵌套子查询,其次是连接,最后是关联

关联子查询和连接相比:连接,关联子查询比游标快,但是比其他都慢

派生表和其他可选择方法:派生表要产生很到的系统开销,慎用

exists和其他任何可选择方法:exists,不需要多次查询,一一旦找到一个匹配就结束

 

 

 

 

 

 

 

 

 

  

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 


相关推荐

  • 计算机编程入门教程java编程入门教程   导读:java编程入门教程开适泛博想进修一门编程说话的读者、出有任何根底的Java入门读者、Java自学职员、从其他说话转向Java说话的读者、大中专院校的学生和社会培训学生。Java是一种通用的,并收的,强类型的,里向对象的编程说话(
  • 计算机 编程入门学什么? 给编程入门者的建议 编程程序员,曾经对于这个职业我一直觉得很光荣无比程序员就是牛逼1.应学好的课程学好数据结构、C、C++等基础课程,可以使初学者对软件内部原理的理解更为深入。比如B树使我们能够更深入地了解数据库的存储,“快速排序”算法可以帮助我们很容易理解D
  • (转)linux操作系统下c语言编程入门 linux操作系统下c语言编程入门整理编写:007xiong原文:Hoyt等(一)目录介绍1)Linux程序设计入门--基础知识2)Linux程序设计入门--进程介绍3)Linux程序设计入门--文件操作4)Linux程序设计入门--时间概
  • linux操作系统下c语言编程入门 linux操作系统下c语言编程入门(一)目录介绍1)Linux程序设计入门--基础知识2)Linux程序设计入门--进程介绍3)Linux程序设计入门--文件操作4)Linux程序设计入门--时间概念5)Linux程序设计入门--信号处理6
  • linux操作系统下c语言编程入门1[2006年08月04日] linux操作系统下c语言编程入门1(一)目录介绍1)Linux程序设计入门--基础知识2)Linux程序设计入门--进程介绍3)Linux程序设计入门--文件操作4)Linux程序设计入门--时间概念5)Linux程序设计入门--信号处理
  • 学编程从什么入门|学游戏编程入门需要什么知识,那些软件适合入门   p>本人没有一点编程基础,初中水平。现想学游戏编程不知如何下手,更不知道哪个编程软件通俗易懂适合初学着  有哪位人知道编程开始学什么的好,回答好的有加分。  没有最佳答案  c,java,vb需要有耐心慢慢学的  学历的话是无所谓
  • linux操作系统下c语言编程入门 linux操作系统下c语言编程入门(1)Linux_Unix2007-11-0122:06:21阅读54评论0字号:大中小订阅Linux程序设计入门--基础知识2)Linux程序设计入门--进程介绍3)Linux程序设计入门--文件操作4)
  • linux操作系统下c语言编程入门 1)Linux程序设计入门--基础知识2)Linux程序设计入门--进程介绍3)Linux程序设计入门--文件操作4)Linux程序设计入门--时间概念5)Linux程序设计入门--信号处理6)Linux程序设计入门--消息管理7)Linu
  • Android手机摄像头编程入门(转载) 第三十六讲:Android手机摄像头编程入门08Dec本讲内容:Android手机摄像头编程入门智能手机中的摄像头和普通手机中的摄像头最大的区别在于,智能机上的摄像头可以由程序员写程序控制,做一些有趣的应用譬如,画中画,做一些有用的应用譬如
  • C++编程入门系列之二十四(C++程序设计必知:多文件结构和编译预处理命令) 上一讲给大家讲了常引用、常对象和对象的常成员,今天给大家讲下编程入门知识--多文件结构和编译预处理命令。一.C++程序的多文件结构之前给大家看了很多比较完整的C++程序的例子,大家可能发现了,它们的结构基本上可以分为三个部分:类的声明、类的
  • 鸡啄米:C++编程入门系列之目录和总结 鸡啄米的这套C++编程入门教程到上一讲--C++编程入门系列之五十(异常处理)为止,就算圆满完成了。大家学到这里应该对C++的基础知识和程序设计都有了一定的认识了,以后要做的就是多练习多积累经验了。一.目录之前鸡啄米都是一节一节的讲,也没有
  • COM编程入门:深入COM服务器 再谈QueryInterface()  前面讨论过QI()的实现,但还是有必要再看一看类工厂的QI(),因为它是一个很现实的例子,其中COM对象实现的不光是IUnknown。首先进行的是对ppv缓冲的有效性检查以及初始化。  HRESULT

你的评论

就没有什么想说的吗?

最新博客

关于我们 加入传客 媒体报道 帮助中心 传客活动 免责声明 联系我们 移动版 移动应用

©2017传客网    琼ICP备15003173号-2    

本站部分文章来源于互联网,版权归属于原作者。
本站所有转载文章言论不代表本站观点,如是侵犯了原作者的权利请发邮件联系站长(weishubao@126.com),我们收到后立即删除。
站内所有资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己承担!

X