程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server 2005中的T-SQL

SQL Server 2005中的T-SQL

編輯:關於SqlServer

簡介

最近,我研究了一份對Edgewood Solutions客戶進行的調查,調查中詢問他們認為什麼是微軟的新發布的數據庫中最有價值的特性。一個不分職位、行業、公司規模和從業時間的常見回答就是加強的T-SQL。這些發現可以作為以下有關Transact-SQL編程擴展的貼士的基礎。

錯誤處理:TRY 和CATCH

將行轉換為列:PIVOT 和UNPIVOT

XML改進

貼士1:用TRY和CATCH進行錯誤處理

自帶的錯誤處理是T-SQL經常被用來與其他語言進行比較的缺點。SQL Server 2005引入了TRY和CATCH,與其他許多數據庫一樣。通過使用這種許多開發人員和數據庫管理員都熟悉的方式來進行錯誤處理將大大提高對SQL Server的信心。

BEGIN TRY

SELECT 1/0;

END TRY

BEGIN CATCH

SELECT

ERROR_NUMBER() AS ErrorNumber,

ERROR_SEVERITY() AS ErrorSeverity,

ERROR_STATE() AS ErrorState,

ERROR_PROCEDURE() AS ErrorProcedure,

ERROR_LINE() AS ErrorLine,

ERROR_MESSAGE() AS ErrorMessage;

END CATCH;

通過PIVOT 和UNPIVOT將行轉換為列

一位在保健公司上班的開發人員每當她的報告用戶想要將行轉換為列的時候,抱怨不止。這並不是一次良好的會話。她不得不編寫一些需要執行好多個CPU周期的復雜的代碼來給用戶提供他們想要的數據,對這些數據的要求是在正式報告需求基礎之上產生的。這些痛苦的會話在SQL Server 2005引入PIVOT和UNPIVOT命令之前是常見的事。這兩個命令可以在幾乎不需要修改代碼的情況下快速地將行轉換為列或者由列轉換為行。

USE AdventureWorks;

GO

SELECT VendorID, [164] AS Emp1, [198] AS Emp2, [223] AS Emp3, [231] AS Emp4, [233] AS Emp5

FROM

(SELECT PurchaSEOrderID, EmployeeID, VendorID

FROM Purchasing.PurchaSEOrderHeader) p

PIVOT

(

COUNT (PurchaSEOrderID)

FOR EmployeeID IN

( [164], [198], [223], [231], [233] )

) AS pvt

ORDER BY VendorID

資源: 使用 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。

CREATE TABLE Orders

(OrderID int PRIMARY KEY NOT NULL,

OrderDetailsID int NOT NULL,

OrderDate datetime NOT NULL,

XMLOrder XML NOT NULL)

為存儲過程或者特別的事務創建一個變量作為XML數據類型

DECLARE @OrdersSchema XML

CREATE XML SCHEMA COLLECTION OrdersSchema AS @OrdersSchema

通過創建主要和第二索引來提高對XML數據訪問的速度

CREATE PRIMARY XML INDEX PXML_Orders_OrderID

ON OrdersSchema.Orders (OrderID);

GO

CREATE XML INDEX SXML_Order_OrderDetailsID

ON OrdersSchema.Orders (OrderDetailsID)

USING XML INDEX PXML_Orders_OrderID FOR PATH ;

GO

通過一個簡單的SELECT語句來查詢XML數據,將XML作為結果集的一部分,與表中余下的字段一起返回。

SELECT *

FROM Orders

WHERE OrderID = 123

結論

SQL Server 2005中的T-SQL通過擴展傳統關系型數據庫管理系統獲得了長足的進步。以上描述的各項只是冰山一角,T-SQL還有其他方面的提高,檢查DTS——現在是SQL Server集成服務,分析服務,報告服務等。這些都是有挑戰性的,然而令人興奮的是,了解SQL Server所有這些新功能的日子不遠了。



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved