SQL Server 2005相对于SQL Server 2000改进很大,有些还是非常实用的。

举几个例子来简单说明 这些例子我引用了Northwind库。

1. TOP 表达式 
SQL Server 2000的TOP是个固定值,是不是觉得不爽,现在改进了,可以使用表达式。

--前n名的订单
declare @n int  
set @n = 10  
select TOP(@n) * from Orders

--sql2005之间噢能够可以使用下面的写法,但估计没人这样使用

--select top(15/3) from orders

2. 分页 
不知各位过去用SQL Server 2000是怎么分页的,大多都用到了临时表。SQL Server 2005一句话就支持分页,性能据说也非常不错。

--按Freight从小到大排序,求20到30行的结果  
select * from(  
    select OrderId, Freight, ROW_NUMBER() OVER(order by Freight) as row from Orders  
) a  
where row between 20 and 30

3. 排名 

select * from(  
    select OrderId, Freight, RANK() OVER(order by Freight) as rank from Orders  
) a  
where rank between 20 and 30

  • Rank() over()----------结果:1,1,3格式
  • Dense_Rank() over()----结果:1,1,2,2格式
  • Row_Number() over()----结果:1,2,3,4
  • Ntile(3) over()--------结果:按3等进行划分

4. try ... catch

SET XACT_ABORT ON  -- 打开 try功能  
BEGIN TRY  
    begin tran  
        )  
    commit tran  
    print 'commited'  
END TRY  
BEGIN
 CATCH  
    rollback     
    print 'rolled back'  
END CATCH

5. 通用表表达式CTE 
通过表达式可免除你过去创建临时表的麻烦。

--例子:结合通用表达式进行分页

;WITH OrderFreight AS(  
    select OrderId, Freight, ROW_NUMBER() OVER(order by Freight) as row from Orders  
)  

特别,通用表表达式还支持递归。SQL Server CET 通用表表达式 之 精典递归

6.OUTPUT关键字

--定义一个表级变量,所有字段(包括自增长字段)都要定义
declare @InsertDetails Table
(
 CustomerID int,
 CustomerName nvarchar(50)
)
insert into customer output inserted.CustomerID ,inserted.CustomerName into
@Insertdetails
values('This is a test of putput keyword.')
select * from @insertdetails

--封装成存储过程

alert proc tt
(
 @customerID nvarchar(50)
)
as 
begin
 declare @InsertDetails Table
 (
  CustomerID int,
  CustomerName nvarchar(50)
 )

insert into customer output inserted.CustomerID ,inserted.CustomerName into
 @Insertdetails
 values(@customerID)
select * from @insertdetails
end

--调用存储过程:
tt 'Hello everyone'

7. 直接发布Web Service 
想要把store procedure变成Web Service就用这个吧,.NET, IIS都不需要,通过Windows 2003的HTTP Protocol Stack直接发布WebService,用这个功能需要Windows 2003 sp1

--DataSet CustOrdersOrders(string customerID)  
CREATE ENDPOINT Orders_Endpoint  
state=started  
as http(  
    path='/sql/orders',  
    AUTHENTICATION=(INTEGRATED),  
    ports=(clear)  
)  
for soap(  
    WebMethod 'CustOrdersOrders'(    
        name='Northwind.dbo.CustOrdersOrders'  
    ),  
     
    wsdl=default,  
    database='Northwind',  
    namespace='http://mysite.org/'  
)

Web Service就发布好了,敲入http://localhost/sql/orders?wsdl得到wsdl

待续...

SQL Server 2005的几个新功能的更多相关文章

  1. 修改SQL Server 2005 数据库文件名字

    对于SQLServer 2005的数据库文件名字的修改.不多说,见图: 对于数据库名的更改直接选中要修改的数据库,F2,你懂的,不懂的可以去屎了.....0.0 下面要修改数据库的文件名 原理就是利用 ...

  2. SQL Server 2005 版本的操作系统兼容性详细列表

    操作系统要求(32 位) 此表显示对于每种 32 位版本的 SQL Server 2005,操作系统是否可以运行其服务器软件. 有关如何在 Windows Server 2008 上安装 SQL Se ...

  3. SQL Server 2005中的CHECKSUM功能

    原文:SQL Server 2005中的CHECKSUM功能 转自此处 页面 checksum 是SQL2005的新功能,提供了一种比残缺页检测强大的机制检测IO方面的损坏.以下是详细描述: 页面 C ...

  4. 使用SQL Server 2005 新的语法ROW_NUMBER()进行分页的两种不同方式的性能比较

    相比在SQL Server 2000 中使用的分页方式,在SQL Server 2005中使用新的语法ROW_NUMBER()来分页效率要高出很多,但是很多人在使用ROW_NUMBER()这种分页方式 ...

  5. SQL SERVER 2005/2008 中关于架构的理解(二)

    本文上接SQL SERVER 2005/2008 中关于架构的理解(一)      架构的作用与示例 用户与架构(schema)分开,让数据库内各对象不再绑在某个用户账号上,可以解决SQL SERVE ...

  6. SQL Server 2005 Service Broker

    一.引言 SQL Server 2005 的一个主要成就是可以实现可靠.可扩展且功能完善的数据库应用程序.与 .NET Framework 2.0 公共语言运行库 (CLR) 的集成使开发人员可以将重 ...

  7. Access数据库导入到SQL Server 2005 Express中

    安装好SQL Server 2005 Express后,再安装SQL Server Management Studio Express CTP就可以很方便的使用控制台进行数据库的管理.但SQL Ser ...

  8. SQL SERVER 2005快捷键+visual studio 2008 快捷键

    一.SQL SERVER 2005快捷键  快捷键                                       功能           CTRL       +       SHIF ...

  9. SQL Server 2005的XML数据修改语言(XML DML)

    转:http://www.microsoft.com/china/msdn/library/data/sqlserver/XMLDML.mspx?mfr=true 作为对XQuery语言的扩展,XML ...

随机推荐

  1. AWS 基础设施即代码(五)

    基础设施即代码 概述 手动配置的挑战:可能因为人为错误导致缺乏可靠性,环境无法完全再现,同时需要额外文档 基础设施即代码,是软件开发中用于创建可重用.可维护.可扩展及可测试基础设施的技术.实践和工具, ...

  2. 雨幕——RainCurtian

    今天19年10月14日,也不算是个什么特别的日子.不多能让我的这一天变得特殊的,或许就是在今天我开通了我的第一个博客吧.细想过来每一天都是那么的相似,不过是因为有了某些事情,才变得特殊起来,比如新生命 ...

  3. 常见问题:MySQL/排序

    MySQL的排序分为两种,通过排序操作和按索引扫描排序. 按索引顺序扫描是一种很高效的方式,但使用的条件较为严格,只有orderby语句使用索引最左前列,或where语句与orderby语句条件列组合 ...

  4. django2.x报错No module named 'django.core.urlresolvers'

    解决方法如下 from django.urls import reverse 最近从django1.9迁移到django2.0中出现一个意外的报错: No module named 'django.c ...

  5. 路由(Routing)

    路由(Routing)  ASP.NET Core MVC 路由是建立在ASP.NET Core 路由的,一项强大的URL映射组件,它可以构建具有理解和搜索网址的应用程序.这使得我们可以自定义应用程序 ...

  6. jQuery插件——imgbox(点击图片查看大图)

    需要的资源: 需要对应的js代码和css样式,大家可以通过www.htmldrive.net平台下载,也可以在我文章的底部下载.对应的资源如下,将资源引入页面(别忘了JQuery): 注意:jQuer ...

  7. KVM虚拟机两种配置的概念不同之处

    KVM虚拟机配置的两种方式之间的不同之处 NAT方式 NAT模式中,让虚拟机借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网. NAT模式中,虚拟机的网卡和物理网卡的网络,不在同一个网 ...

  8. CentOS 安装tab命令补全

    CentOS 安装tab命令补全 1. 安装epel 源 yum -y install epel-release 2. 加快yum速度 yum -y install yum-plugin-fastes ...

  9. Java基础笔试练习(五)

    1.以下关于Integer与int的区别错误的是? A.int是java提供的8种原始数据类型之一 B.Integer是java为int提供的封装类 C.int的默认值为0 D.Integer的默认值 ...

  10. AVR单片机教程——开发板介绍

    本教程使用EasyElectronics开发板: EasyElectronics是一款基于AVR单片机的开发板.AVR单片机是基于改进的哈佛架构.8~32位的一系列RISC微控制器,最初由Atmel公 ...