DBMS擴展功能與SQL高級話題

掌握了基本的關係模型原理和DBMS的數據類型,還需要對DBMS提供的擴展功能有所瞭解,才能充分運用DBMS進行數據庫開發。

9.1. 控制流

SQL是說明式語言,但DBMS面對實際開發的需求,通常在SQL方言中都提供了過程式的擴展,包括(以T-SQL爲例):
1. 變量定義和賦值
[code=sql]
DECLARE @var <datetype>                      --變量定義語句
SET @var = <value>                            --通過SET語句賦值
SELECT @var = MAX(column_value) FROM [table]  --通過SELECT語句賦值
[/code]
2. 代碼塊
BEGIN ... END定義一個代碼塊。
對於下面的IF/ELSE和WHILE,如果忽略了BEGIN ... END代碼塊,條件和循環將只對其後的第一個語句生效。
3. 條件分支語句
IF ... ELSE ...
注意IF語句與CASE WHEN表達式的區別。
4. 循環控制語句
WHILE可以進行循環。BREAK/CONTINUE可以跳出或進行下一次循環。
5. 異常處理語句
SQL Server 2005支持TRY-CATCH語句進行異常處理,但只能處理一部分異常。詳見聯機叢書。

9.2. 動態語句

SQL動態語句的功能很強大,但是難以調試和維護(字符串拼接、無語法高亮)、效率低(難以重用執行計劃)、安全性差(SQL注入)。除非功能上必須,否則儘量避免使用動態SQL。

假如真的需要使用動態SQL,使用sp_executesql的方式優於EXEC()的方式。因爲前者有些時候可以重用執行計劃而改善性能,而且允許傳參,數據類型上更安全。

9.3. DBMS支持的數據庫對象

SQL Server還支持臨時表、視圖、存儲過程、自定義函數(標量和表值)、觸發器、遊標等數據庫對象,這是利用SQL Server進行開發必須掌握的知識。參看《Microsoft SQL Server 2005技術內幕:T-SQL程序設計》相關章節。

9.4. DBMS提供的系統函數、系統視圖和系統存儲過程

- System Functions:提供特定的表達式運算功能,如日期時間函數、字符串函數、數學函數、聚合函數等,是T-SQL編程必需的。
- System Views:包含了數據庫元數據、系統內部運行數據等,如目錄視圖(用來代替SQL Server 2000中的系統表)、信息架構視圖、動態管理視圖等。
- System Procedures:查看系統信息、修改系統配置等,如目錄存儲過程、數據庫引擎存儲過程等。

9.5. DBMS提供的工具

- 數據庫服務器配置工具:配置管理器、外圍應用配置器等
- 數據庫客戶端應用工具:SSMS、sqlcmd、bcp等
- 數據庫性能工具:SQL Server Profiler等


10. 高級話題

以下是數據庫相關的高級話題,每一塊都值得單獨討論,本帖不再詳述。

1. 高級技術專題
- 數據庫設計
- 服務器架構
- 索引和性能優化
- 事務、鎖定與併發
- 備份與還原
相關書目:
- 《SQL Server 2005數據庫服務器架構設計》
- 《Microsoft SQL Server 2005技術內幕:存儲引擎》
- 《Microsoft SQL Server 2005技術內幕:查詢、調整和優化》
- 《SQL Server 2005性能調校》

2. 開發和維護相關的管理專題
- 數據庫權限管理
- 數據庫對象的版本控制
- 數據庫開發的命名規範

1. 高級技術專題
- 數據庫設計
- 服務器架構
- 索引和性能優化
- 事務、鎖定與併發
- 備份與還原
相關書目:
- 《SQL Server 2005數據庫服務器架構設計》
- 《Microsoft SQL Server 2005技術內幕:存儲引擎》
- 《Microsoft SQL Server 2005技術內幕:查詢、調整和優化》
- 《SQL Server 2005性能調校》

2. 開發和維護相關的管理專題
- 數據庫權限管理
- 數據庫對象的版本控制
- 數據庫開發的命名規範
來源:英超直播

發佈了45 篇原創文章 · 獲贊 1 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章