【機房重構】——檢視,觸發器,儲存過程的使用
阿新 • • 發佈:2019-01-03
在機房收費系統中,對多個表的查詢,要寫多個SQL是很麻煩的事情,為了方便我們寫程式碼,同時對程式碼進行解耦和,我們引用了檢視,觸發器,儲存過程。
一、是什麼?
檢視
從若干個基本表和其他檢視構造出來的虛擬表。檢視本身並不儲存實際的資料,而僅僅儲存一個Select語句和所涉及表的metadata。觸發器
特殊的儲存過程,此機制是由事務觸發而完成的,而不是儲存過程的呼叫。
儲存過程
一組完成特定功能的SQL語句集合以及流程控制語句編寫的模組,儲存過程經過編譯後儲存在資料庫服務端的資料庫中,使用時呼叫即可。
二、為什麼?
檢視
(1)提供了使用者訪問的介面,使用者不必知道底層的表結構是什麼樣的,當表改變時,只需改變檢視的語句,而客戶端不許改變,降低了耦合性
(2)加強了安全性,使用者只能看到檢視提供的那部分資料,其他的看不到
(3)簡化了資料庫的訪問操作
儲存過程
(1)提高執行速度,呼叫儲存過程的速度會比執行一條SQL語句要快的多。(2)只需編譯一次即可,而SQL語句使用一次編譯一次。
(3)可以反覆呼叫,減輕了程式編寫的工作量
(4)增強了SQL的功能和靈活性,能完成複雜的樓及判斷和複雜運算
觸發器
(1)通過資料庫中的相關表來實現級聯操作。
(2)自動執行
(3)觸發器可以強制用比CHECK約束定義的約束更為複雜的約束。(這一點不太理解)
。。。。。。
三、怎麼用?
1、建立檢視後,使用時和使用表一樣。
Create View <檢視名>(<列表序列>)AS<SELECT 查詢語句>
2、儲存過程
例如:機房收費系統中的充值操作,當進行充值操作時,要在充值表中新增一條充值記錄,並更新卡表裡的卡餘額。3、觸發器
例如:機房收費系統中的退卡操作,當進行退卡操作時,要在退卡表裡更新一條記錄,並在卡表裡刪除對應的卡。