zoukankan      html  css  js  c++  java
  • SQL Server 2005中的TSQL增强(二)

    通用表表达式 Common Table Expressions 

      通用表表达式(CTE)是一个可以由定义语句引用的临时表命名的结果集。在他们的简单形式中,您可以将CTE视为类似于视图和派生表混合功能的改进版本。在查询的FROM子句中引用CTE的方式类似于引用派生表和视图的方式。只须定义CTE一次,即可在查询中多次引用它。在CTE的定义中,可以引用在同一批处理中定义的变量。但是CTE的真正威力在于它们的递归功能,即CTE可以包含对它们自身的引用。

      视图、派生表和CTE内部的查询的一般形式

      1、视图

    CREATE VIEW <view_name>(<column_aliases>) AS <view_query>


    2、派生表

    SELECT * FROM (<derived_table)query>) AS <dericed_table_alias>(<column_aliases>)


    3、CTE

    WITH <cte_alias>(<column_aliases>)
    AS
    {
    <cte_query>
    )
    SELECT * FROM <cte_alias]>


    在关键字WITH之后,为CTE提供一个别名,并且为它的结果列提供一个可选的别名列表;编写CTE的主体;然后从外部查询中引用它。

      4、演示代码



    USE AdventureWorks
    GO
    WITH SalesCTE(ProductID, SalesOrderID)
    AS
    (
    SELECT ProductID, COUNT(SalesOrderID)
    FROM Sales.SalesOrderDetail
    GROUP BY ProductID
    )
    SELECT * FROM SalesCTE


    Recursive CTEs 递归的通用表表达式

      递归的CTE是根据至少两个查询(或者称为两个成员)构建的,一个是非递归查询,也成为固定成员,只能调用一次,另外一个是递归查询,也成为递归成员(RM),可以反复调用,直到查询不再返回行。查询由UNION ALL运算符连接为一个单独的CTE。

    --使用递归的通用表表达式


    Code


    新的关系运算符 PIVOT/UNPIVOT/APPLY

      1、PIVOT

      PIVOT运算符将行旋转为列,并且可能同时执行聚合。使用PIVOT运算符时要注意的重要一点是,需要为它提供一个查询表达式,表达式使用视图、派生表或者是CTE只返回所关注的列。

      2、UNPIVOT

      UNPIVOT运算符执行与PIVOT运算符相反的操作;他将列旋转为行了。

      3、APPLY

      APPLY关系运算符允许您对外部表的每个行调用指定的表值函数一次。您可以在查询的FROM子句中指定APPLY,其方式与使用JOIN关系运算符类似。APPLY具有两种形式:CROSS APPLY和OUTER APPLY。

      演示:

    Code


    DDL触发器 DDL Triggers

      SQL Server 2005可以就整个服务器或数据库的某个范围为DDL事件定义触发器。也可以为单个DDL语句(例如:CREAT_TABLE、DROP_TABLE等)或者为一组语句(例如:指定DDL_DATABASE_LEVEL_EVENTS想要触发器触发数据库所有DDL事件)定义DDL触发器。

      在DDL触发器内部,可以通过访问eventdata()函数获得与激发该触发器的事件有关的数据。该eventdata()函数返回有关事件的xml数据。

      DDL触发器特别有用的方案包括DDL更改的完整性检查、审核方案以及其他方案。

      代码演示:

    Code


    总结

      SQL Server 2005中的Transaction-SQL增强功能提高了用户在编写查询时的表达能力,使用户可以改善代码的性能,并且扩充了错误处理能力。SQL Server 2005 在Transaction-SQL上所做的改进反映了其更好地满足了ANSI-99 SQL规范的要求以及客户的需求。在Transaction-SQL和托管代码之间的选择。

  • 相关阅读:
    vim常用命令总结
    深度学习之 GAN 进行 mnist 图片的生成
    javascript 中的类型
    架构设计小思
    [前端]如何让图片等比例缩放,同时撑满父级容器的长或宽
    深度学习之 seq2seq 进行 英文到法文的翻译
    深度学习之 cnn 进行 CIFAR10 分类
    深度学习之 rnn 台词生成
    深度学习之 mnist 手写数字识别
    前端页面,使用 dom 鼠标拖拽画一个矩形和监听键盘
  • 原文地址:https://www.cnblogs.com/redfox241/p/1474072.html
Copyright © 2011-2022 走看看