zoukankan      html  css  js  c++  java
  • SQL Server2008 新语法

    概述

    SQL Server 2008针对应用程序开发大幅扩充了许多功能,除了完整支持Visual Studio 2008/.NET Framework 3.5 SP1后所提供的LINQ、ADO.NET Entity Data Model/Framework、ADO.NET Data Service、Sync Framework/Service…等功能外,针对数据引擎本身,也新增的繁多的功能,如下:

    新数据形态

    日期/时间数据类型:新增date、time、datetime2、datetimeoffset 等日期格式。另外,time、datetime2、datetimeoffset等类型的数据长度可变动,让你可在精确度与节省空间两者间选择。

    空间(Spatial)数据类型:可在数据库内结合地理资讯,并搭配空间索引(Spatial Index)的特殊阶层式索引结构,以有效存储数据。实体的数据类型分为以下两种:

    geometry (平面):符合开放式地理空间协会(Open Geospatial Consortium,OGC)的SQL简单特征规格1.1.0版,存放几何空间的X、Y等坐标数据。

    geography (测地):存储椭圆体(圆形地球)数据,例如:GPS的经纬度坐标。

    上述两种数据类型实际是通过SQL CLR编写,同时提供了丰富的函数,诸如:STLength、STArea、STStartPoint、STEndpoint、STCrosses、STWithin、STOverlaps…等,让你不论是以T-SQL或是.NET程序语言开发,都可以一致的操作方式存取该资料记录或物件执行个体。

    FileStream:将大量数据通过SQL Server 存回 NTFS档案目录,而非数据库档案内。让大型数据不受限于2G位元组大小的限制,还可同时维持交易一致性、整合的管理架构,如:备份/还原、SQL Server 安全性等。

    Hierarchyid阶层结构数据类型:以SQLCLR UDT实做的特殊数据形态,预设提供许多维护阶层结构的方法。以便利操作如档案、组织阶层等结构。

    数据表类型的参数(Table-value Parameter):可以先定义数据表类型,再在预存程序声明该类型参数。在这个版本,传递数据表形态的参数是只读的。

    Sparse Column:适用于数据表的字段数量非常多,但大部分记录该字段的内容都是空的。若声明成Sparse字段,当内容是null时,完全不占空间。例如Windows Sharepoint Services在存储文管的数据时,有一大堆档案格式,每种档案格式的属性皆不同,因此有一大堆字段,对应各种不同的文件属性,当新增任一份档案时,大部分的属性字段都可以null,仅少数几栏适用于该类型档案描述的属性有设值。

    Sparse Column同时可以搭配过滤条件的索引(Filtered Index),以更省空间、更有效率的放出处理Sparse字段。

    新索引结构

    空间索引(Spatial Index):对于空间地理资讯建制特殊的索引结构。

    设定过滤条件的索引:对符合Where条件的值建立索引,例如:建立索引时限制字段值不可null,则针对Sparse Column建出来的索引资料量就小很多。

     T-SQL语法增强

    简化T-SQL语句的编写:可宣布变量并同时初始化,例如:DECLARE @i INT=4。以及附和运算,例如:+= 、 -= 、 *= 、/= 、%= 等。

    Values子句提供资料列构建函式:可用在单一INSERT陈述式内,同时插入多组值,例如

    INSERT INTO tb VALUES (1, 'Fred'), (2, 'Jim'), (3, 'Sue');
    或用在
    SELECT
    語法:
    或用在SELECT语句:
    SELECT * FROM (VALUES (1, 'Fred'), (2, 'Jim'), (3, 'Sue')) tb(C1,C2)

    Merge语句:遵循ANSI SQL 2006 的 Merge定义并加以延伸。比较来源与目的资料后,以一句Merge语句同时完成新增、修改、删除等操作。如同单一句SQL语句自动含在交互内,通过Merge语句所有更新的资料都包在一个交互内,不像以往需明确定义交互,然后包含多句变更资料的DML语句。

    Group By 子句支持 ANSI 标准的 Grouping Sets:简化组合各种群组的语句,并可搭配 Rollup、Cube。例如,以往若要分別呈现群组不同字段,需要写如下的查询:

    use Northwind
    GO

    SELECT OrderID,NULL AS ProductID,SUM(Quantity) AS TOTAL FROM [Order Details]

    GROUP BY
    OrderID
    UNION ALL

    SELECT NULL AS OrderID,ProductID,SUM(Quantity) AS TOTAL FROM [Order Details]
    GROUP BY ProductID

    在SQL Server 2008后,可改成如下的写法:

    SELECT OrderID,ProductID,SUM(Quantity) AS TOTAL
    FROM dbo.[Order Details]

    GROUP BY GROUPING SETS ((OrderID), (ProductID))

     变更数据追踪

    当两个系统间同步数据时,若想渐进递增地更新数据,则需要辨识某段期限内,那些数据有变更。SQL Server 2008提供

    Change Tracking:同步追踪数据变化。数据表必须有主键,当以 DML 更新数据时,SQL Server 会自动记录变更数据的主键。

    Changing Data Capture(CDC):非同步追踪数据变化。通过 Log Reader 代理程序读出交易记录,并将结果放入到系统自动建立的数据表。

    强化SQL Server 2008 Management Studio 内T-SQL编辑功能

    自动完成文字(IntelliSense)、语句正确性检查:对编写T-SQL表达式和code review都大有帮助

    单步除错T-SQL:可除错批次语句、预存程序、函数、触发程序等。

    组态服务器:同时对多台服务器执行T-SQL语句。

    在物件总管详细资料视窗可以直接搜寻插件。

    整合Powershell:便于 Windows管理代码与 SQL Server 管理插件(SMO),乃至于各种 .NET 和 COM 插件。

    另外,也针对既有功能持续增强,例如:

    整合的全文检索:全文检索索引存储在数据库内,以提供更为紧密的备份/还原和安全控管。

    XML:

    XQuery 支持 let 语句。
    扩展XSD Schema的定义

    強化 SQL CLR:

    SQL 2005 版本时,使用者自定义数据形态/使用者自定义总函数最大可到8000 位元组,2008 则扩大到 2 G。

    使用者自定义总函数可以有多重参数输入。

    可通过DDL定义使用者自定义函数回传的值已经排序过,省掉SQL Server数据引擎重新排序回传值。

    Service Broker:

    增加信息的优先顺序。

    新增SSBDiagnose 工具程序式验证 Service Broker 设定的正确性。。

    除了上述各大项外,SQL 2008 还有许多功能,如:Plan Freezing、Star Join 最佳化、强化数据表分割技术使用多执行簇的效率等等,在此无法一一细说。经历了 SQL Server 2005 版本大幅变革的阵痛后,微软继续推出的 2008 版是成为更成熟与全面性的产品。搭配新的 .NET 开发工具与环境,将可提供更加坚固有效的应用程序平台。

  • 相关阅读:
    face_recognition人脸识别框架
    POJ 3260 The Fewest Coins(多重背包问题, 找零问题, 二次DP)
    POJ 2392 Space Elevator(多重背包变形)
    POJ 1014 Dividing(多重背包, 倍增优化)
    POJ 1384 Piggy-Bank(完全背包)
    POJ 2063 Investment(完全背包)
    POJ 3211 Washing Cloths(01背包变形)
    POJ 1837 Balance(01背包变形, 枚举DP)
    POJ 2923 Relocation(01背包变形, 状态压缩DP)
    POJ 1243 One Person
  • 原文地址:https://www.cnblogs.com/huacw/p/2193163.html
Copyright © 2011-2022 走看看