淺談Transact-SQL
Transact-SQL(又稱T-SQL),是在MicrosoftSQLServer和SybaseSQLServer上的ANSISQL實現(xiàn),與Oracle的PL/SQL性質相近(不只是實現(xiàn)ANSISQL,也為自身數據庫系統(tǒng)的特性提供實現(xiàn)支持),目前在MicrosoftSQLServer和SybaseAdaptiveServer中仍然被使用為核心的查詢語言。
Transact-SQL是具有批量與區(qū)塊特性的SQL指令集合,數據庫開發(fā)人員可以利用它來撰寫數據部份的商業(yè)邏輯(Data-basedBusinessLogic),以強制限制前端應用程序對數據的控制能力。同時,它也是數據庫對象的主要開發(fā)語言。
語言結構
Transact-SQL以ANSISQL為主要組成,目前Microsoft實現(xiàn)的Transact-SQL可支持到ANSISQL-92標準。
ANSISQL基礎語法支持
DDL
主條目:數據定義語言
DDL(DataDefinitionLanguage)是對于數據庫對象的控制語法,對數據庫對象(如數據表,預存程序,函數或自定義類型等)的新增,修改和刪除都使用此語法。
CREATE(創(chuàng)建數據庫對象)ALTER(修改數據庫對象)DROP(刪除數據庫對象)
DML
主條目:數據操縱語言
DML(DataManipulationLanguage)是一般開發(fā)人員俗稱的CRUD(Create/Retrieve/Update/Delete)功能,意指數據的新增/截?。薷模瘎h除四個功能。
SELECT(R)INSERT(C)UPDATE(U)DELETE(D)
DCL
主條目:數據控制語言
DCL(DataControlLanguage)是由數據庫所提供的保安功能,對于數據庫與數據庫對象的訪問原則與權限,都由DCL定義之。
GRANT(賦與權限)REVOKE(撤消權限)批量
Transact-SQL可以使用分號";"來分區(qū)不同的SQL指令。例如:
INSERTINTOmyTable(myText)VALUES(@myText);SELECT@@IDENTITY
控制流語法
Transact-SQL可支持下列的控制流程語法(control-flow):
BEGIN...END,標示SQL指令區(qū)塊,使用BEGIN...END包裝的指令會被視為同一個指令區(qū)塊。IF...ELSE的條件式,并可支持嵌套式的IF判斷式,若IF或ELSE中的指令包含兩個以上,則必須要使用BEGIN...END來標示區(qū)塊,否則會發(fā)生語法檢查錯誤。WHILE循環(huán),這也是Transact-SQL中唯一支持的循環(huán),循環(huán)中的指令要用BEGIN...END包裝。RETURN,可強制終止區(qū)塊的運行。WAITFOR,可強制讓陳述式等待指定時間后才繼續(xù)運行。GOTO,可導向運行指令到指定的位置。自定義變量
在Transact-SQL中,可以利用DECLARE來聲明變量,用SET來設置變量值,用SELECT@var=column的方式,由一個陳述式的回傳值中來取得變量值。
DECLARE@vINT--declareavariableSET@v=50--setvariabledirectly.SELECT@v=SUM(Qty)FROMSaleItemRecordsWHERESaleID=53928--setvariablefromaresultofstatement
錯誤處理
Transact-SQL可以在區(qū)塊中使用下列方式來處理或引發(fā)錯誤:
RAISERROR,擲出自定義的錯誤狀況。TRY...CATCH,使用結構化的方式來處理錯誤(只有MicrosoftSQLServer實現(xiàn)的Transact-SQL支持)。PRINT,可以印出變量值。
微軟Transact-sql介紹地址:http://msdn.microsoft.com/zh-cn/library/bb510741.aspx
版權聲明:本站文章來源標注為YINGSOO的內容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網站,禁止在非maisonbaluchon.cn所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內容來源于網友推薦、互聯(lián)網收集整理而來,僅供學習參考,不代表本站立場,如有內容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。
關注官方微信