当前位置: 首页 > news >正文

品味SQL Server 2005的几个新功能

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

  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

  4. try ... catch

  SQL Server 2000没有异常,T-SQL必须逐行检查错误代码,对于习惯了try catch程序员,2005是不是更加亲切:

SET XACT_ABORT ON -- 打开 try功能
BEGIN TRY
begin tran
insert into Orders(CustomerId) values(-1)
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
)
select OrderId, Freight from OrderFreight where row between 10 and 20

  特别,通过表达式还支持递归。

  6. 直接发布 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/'
)

  

SQL Server2005为开发可升级的数据库应用软件,提供了新的语言功能。这些增强的性能包括处理错误、递归查询功能、关系运算符PIVOT,APPLY,ROW_NUMBER和其他数据列排行功能

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 金数据从excel导入时间数据会出错_网易严选数据产品实践
  • 基于Java Socket的文件UpLoad代码(完美版)-用递归解决java的目录树遍历
  • python变量定义是什么意思_抽象理解python中变量的定义过程
  • 游标的应用
  • kaggle比赛_由kaggle的一个失败的比赛引出一个CVR的小问题
  • 存储过程
  • 启动子级时出错_买面粉不能只看价格,看准包装上这两点,买面粉不出错
  • C语言中嵌入式SQL语句
  • php编译成二进制文件_基础为零?如何将 C++ 编译成 WebAssembly
  • 履带机器人运动控制器c++_PAL Robotics借助磁编码器技术实现机器人运动平衡
  • css 背景图怎么设置自动填充满_几种常见的CSS布局,新手一定要学学
  • 关于存储过程的一些tips
  • python判断文件读取结束_python中readline判断文件读取结束的方法
  • Memory Notification: Library Cache Object loaded into SGA
  • 加密机工作原理_观健电解水机工作原理是什么 电解水机工作原理【介绍】
  • Python_网络编程
  • SpiderData 2019年2月25日 DApp数据排行榜
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • 大整数乘法-表格法
  • 多线程 start 和 run 方法到底有什么区别?
  • 简析gRPC client 连接管理
  • 前端
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 我感觉这是史上最牛的防sql注入方法类
  • 你对linux中grep命令知道多少?
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • ​什么是bug?bug的源头在哪里?
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (0)Nginx 功能特性
  • (02)vite环境变量配置
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (4)logging(日志模块)
  • (附源码)c#+winform实现远程开机(广域网可用)
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)scrum常见工具列表
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .net和php怎么连接,php和apache之间如何连接
  • .Net环境下的缓存技术介绍
  • .net开发日常笔记(持续更新)
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .NET中winform传递参数至Url并获得返回值或文件
  • @RequestBody与@ResponseBody的使用
  • [12] 使用 CUDA 加速排序算法
  • [23] 4K4D: Real-Time 4D View Synthesis at 4K Resolution
  • [④ADRV902x]: Digital Filter Configuration(发射端)
  • [Algorithm][动态规划][01背包问题][目标和][最后一块石头的重量Ⅱ]详细讲解
  • [Android实例] 保持屏幕长亮的两种方法 [转]
  • [C++]18:set和map的使用
  • [C++]入门基础(1)
  • [c++刷题]贪心算法.N01
  • [CCIE历程]CCIE # 20604