第四部分:DBMS擴展功能與SQL高級話(huà)題
9. DBMS提供的擴展功能
掌握了基本的關(guān)系模型原理和DBMS的數據類(lèi)型,還需要對DBMS提供的擴展功能有所了解,才能充分運用DBMS進(jìn)行數據庫開(kāi)發(fā)。
9.1. 控制流
SQL是說(shuō)明式語(yǔ)言,但DBMS面對實(shí)際開(kāi)發(fā)的需求,通常在SQL方言中都提供了過(guò)程式的擴展,包括(以T-SQL為例):
1. 變量定義和賦值
[code=sql]
DECLARE @var <datetype> --變量定義語(yǔ)句
SET @var = <value> --通過(guò)SET語(yǔ)句賦值
SELECT @var = MAX(column_value) FROM [table] --通過(guò)SELECT語(yǔ)句賦值
[/code]
2. 代碼塊
BEGIN ... END定義一個(gè)代碼塊。
對于下面的IF/ELSE和WHILE,如果忽略了BEGIN ... END代碼塊,條件和循環(huán)將只對其后的第一個(gè)語(yǔ)句生效。
3. 條件分支語(yǔ)句
IF ... ELSE ...
注意IF語(yǔ)句與CASE WHEN表達式的區別。
4. 循環(huán)控制語(yǔ)句
WHILE可以進(jìn)行循環(huán)。BREAK/CONTINUE可以跳出或進(jìn)行下一次循環(huán)。
5. 異常處理語(yǔ)句
SQL Server 2005支持TRY-CATCH語(yǔ)句進(jìn)行異常處理,但只能處理一部分異常。詳見(jiàn)聯(lián)機叢書(shū)。
9.2. 動(dòng)態(tài)語(yǔ)句
SQL動(dòng)態(tài)語(yǔ)句的功能很強大,但是難以調試和維護(字符串拼接、無(wú)語(yǔ)法高亮)、效率低(難以重用執行計劃)、安全性差(SQL注入)。除非功能上必須,否則盡量避免使用動(dòng)態(tài)SQL。
假如真的需要使用動(dòng)態(tài)SQL,使用sp_executesql的方式優(yōu)于EXEC()的方式。因為前者有些時(shí)候可以重用執行計劃而改善性能,而且允許傳參,數據類(lèi)型上更安全。
9.3. DBMS支持的數據庫對象
SQL Server還支持臨時(shí)表、視圖、存儲過(guò)程、自定義函數(標量和表值)、觸發(fā)器、游標等數據庫對象,這是利用SQL Server進(jìn)行開(kāi)發(fā)必須掌握的知識。參看《Microsoft SQL Server 2005技術(shù)內幕:T-SQL程序設計》相關(guān)章節。
9.4. DBMS提供的系統函數、系統視圖和系統存儲過(guò)程
- System Functions:提供特定的表達式運算功能,如日期時(shí)間函數、字符串函數、數學(xué)函數、聚合函數等,是T-SQL編程必需的。
- System Views:包含了數據庫元數據、系統內部運行數據等,如目錄視圖(用來(lái)代替SQL Server 2000中的系統表)、信息架構視圖、動(dòng)態(tài)管理視圖等。
- System Procedures:查看系統信息、修改系統配置等,如目錄存儲過(guò)程、數據庫引擎存儲過(guò)程等。
9.5. DBMS提供的工具
- 數據庫服務(wù)器配置工具:配置管理器、外圍應用配置器等
- 數據庫客戶(hù)端應用工具:SSMS、sqlcmd、bcp等
- 數據庫性能工具:SQL Server Profiler等
10. 高級話(huà)題
以下是數據庫相關(guān)的高級話(huà)題,每一塊都值得單獨討論,本帖不再詳述。
1. 高級技術(shù)專(zhuān)題
- 數據庫設計
- 服務(wù)器架構
- 索引和性能優(yōu)化
- 事務(wù)、鎖定與并發(fā)
- 備份與還原
相關(guān)書(shū)目:
- 《SQL Server 2005數據庫服務(wù)器架構設計》
- 《Microsoft SQL Server 2005技術(shù)內幕:存儲引擎》
- 《Microsoft SQL Server 2005技術(shù)內幕:查詢(xún)、調整和優(yōu)化》
- 《SQL Server 2005性能調?!?br>
2. 開(kāi)發(fā)和維護相關(guān)的管理專(zhuān)題
- 數據庫權限管理
- 數據庫對象的版本控制
- 數據庫開(kāi)發(fā)的命名規范
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。