Transact-SQL

维基百科,自由的百科全书
跳转至: 导航搜索

Transact-SQL(又稱 T-SQL),是在 Microsoft SQL ServerSybase SQL Server 上的 ANSI SQL 實作,與 OraclePL/SQL 性質相近(不只是實作 ANSI SQL,也為自身資料庫系統的特性提供實作支援),目前在 Microsoft SQL Server[1] 和 Sybase Adaptive Server[2] 中仍然被使用為核心的查詢語言。

Transact-SQL 是具有批次與區塊特性的 SQL 指令集合,資料庫開發人員可以利用它來撰寫資料部份的商業邏輯 (Data-based Business Logic),以強制限制前端應用程式對資料的控制能力。同時,它也是資料庫物件的主要開發語言。

目录

語言結構 [编辑]

Transact-SQL 以 ANSI SQL 為主要組成,目前 Microsoft 實作的 Transact-SQL 可支援到 ANSI SQL-92 標準。

ANSI SQL 基礎語法支援 [编辑]

DDL

DDL (Data Definition Language) 是對於資料庫物件的控制語法,對資料庫物件(如資料表,預存程序,函數或自訂型別等)的新增,修改和刪除都使用此語法。

  • CREATE(建立資料庫物件)
  • ALTER(修改資料庫物件)
  • DROP(刪除資料庫物件)

DML

DML (Data Manipulation Language) 是一般開發人員俗稱的 CRUD (Create/Retrieve/Update/Delete) 功能,意指資料的新增/擷取/修改/刪除四個功能。

  • SELECT (R)
  • INSERT (C)
  • UPDATE (U)
  • DELETE (D)

DCL

DCL (Data Control Language) 是由資料庫所提供的保安功能,對於資料庫與資料庫物件的存取原則與權限,都由 DCL 定義之。

  • GRANT(賦與權限)
  • REVOKE(撤消權限)

批次 [编辑]

Transact-SQL 可以使用分號 ";" 來分割不同的 SQL 指令。例如:

INSERT INTO myTable (myText) VALUES (@myText); SELECT @@IDENTITY

控制流語法 [编辑]

Transact-SQL 可支援下列的控制流程語法 (control-flow):

  1. BEGIN ... END,標示 SQL 指令區塊,使用 BEGIN ... END 包裝的指令會被視為同一個指令區塊。
  2. IF ... ELSE 的條件式,並可支援巢狀式的 IF 判斷式,若 IF 或 ELSE 中的指令包含兩個以上,則必須要使用 BEGIN ... END 來標示區塊,否則會發生語法檢查錯誤。
  3. WHILE 迴圈,這也是 Transact-SQL 中唯一支援的迴圈,迴圈中的指令要用 BEGIN...END 包裝。
  4. RETURN,可強制終止區塊的執行。
  5. WAITFOR,可強制讓陳述式等待指定時間後才繼續執行。
  6. GOTO,可導向執行指令到指定的位置。

自訂變數 [编辑]

在 Transact-SQL 中,可以利用 DECLARE 來宣告變數,用 SET 來設定變數值,用 SELECT @var = column 的方式,由一個陳述式的回傳值中來取得變數值。

DECLARE @v INT -- declare a variable
SET @v = 50 -- set variable directly.
SELECT @v = SUM(Qty) FROM SaleItemRecords WHERE SaleID = 53928 -- set variable from a result of statement

錯誤處理 [编辑]

Transact-SQL 可以在區塊中使用下列方式來處理或引發錯誤:

  1. RAISERROR,擲出自訂的錯誤狀況。
  2. TRY ... CATCH,使用結構化的方式來處理錯誤(只有 Microsoft SQL Server 實作的 Transact-SQL 支援)。
  3. PRINT,可以印出變數值。


開發與管理工具 [编辑]

Transact-SQL 通常會使用由 SQL Server 或 Adaptive Server 提供的查詢工具,像是:

  • SQL Server Query Analyzer (SQL Server 2000, 7.0, 6.5)
  • SQL Server Management Studio (SQL Server 2008(也可用 Visual Studio), 2005)
  • osql.exe,SQL Server 2000, 7.0 的命令列 SQL 工具。
  • sqlcmd.exe,SQL Server 2005 的命令列 SQL 工具

參考資料 [编辑]


数据库管理系统(DBMS) (查看 · 讨论 · 编辑)

概念
数据库 · 数据模型 · 数据库存储结构英语Database storage structures · 关系 (数据库) · 关系模型 · 分布式数据库 · ACID ( 原子性 · 一致性 · 隔離性 · 持久性 ) · Null值
关系数据库 · 关系代数 · 关系演算 · 元组关系演算 · 域关系演算 · 数据库规范化 · 數據庫完整性 · 實體完整性 · 參照完整性 · 关系数据库管理系统 
主键 · 外键 · 代理键 · 超键 · 候选键 

数据库组件
触发器 · 视图 · 数据库表 · 指标 (数据库) · 事务日志英语Transaction log · 数据库事务 · 并发控制 · 乐观锁 · 悲观锁 · 数据库索引 
存储程序 · 資料庫分割

SQL
分类: 数据查询语言 (DQL) - 資料定義語言 (DDL) - 資料操縱語言 (DML) - 資料控制語言 (DCL)
指令:SELECT · INSERT · UPDATE · MERGE · DELETE · JOIN · UNION · CREATE · DROP · Begin work · COMMIT · ROLLBACK · TRUNCATE · ALTER
安全: SQL資料隱碼攻擊 · 參數化查詢

数据库管理系统的实施

实施类型
关系数据库 · 檔案型資料庫 · Deductive · 維度化資料庫 · 階層式 · 圖形資料庫 · 对象数据库 · 物件關聯式資料庫 · Temporal · XML資料庫

数据库产品
对象型 (对比) · 关系型 (对比)

数据库成分
数据查询语言 · 查詢最佳化器 · 查詢計畫 · 嵌入式SQL · ODBC · JDBC · OLE DB