我們前面所學習的 MySQL 語句都是針對一個表或幾個表的單條 SQL 語句,但是在資料庫的實際操作中,並非所有操作都那麼簡單,經常會有一個完整的操作需要多條 SQL 語句處理多個表才能完成。例如,為了確認學生能否畢業,需要同時查詢學生檔案表、成績表和綜合表,此時就需要使用多條 SQL 語句來針對幾個資料表完成這個處理要求。儲存過程可以有效地完成這個資料庫操作。
儲存過程是資料庫儲存的一個重要的功能,但是 MySQL 在 5.0 以前並不支援儲存過程,這使得 MySQL 在應用上大打折扣。好在 MySQL 5.0 終於開始已經支援儲存過程,這樣即可以大大提高資料庫的處理速度,同時也可以提高資料庫程式設計的靈活性。
儲存過程是一組為了完成特定功能的 SQL 語句集合。使用儲存過程的目的是將常用或複雜的工作預先用 SQL 語句寫好並用一個指定名稱儲存起來,這個過程經編譯和優化後儲存在資料庫伺服器中,因此稱為儲存過程。當以後需要資料庫提供與已定義好的儲存過程的功能相同的服務時,只需呼叫“CALL儲存過程名字”即可自動完成。
常用運算元據庫的 SQL 語句在執行的時候需要先編譯,然後執行。儲存過程則採用另一種方式來執行 SQL 語句。
一個儲存過程是一個可程式化的函數,它在資料庫中建立並儲存,一般由 SQL 語句和一些特殊的控制結構組成。當希望在不同的應用程式或平台上執行相同的特定功能時,儲存過程尤為合適。
儲存過程通常有如下優點:
1) 封裝性
儲存過程被建立後,可以在程式中被多次呼叫,而不必重新編寫該儲存過程的 SQL 語句,並且資料庫專業人員可以隨時對儲存過程進行修改,而不會影響到呼叫它的應用程式原始碼。
2) 可增強 SQL 語句的功能和靈活性
儲存過程可以用流程控制語句編寫,有很強的靈活性,可以完成複雜的判斷和較複雜的運算。
3) 可減少網路流量
由於儲存過程是在伺服器端執行的,且執行速度快,因此當客戶計算機上呼叫該儲存過程時,網路中傳送的只是該呼叫語句,從而可降低網路負載。
4) 高效能
儲存過程執行一次後,產生的二進位制程式碼就駐留在緩衝區,在以後的呼叫中,只需要從緩衝區中執行二進位制程式碼即可,從而提高了系統的效率和效能。
5) 提高資料庫的安全性和資料的完整性
使用儲存過程可以完成所有資料庫操作,並且可以通過程式設計的方式控制資料庫資訊存取的許可權。