关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » SQL Server »SQL Server 2008之新版CTP特性大盘点

    SQL Server 2008之新版CTP特性大盘点

    2010-06-29 17:38:00 出处:ITJS
    分享

    此文章主要向大家讲述的是SQL Server 2008之新版CTP特性,首先,你必须要注意的介入你所安装的是Microsoft SQL Server 2008 July CTP,在你的机子上就不能安装有SQL Server 2000。

    与SQL Server 2005的安装过程相比,Microsoft SQL Server 2008 July CTP的安装过程会非常的正常。屏幕看上去会显的非常简单。假如要安装覆盖一个先前的CTP版本,比必须先要卸载先前的版本。The July CTP不会升级一个先前的版本。

    在SQL Server 2008中的新的数据类型

    这个版本的Microsoft SQL Server 2008包括了一些我们可以开发的新的数据类型。这些数据类型包括DATE和TIME数据类型。Microsoft同时也包括了HierarchyID系统数据类型。

    在T-SQL 中DATE和TIME数据类型允许按照你的需要仅仅只存储部分datetime数据类型。在Microsoft SQL Server的先前的版本中,存储和获取仅仅是日期和时间需要你同时存储日期和时间值,通过使用一个转化函数来去除你不需要的部分。DATE系统数据类型仅仅存储日期,并且TIME系统数据类型仅仅存储时间。使用DATE和TIME系统数据类型就像使用datetime系统数据类型一样。

    在第一个例子当中,你使用新的数据类型申明了你的变量并且简单的用getdate()函数的返回值设定了变量的值。就像下面显示的其他的时间数据类型一样,time数据类型支持七位的小数点位精确。

    DECLARE @Dt as DATE, @Tm as TIME set @Dt = getdate() set @Tm = getdate() select @Dt, @Tm 

    在第二个例子中,我们创建了一个表格,并使用了date数据类型创建了一列。接着我们使用getdate()的值设置了一个默认的限制。当我们插入了一条记录并且查询了表格之后,我们看到了DateAdded列的值为今天的日期。

    CREATE TABLE dbo.Table_1 ( RecordID int NOT NULL, DateAdded date NULL, DataValue nvarchar(MAX) NULL )>  

    在我们的第三个例子中,我们创建了同样的表格,但是没有默认的限制。当我们增加记录的时候我们只是简单的设置DateAdded列的值为getdate()系统函数的值。使用第二个或者第三个例子的代码,输出结果将会是一样的。

    CREATE TABLE dbo.Table_1 ( RecordID int NOT NULL, DateAdded date NULL, DataValue nvarchar(MAX) NULL )>  

    Microsoft已经加入了一个第三日期系统数据类型。这个第三系统数据类型是datetime2。它就像已经使用了很多年的datetime数据类型一样,但是它要更加准确。当datetime数据类型精确到千分之一秒的时候,它被四舍五入到.000, .003 或者.007秒钟。

    datetime2数据类型精确到100纳秒(七位小数位)。当我们使用datetime2数据类型的时候,你可以通过使用datetime2(n)选择要精确到的小数位,从零到七位。datetime2数据类型的值的设置方法同datetime的设置方法一致。

    DECLARE @Dt as datetime2 set @Dt = getdate() select @Dt 

    在这我们显示了如何控制数据类型的精度。

    DECLARE @Dt as datetime2(4) set @Dt = getdate() select @Dt 

    第四日期系统数据类型已经被加到了datetimeoffset系统数据类型中。这个数据类型在它的输出中包括了从GMT得来的时区偏移。

    declare @Dt as datetimeoffset(3) set @Dt = '2007-07-12 12:17:23.0 +7:00' select @Dt 

    HierarchyID系统数据类型—伴随这一些系统方法—被设计来使得存储,查询,修改更加容易,也使得同层次数据一起工作更加容易。这个新的数据类型被最优化来显示数据树。HierarchyID数据类型支持两种策略来进行索引存储。他们叫做深度优先遍历和广度优先遍历。在深度优先遍历中,在一个单一树中的一些行在索引中被相互之间相互挨着存储。一个原始的图表类型数据,雇员和经理就是一个典型的例子。在广度优先遍历中,SQL Server 2008行被相互之间挨着存储。在雇员/经理例子中,向同样的经理汇报的雇员们被相互之间挨着存储。

    对于HierarchyID数据类型,系统中有一些系统函数和方法与之相联系。有一些像GetLevel(),ParentChildOrg(),DescendantLimit()和GetAncestor()。下面显示了一个简单的经理和雇员之间的父子关系的例子。

    CREATE TABLE Organization ( NodeLevel hierarchyid, EmployeeID int, OrgLevel as NodeLevel.GetLevel(), EmployeeName nvarchar(50) NOT NULL ) ;   GO insert into Organization (NodeLevel, EmployeeID, EmployeeName) values (hierarchyid::GetRoot(),0, 'Bob') go Declare   @Manager hierarchyid SELECT @Manager = hierarchyid::GetRoot() FROM Organization ;  insert into Organization (NodeLevel, EmployeeId, EmployeeName) values (@Manager.GetDescendant(null, null), 1, 'Joe')   go Declare @Manager hierarchyid declare @NodeLevel hierarchyid select   @NodeLevelNodeLevel = NodeLevel from Organization where EmployeeName = 'Joe' SELECT @Manager = max(NodeLevel)   FROM Organization where NodeLevel.GetAncestor(1) = @NodeLevel insert into Organization (NodeLevel, EmployeeID, EmployeeName)   values (@NodeLevel.GetDescendant(@Manager, null),2, 'Sarah') go select NodeLevel.ToString()as NodeLevel_String,  * FROM Organization go drop table Organization go  

    Select语句的输出就像下面一样:

    NodeLevel_StringNodeLevelEmployeeIDOrgLevelEmployeeName /0x00Bob /1/0x5811Joe /1/1/0x5AC022Sarah 

    表格变量增进

    当表格变量增进在SQL Server 2008的先前版本中发布的时候,他们又值得被提及了。SQL Server 2008现在支持表格变量作为存储过程的输入参数。这需要在表格变量声明和存储过程声明中使用一个用户自定义的数据类型。接下来的SQL server内容就是一个基本实现的例子:

    Create a user-defined data type with a single column. Develop a procedure with a table variable as an input parameter.   Declare a table variable of the type of the user defined data type.  Loading 10 records into the table variable and pass the table variable to the stored procedure.   create type tt_example AS TABLE (spid int) go create procedure usp_example   @spids tt_example READONLY AS SELECT * FROM @spids GO declare @spids tt_example insert into   @spids select top 10 spid from sys.sysprocesses exec usp_example @spids=@spids  

    变到TEXT, NTEXT 和 IMAGE数据类型

    TEXT, NTEXT 和IMAGE数据类型有一些潜在的变化。在SQL Server 2008中,当数据被写到一个TEXT, NTEXT或者 IMAGE数据类型当中时,假如数据比8000字节少时(对于NTEXT来说是4000字符,对于TEXT和 IMAGE是8000)数据会被存储在行中,假如数据长度比上面提到的限制大的话,数据就被存储在一个单独的数据页中,这很像Microsoft SQL Server 2005和之前的版本对于数据存储的方式。当数据比那些限制大的时候,就需要一个数据指针,这也和先前的版本一样。

    在SQL Server 2008 July CTP和T-SQL数据类型中有很多新的和另人兴奋的变化。尽管还有更加新的和改进的特性会在将来的版本中发布。

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    帝国CMS7.5编辑器上传图片取消宽高的三种方法

    帝国cms如何自动生成缩略图的实现方法

    Windows 12即将到来,将彻底改变人机交互

    帝国CMS 7.5忘记登陆账号密码怎么办?可以phpmyadmin中重置管理员密码

    帝国CMS 7.5 后台编辑器换行,修改回车键br换行为p标签

    Windows 11 版本与 Windows 10比较,新功能一览

    Windows 11激活产品密钥收集及专业版激活方法

    如何从 Windows 11 中完全删除/卸载 OneNote?无解!

    抖音安全与信任开放日:揭秘推荐算法,告别单一标签依赖

    ultraedit编辑器打开文件时,总是提示是否转换为DOS格式,如何关闭?

    IT头条

    华为Pura80系列新机预热,余承东力赞其复杂光线下的视频拍摄实力

    01:28

    阿里千问3开源首战告捷:全球下载破千万,国产AI模型崛起新高度!

    01:22

    DeepSeek R1小版本试升级:网友实测编程能力已达到国际一线水平

    23:15

    NVIDIA 与 Dell 合作,大规模交付 Blackwell AI 系统

    20:52

    Cerebras 以最快的 Llama 4 Maverick 性能引领 LLM 推理竞赛

    20:51

    技术热点

    PHP中的随机性——你觉得自己幸运吗?

    搞定Ubuntu Linux下WPA无线上网

    Java使用内存映射实现大文件的上传

    MySQL安全性指南

    MySQL两项性能的基本测试浅谈

    教您使用UniqueIdentifier选取SQL Server主键

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。