下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

SQL Server子查询的作用是什么?

作者:课课家教育     来源: http://www.kokojia.com点击数:2402发布时间: 2017-08-18 09:30:01

标签: 数据库子查询SQL Server

  此文章主要向大家描述的是SQLServer子查询,在实际操作中SQLServer子查询所占的比例还是比较常见的,所以对其有一定的了解在以后的学习中还是比较有用的,以下就是文章的主要内容的详细描述,望你能有所收获。

  子查询是指将一条SQLSever语句嵌入到另一条SQLSever语句中。数据库引擎将子查询做为虚表执行查询操作。子查询可做为连接语句中的一个表,可做为选择语句中的一个值,也可以是SQLSever查询子句,还可以是SQLSever查询子句的字句,与数据操作语句混合在一起。

  子查询的执行依赖于嵌套查询。查询树从最里层开始,一层一层向外执行。高层的嵌套查询可以访问低层嵌套查询的结果。

  类别

  子查询分为两种类型:独立子查询和相关子查询

  ①独立子查询是单独执行,其结果参与外层的查询,

  整个查询中子查询只执行一次,执行完后再执行外层查询;

  ②相关子查询是指子查询(内层查询)中引用了外层查询所引用表的字段,

  因此外层查询处理每一条记录时都必须执行一次子查询,

  因为子查询中引用的字段的值发生了变化。

  什么是相关子查询?

  与经典子查询不同,相关子查询依赖于外部查询。外部查询和SQLServer子查询是有联系的,尤其在子查询的WHERE语句中更是如此。相关子查询的工作方式是:在子查询中找到外部查询的参考时执行外部查询,此时将结果返回给子查询。然后在外部查询返回的结果集上执行子查询操作。

  相关子查询的执行性能

  由于相关子查询中的子查询在外部查询返回的结果集上进行执行,其效率肯定下降。子查询的性能完全依赖于查询和有关的数据。但是,如果相关子查询的语句写得很有效率,则其执行性能能够胜过那些使用几个连接和临时表的程序。

  例子:

  例:找出每个部门中薪水最高的雇员,显示姓和薪水。

 由于相关子查询中的子查询在外部查询返回的结果集上进行执行,其效率肯定下降。子查询的性能完全依赖于查询和有关的数据。但是,如果相关子查询的语句写得很有效率,则其执行性能能够胜过那些使用几个连接和临时表的程序。    例子:    例:找出每个部门中薪水最高的雇员,显示姓和薪水

  该子查询语句的执行过程如下:

  1.读取雇员表的一条记录

  2.执行子查询,得到该雇员所在部门的最高薪水数目

  3.比较该雇员薪水和最高薪水

  4.如果相等,输出该行信息

  5.转到1

  再举一个例子:查找薪水高于部门平均薪水的所有员工,显示姓和薪水。

 3.比较该雇员薪水和最高薪水    4.如果相等,输出该行信息    5.转到1    再举一个例子:查找薪水高于部门平均薪水的所有员工,显示姓和薪水。

  该子查询的执行过程如下:

  1.读取employee表的一条记录

  2.执行子查询,得到该记录的雇员的所在部门的平均工资

  3.比较该雇员的薪水和部门平均薪水

  全部取出后判定是否存在

  如果使用NOTEXISTS表达式,可以写成:

  4.如果雇员薪水比部门平均薪水高,就输出该行信息

  5.转到1

  用相关子查询的例子:

  哪些代码的工作没有雇员?

 5.转到1    用相关子查询的例子:    哪些代码的工作没有雇员?

       

    全部取出后判定是否存在

  如果使用NOTEXISTS表达式,可以写成:

 全部取出后判定是否存在    如果使用NOTEXISTS表达式,可以写成:

  小编结语:

  更多内容尽在课课家教育!

赞(19)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程