科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道SQL Server 2005 数据库的开发概述(6)

SQL Server 2005 数据库的开发概述(6)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

随着Microsoft SQL Server 2005 Beta 2的发布,数据库开发的方式正在改变中。作为一个数据库开发人员,现在你可以更好的把工作关注在功能、对本机格式的数据的访问(如XML)、以及利用强大的数据库服务器创建更复杂的系统上。

作者:ChinaITLab 来源:中国IT实验室 2007年9月12日

关键字: 开发 SQL Server SQL Server 2005 数据库

  • 评论
  • 分享微博
  • 分享邮件

语言增强

Transact-SQL 增强

Transact-SQL 一直以来就是SQL Server所有编程的基础。SQL Server 2005 Beta 2 提供了很多新的语言功能用以开发可伸缩的应用程序。这些增强包括错误处理、新的递归查询功能、对新的SQL Server数据库引擎功能的支持等。SQL Server 2005 Beta 2 中的 Transact-SQL 增强功能提高了您在编写查询时的表达能力,使您可以改善代码的性能,并且扩充了您的错误管理能力。Microsoft 在增强 Transact-SQL 方面不断付出的努力显示了T-SQL在 SQL Server 中具有的重要作用、T-SQL的威力以及对它的将来所怀有的坚定信念。

递归查询和通用表表达式

通用表表达式 (CTE) 是一个可以由定义语句引用的临时命名的结果集。在它们的简单形式中,您可以将 CTE 视为更类似于非持续性类型视图的派生表的改进版本。在查询的 FROM 子句中引用 CTE 的方式类似于引用派生表和视图的方式。只须定义 CTE 一次,即可在查询中多次引用它。在 CTE 的定义中,可以引用在同一批处理中定义的变量。您甚至可以在 INSERT、UPDATE、DELETE 和 CREATE VIEW 语句中以与使用视图类似的方式使用 CTE。但是,CTE 的真正威力在于它们的递归功能,即 CTE 可以包含对它们自身的引用。当您希望像引用表一样引用查询结果,但是不希望在数据库中创建持久性视图时,可以使用派生表。但是,派生表具有 CTE 中所不具有的限制:您无法只在查询中定义派生表一次然后多次使用它。相反,您必须在同一查询中定义多个派生表。但是,您可以定义 CTE 一次并在查询中多次使用它,而无须在数据库中持续保存它。

非递归 CTE 可以改善语句的表达能力。但是对于每一段使用非递归 CTE 的代码,您通常可以通过使用其他 Transact-SQL 结构(例如,派生表)来实现同一功能,只不过代码更长点。对于递归 CTE,情况则迥然不同。当 CTE 引用它本身时,它被视为递归的。递归的 CTE 是根据至少两个查询(或者,用递归查询的说法,为成员)构建的。一个是非递归查询,也称为锚定成员 (AM)。另一个是递归查询,也称为递归成员 (RM)。查询由 UNION ALL 运算符连接为一个单独的CTE。

PIVOT 和 UNPIVOT 操作符

SQL Server 2005 Beta 2 提供了两个新的关系运算符: PIVOT 和 UNPIVOT, 你可以在查询的FROM子句中使用它。它们对一个输入表值表达式执行某种操作,并且产生一个输出表作为结果。PIVOT 运算符将行旋转为列,并且可能同时执行聚合。它基于给定的枢轴列扩大输入表表达式,并生成一个带有与枢轴列中的每个唯一值相对应的列的输出表。

PIVOT 运算符可用来处理开放架构方案以及生成交叉分析报表。在开放架构方案中,您需要用事先不知道或因实体类型而异的属性集来维护实体。应用程序的用户动态定义这些属性。您将属性拆分到不同的行中,并且只为每个实体实例存储相关的属性,而不是在表中预定义很多列并存储很多空值。PIVOT 使您可以为开放架构和其他需要将行旋转为列的方案生成交叉分析报表,并且可能同时计算聚合并且以有用的形式呈现数据。

UNPIVOT 运算符执行与 PIVOT 运算符相反的操作;它将列旋转为行。它基于旋转列收缩输入表表达式。UNPIVOT 运算符使您可以规格化预先旋转的数据。

APPLY 操作符

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

CROSS APPLY 为外部表表达式中的每个行调用表值函数。您可以引用外部表中的列作为该表值函数的参数。CROSS APPLY 从该表值函数的单个调用所返回的所有结果中返回统一的结果集。如果该表值函数对于给定的外部行返回空集,则不会在结果中返回该外部行。

OUTER APPLY 非常类似于 CROSS APPLY,但是它还从表值函数为其返回空集的外部表中返回行。空值作为与表值函数的列相对应的列值返回。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章