程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 【機房重構】——視圖,觸發器,存儲過程的使用

【機房重構】——視圖,觸發器,存儲過程的使用

編輯:DB2教程

【機房重構】——視圖,觸發器,存儲過程的使用


在機房收費系統中,對多個表的查詢,要寫多個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、觸發器<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPjwvcD4KPHA+PHN0cm9uZz48YnI+Cjwvc3Ryb25nPjwvcD4KICAgIMD9yOejurv6t7/K1bfRz7XNs9bQtcTNy7+ostnX96OstbG9+NDQzcu/qLLZ1/fKsaOs0qrU2s3Lv6ix7cDvuPzQwtK7zPW8x8K8o6yyotTav6ix7cDvyb6z/bbU06a1xL+ooaM8YnI+Cjxicj4KCjxpbWcgc3JjPQ=="http://www.2cto.com/uploadfile/Collfiles/20150504/20150504091634521.png" alt="">

四、總結

上面的兩張圖是從師傅博客總截的圖。視圖用過了,觸發器和存儲過程還沒有使用。雖然觸發器和存儲過程有這麼多優點,但我們要慎用,拒絕濫用。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved