SQL Server 2005改进后的几个实用新特性

作者:卢兆林 来源:赛迪网 时间:2008-05-07 19:16:00 

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 

特别之处:通过表达式还可以支持递归。

标签:SQL,Server,2005,sql,数据库
0
投稿

猜你喜欢

  • MySQL之批量插入的4种方案总结

    2024-01-19 16:13:11
  • Bootstrap响应式侧边栏改进版

    2023-08-17 02:26:10
  • Python与人工神经网络:使用神经网络识别手写图像介绍

    2022-05-23 03:11:36
  • django settings.py 配置文件及介绍

    2022-01-17 12:52:44
  • Python+selenium实现自动循环扔QQ邮箱漂流瓶

    2021-07-12 23:46:28
  • 详解Angular之constructor和ngOnInit差异及适用场景

    2024-05-11 09:18:16
  • vue生成随机验证码的示例代码

    2023-07-02 16:57:09
  • GO语言常用的文件读取方式

    2024-05-21 10:21:30
  • python使用多线程不断刷新网页的方法

    2022-10-03 09:19:26
  • Mootools 1.2教程(8)——输入过滤第一部分(数字)

    2008-11-27 13:01:00
  • python中OrderedDict的使用方法详解

    2023-08-26 14:00:40
  • 举例讲解Python中的算数运算符的用法

    2022-03-30 22:14:49
  • python多线程http压力测试脚本

    2022-12-31 16:48:37
  • Sphinx生成python文档示例图文解析

    2022-06-07 23:35:50
  • python并发编程多进程之守护进程原理解析

    2023-09-13 14:07:42
  • Python MD5加密实例详解

    2021-10-24 20:31:26
  • 理解Vue2.x和Vue3.x自定义指令用法及钩子函数原理

    2024-05-28 15:46:41
  • Python3 Random模块代码详解

    2023-04-11 01:36:20
  • python实现linux下抓包并存库功能

    2022-12-23 20:22:06
  • django foreignkey(外键)的实现

    2023-03-15 17:35:51
  • asp之家 网络编程 m.aspxhome.com