Mysql 視圖 遊標 觸發器 存儲過程 事務

Mysql 視圖 觸發器 存儲過程sql

 

遊標數據庫

遊標是從數據表中提取出來的數據,以臨時表的形式存放在內存中,在遊標中有一個數據指針,在初始狀態下指向的是首記錄,利用fetch語句能夠移動該指針,從而對遊標中的數據進行各類操做,而後將操做結果寫回數據表中。

由 SELECT 語句返回的行集包括全部知足該語句 WHERE 子句中條件的行。由語句所返回的這一完整的行集被稱爲結果集。應用程序,特別是交互式聯機應用程序,並不總能將整個結果集做爲一個單元來有效地處理。這些應用程序須要一種機制以便每次處理一行或一部分行。遊標就是提供這種機制的結果集擴展。

遊標經過如下方式擴展結果處理:

l         容許定位在結果集的特定行。

l         從結果集的當前位置檢索一行或多行。

l         支持對結果集中當前位置的行進行數據修改。

l         爲由其餘用戶對顯示在結果集中的數據庫數據所作的更改提供不一樣級別的可見性支持。

l         提供腳本、存儲過程和觸發器中使用的訪問結果集中的數據的 Transact-SQL 語句。安全

 

遊標知識點:數據結構

遊標用於定位結果集的行,經過判斷全局變量@@FETCH_STATUS能夠判斷是否到了最後,一般此變量不等於0表示出錯或到了最後。併發

 

觸發器 相關ide

事前觸發器運行於觸發事件發生以前,而過後觸發器運行於觸發事件發生以後。函數

一般事前觸發器能夠獲取事件以前和新的字段值。
語句級觸發器能夠在語句執行前或後執行,而行級觸發在觸發器所影響的每一行觸發一次。fetch

 

 

存儲過程 優勢:指針

        更快的執行速度:存儲過程只在創造時進行編譯,之後每次執行存儲過程都不需再從新編譯,而通常SQL語句每執行一次就編譯一次,因此使用存儲過程可提升數據庫執行速度;

l         與事務的結合,提供更好的解決方案:當對數據庫進行復雜操做時(如對多個表進行Update、Insert、Query和Delete時),可將此複雜操做用存儲過程封裝起來與數據庫提供的事務處理結合一塊兒使用;

l         支持代碼重用:存儲過程能夠重複使用,可減小數據庫開發人員的工做量;

l         安全性高:可設定只有某此用戶才具備對指定存儲過程的使用權。對象

 

存儲過程 區分 函數:

存儲過程是用戶定義的一系列sql語句的集合,涉及特定表或其它對象的任務,用戶能夠調用存儲過程,而函數一般是數據庫已定義的方法,它接收參數並返回某種類型的值而且不涉及特定用戶表。

 

事務

事務是做爲一個邏輯單元執行的一系列操做,一個邏輯工做單元必須有四個屬性,稱爲 ACID(原子性、一致性、隔離性和持久性)屬性,只有這樣才能成爲一個事務:原子性事務必須是原子工做單元;對於其數據修改,要麼全都執行,要麼全都不執行。一致性事務在完成時,必須使全部的數據都保持一致狀態。在相關數據庫中,全部規則都必須應用於事務的修改,以保持全部數據的完整性。事務結束時,全部的內部數據結構(如 B 樹索引或雙向鏈表)都必須是正確的。隔離性由併發事務所做的修改必須與任何其它併發事務所做的修改隔離。事務查看數據時數據所處的狀態,要麼是另外一併發事務修改它以前的狀態,要麼是另外一事務修改它以後的狀態,事務不會查看中間狀態的數據。這稱爲可串行性,由於它可以從新裝載起始數據,而且重播一系列事務,以使數據結束時的狀態與原始事務執行的狀態相同。持久性事務完成以後,它對於系統的影響是永久性的。該修改即便出現系統故障也將一直保持。

相關文章
相關標籤/搜索