SQL Server 2005中的T-SQL
2008-09-04 10:00:47 来源:WEB开发网简介
将于12月份发布的SQL Server 2005目前正处于准备阶段,最近,我研究了一份对Edgewood Solutions客户进行的调查,调查中询问他们认为什么是微软的新发布的数据库中最有价值的特性。一个不分职位、行业、公司规模和从业时间的常见回答就是加强的T-SQL。这些发现可以作为以下有关Transact-SQL编程扩展的贴士的基础。
错误处理:TRY 和CATCH
将行转换为列:PIVOT 和UNPIVOT
XML改进
贴士1:用TRY和CATCH进行错误处理
自带的错误处理是T-SQL经常被用来与其他语言进行比较的缺点。SQL Server 2005引入了TRY和CATCH,与其他许多数据库一样。通过使用这种许多开发人员和数据库管理员都熟悉的方式来进行错误处理将大大提高对SQL Server的信心。
BEGINTRY
select1/0;
ENDTRY
BEGINCATCH
select
ERROR_NUMBER()ASErrorNumber,
ERROR_SEVERITY()ASErrorSeverity,
ERROR_STATE()ASErrorState,
ERROR_PROCEDURE()ASErrorProcedure,
ERROR_LINE()ASErrorLine,
ERROR_MESSAGE()ASErrorMessage;
ENDCATCH;
通过PIVOT 和UNPIVOT将行转换为列
一位在保健公司上班的开发人员每当她的报告用户想要将行转换为列的时候,抱怨不止。这并不是一次良好的会话。她不得不编写一些需要执行好多个CPU周期的复杂的代码来给用户提供他们想要的数据,对这些数据的要求是在正式报告需求基础之上产生的。这些痛苦的会话在SQL Server 2005引入PIVOT和UNPIVOT命令之前是常见的事。这两个命令可以在几乎不需要修改代码的情况下快速地将行转换为列或者由列转换为行。
USEAdventureWorks;
GO
selectVendorID,[164]ASEmp1,[198]ASEmp2,[223]ASEmp3,[231]ASEmp4,[233]ASEmp5
FROM
(selectPurchaseOrderID,EmployeeID,VendorID
FROMPurchasing.PurchaseOrderHeader)p
PIVOT
(
count(PurchaseOrderID)
FOREmployeeIDIN
([164],[198],[223],[231],[233])
)ASpvt
ORDERBYVendorID
资源: 使用 PIVOT 和UNPIVOT, SQL Server 2005 在线书籍:ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/udb9/html/24ba54fc-98f7-4d35-8881-b5158aac1d66.htm
改进的XML
XML普遍应用在通过许多异构的环境进行数据传输和在许多微软的应用程序之间传输数据上;SQL Server 2005 XML特性改善了创建、存储、传输和查询XML数据的内在能力。现在可以在SQL Server中自然地完成如下:
创建一个可以被表的某列引用的XML计划
create XML SCHEMA COLLECTION [ . ]sql_identifier AS Expression
为一个表创建一个本地的数据类型,这个表在创建的时候具有指向XML计划集合的指针,同时这个表放在与基本表不同的数据页上,就像SQL Server 2000中的BLOB。
createTABLEOrders
(OrderIDintPRIMARYKEYNOTNULL,
OrderDetailsIDintNOTNULL,
OrderDatedatetimeNOTNULL,
…
XMLOrderxmlNOTNULL)
为存储过程或者特别的事务创建一个变量作为XML数据类型
DECLARE @OrdersSchema xml
…
create XML SCHEMA COLLECTION OrdersSchema AS @OrdersSchema
通过创建主要和第二索引来提高对XML数据访问的速度
createPRIMARYXMLINDEXPXML_Orders_OrderID
ONOrdersSchema.Orders(OrderID);
GO
createXMLINDEXSXML_Order_OrderDetailsID
ONOrdersSchema.Orders(OrderDetailsID)
USINGXMLINDEXPXML_Orders_OrderIDFORPATH;
GO
通过一个简单的select语句来查询XML数据,将XML作为结果集的一部分,与表中余下的字段一起返回。
select*
FROMOrders
whereOrderID=123
结论
SQL Server 2005中的T-SQL通过扩展传统关系型数据库管理系统获得了长足的进步。以上描述的各项只是冰山一角,T-SQL还有其他方面的提高,检查DTS——现在是SQL Server集成服务,分析服务,报告服务等。这些都是有挑战性的,然而令人兴奋的是,了解SQL Server所有这些新功能的日子不远了。
- ››SQL Server 2008 R2 下如何清理数据库日志文件
- ››sqlite 存取中文的解决方法
- ››SQL2005、2008、2000 清空删除日志
- ››SQL Server 2005和SQL Server 2000数据的相互导入...
- ››sql server 2008 在安装了活动目录以后无法启动服...
- ››sqlserver 每30分自动生成一次
- ››sqlite 数据库 对 BOOL型 数据的插入处理正确用法...
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
更多精彩
赞助商链接