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