面試的時候被問到存儲過程,如果沒有做過很大型的項目,確實會比較吃虧,因為根本沒機會使用存儲過程。
定義:存儲過程(Stored Procedure)是在大型數據庫系統中,一組為了完成特定功能的SQL 語句集,存儲在數據庫中經過第一次編譯後再次調用不需要再次編譯,用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是數據庫中的一個重要對象,任何一個設計良好的數據庫應用程序都應該用到存儲過程。
是不是讀完毫無概念。我覺得,存儲過程說白了就是一堆SQL的合並。中間加了點邏輯控制。
其實:存儲過程和存儲函數就是指在數據庫中供所有用戶程序調用的子程序。
存儲過程沒返回值,而存儲函數有返回值。
存儲過程是處理比較復雜的業務時比較實用。會提高運行效率
比如:一個復雜的數據操作,如果你在前台處理的話,可能會涉及到多次數據庫連接。但如果你用存儲過程的話,就只有一次。從響應時間上來說有優勢。
且程序容易出現 BUG 不穩定,而存儲過程,只要數據庫不出現問題,基本上是不會出現什麼問題的。也就是說從安全上講,使用了存儲過程的系統更加穩定。
當項目數據量小的,或者和錢沒關系的項目不用存儲過程也可以正常運作。mysql 的存儲過程還有待實際測試。
存儲過程一般通過sql server 或 oracle 來實現使用。數據與數據之間打交道的話,過程會比程序來的快的多。
1. 存儲過程只在創造時進行編譯,以後每次執行存儲過程都不需再重新編譯,而一般 SQL 語句每執行一次就編譯一次,所以使用存儲過程可提高數據庫執行速度。
2. 當對數據庫進行復雜操作時(如對多個表進行 Update,Insert,Query,Delete 時),可將此復雜操作用存儲過程封裝起來與數據庫提供的事務處理結合一起使用。這些操作,如果用程序來完成,就變成了一條條的 SQL 語句,可能要多次連接數據庫。而換成存儲,只需要連接一次數據庫就可以了。
3. 存儲過程可以重復使用,可減少數據庫開發人員的工作量。
4. 安全性高,可設定只有某此用戶才具有對指定存儲過程的使用權。