淺談Transact-SQL
Transact-SQL(又稱T-SQL),是在Microsoft SQL Server和Sybase SQL Server上的ANSI SQL實(shí)現(xiàn),與Oracle的PL/SQL性質(zhì)相近(不只是實(shí)現(xiàn)ANSI SQL,也為自身數(shù)據(jù)庫系統(tǒng)的特性提供實(shí)現(xiàn)支持),目前在Microsoft SQL Server和Sybase Adaptive Server中仍然被使用為核心的查詢語言。
Transact-SQL是具有批量與區(qū)塊特性的SQL指令集合,數(shù)據(jù)庫開發(fā)人員可以利用它來撰寫數(shù)據(jù)部份的商業(yè)邏輯(Data-based Business Logic),以強(qiáng)制限制前端應(yīng)用程序?qū)?shù)據(jù)的控制能力。同時(shí),它也是數(shù)據(jù)庫對(duì)象的主要開發(fā)語言。
語言結(jié)構(gòu)
Transact-SQL以ANSI SQL為主要組成,目前Microsoft實(shí)現(xiàn)的Transact-SQL可支持到ANSI SQL-92標(biāo)準(zhǔn)。
ANSI SQL基礎(chǔ)語法支持
DDL
主條目:數(shù)據(jù)定義語言
DDL(Data Definition Language)是對(duì)于數(shù)據(jù)庫對(duì)象的控制語法,對(duì)數(shù)據(jù)庫對(duì)象(如數(shù)據(jù)表,預(yù)存程序,函數(shù)或自定義類型等)的新增,修改和刪除都使用此語法。
CREATE(創(chuàng)建數(shù)據(jù)庫對(duì)象)ALTER(修改數(shù)據(jù)庫對(duì)象)DROP(刪除數(shù)據(jù)庫對(duì)象)
DML
主條目:數(shù)據(jù)操縱語言
DML(Data Manipulation Language)是一般開發(fā)人員俗稱的CRUD(Create/Retrieve/Update/Delete)功能,意指數(shù)據(jù)的新增/截取/修改/刪除四個(gè)功能。
SELECT(R)INSERT(C)UPDATE(U)DELETE(D)
DCL
主條目:數(shù)據(jù)控制語言
DCL(Data Control Language)是由數(shù)據(jù)庫所提供的保安功能,對(duì)于數(shù)據(jù)庫與數(shù)據(jù)庫對(duì)象的訪問原則與權(quán)限,都由DCL定義之。
GRANT(賦與權(quán)限)REVOKE(撤消權(quán)限)批量
Transact-SQL可以使用分號(hào)";"來分區(qū)不同的SQL指令。例如:
INSERT INTO myTable (myText) VALUES (@myText); SELECT @@IDENTITY
控制流語法
Transact-SQL可支持下列的控制流程語法(control-flow):
BEGIN ... END,標(biāo)示SQL指令區(qū)塊,使用BEGIN ... END包裝的指令會(huì)被視為同一個(gè)指令區(qū)塊。IF ... ELSE的條件式,并可支持嵌套式的IF判斷式,若IF或ELSE中的指令包含兩個(gè)以上,則必須要使用BEGIN ... END來標(biāo)示區(qū)塊,否則會(huì)發(fā)生語法檢查錯(cuò)誤。WHILE循環(huán),這也是Transact-SQL中唯一支持的循環(huán),循環(huán)中的指令要用BEGIN...END包裝。RETURN,可強(qiáng)制終止區(qū)塊的運(yùn)行。WAITFOR,可強(qiáng)制讓陳述式等待指定時(shí)間后才繼續(xù)運(yùn)行。GOTO,可導(dǎo)向運(yùn)行指令到指定的位置。自定義變量
在Transact-SQL中,可以利用DECLARE來聲明變量,用SET來設(shè)置變量值,用SELECT @var = column的方式,由一個(gè)陳述式的回傳值中來取得變量值。
DECLARE @v INT -- declare a variableSET @v = 50 -- set variable directly.SELECT @v = SUM(Qty) FROM SaleItemRecords WHERE SaleID = 53928 -- set variable from a result of statement
錯(cuò)誤處理
Transact-SQL可以在區(qū)塊中使用下列方式來處理或引發(fā)錯(cuò)誤:
RAISERROR,擲出自定義的錯(cuò)誤狀況。TRY ... CATCH,使用結(jié)構(gòu)化的方式來處理錯(cuò)誤(只有Microsoft SQL Server實(shí)現(xiàn)的Transact-SQL支持)。PRINT,可以印出變量值。
微軟Transact-sql介紹地址:http://msdn.microsoft.com/zh-cn/library/bb510741.aspx
相關(guān)文章
sql not in 與not exists使用中的細(xì)微差別
用的時(shí)候我們只注重查詢的效率,但卻往往會(huì)忽略一下比較細(xì)小的區(qū)別2013-02-02
詳解SQL Server表和索引存儲(chǔ)結(jié)構(gòu)
這篇文章主要介紹了詳解SQL Server表和索引存儲(chǔ)結(jié)構(gòu),有助于大家對(duì)SQL存儲(chǔ)方式有深入的理解,參考學(xué)習(xí)下吧。2017-11-11
sqlserver主鍵設(shè)計(jì)的注意點(diǎn)
在數(shù)據(jù)庫設(shè)計(jì)中,主鍵用于惟一地標(biāo)識(shí)表中的某一條記錄2012-07-07
sql中 order by 和 group by的區(qū)別
這篇文章主要介紹了sql中 order by 和 group by的區(qū)別的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-11-11
向數(shù)據(jù)庫中插入數(shù)據(jù)并返回當(dāng)前插入的行數(shù)及全局變量@@IDENTITY應(yīng)用
向數(shù)據(jù)庫中插入數(shù)據(jù)并返回當(dāng)前插入的的行數(shù),這項(xiàng)功能很實(shí)用的可以判斷是否為批量插入主要是利用全局變量@@IDENTITY實(shí)現(xiàn),感興趣的朋友可以了解下啊,希望本文對(duì)你鞏固sql知識(shí)很有幫助的2013-01-01
sqlserver中求字符串中漢字的個(gè)數(shù)的sql語句
sqlserver中求字符串中漢字的個(gè)數(shù)的sql語句,需要的朋友可以參考下2012-05-05

