SQL Server 2008数据引擎的新功能

概述

  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))

转载于:https://www.cnblogs.com/Dionpan/archive/2009/03/01/1400839.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值