MySQL面试题 | 附答案解析(十二)
(一)存儲過程與函數
什么是存儲過程?有哪些優缺點?
存儲過程是一個預編譯的SQL語句,優點是允許模塊化的設計,就是說只需要創建一次,以后在該程序中就可以調用多次。如果某次操作需要執行多次SQL,使用存儲過程比單純SQL語句執行要快。
優點
1)存儲過程是預編譯過的,執行效率高。
2)存儲過程的代碼直接存放于數據庫中,通過存儲過程名直接調用,減少網絡通訊。
3)安全性高,執行存儲過程需要有一定權限的用戶。
4)存儲過程可以重復使用,減少數據庫開發人員的工作量。
缺點
1)調試麻煩,但是用 PL/SQL Developer 調試很方便!彌補這個缺點。
2)移植問題,數據庫端代碼當然是與數據庫相關的。但是如果是做工程型項目,基本不存在移植問題。
3)重新編譯問題,因為后端代碼是運行前編譯的,如果帶有引用關系的對象發生改變時,受影響的存儲過程、包將需要重新編譯(不過也可以設置成運行時刻自動編譯)。
4)如果在一個程序系統中大量的使用存儲過程,到程序交付使用的時候隨著用戶需求的增加會導致數據結構的變化,接著就是系統的相關問題了,最后如果用戶想維護該系統可以說是很難很難、而且代價是空前的,維護起來更麻煩。
(二)觸發器
- 什么是觸發器?觸發器的使用場景有哪些?
觸發器是用戶定義在關系表上的一類由事件驅動的特殊的存儲過程。觸發器是指一段代碼,當觸發某個事件時,自動執行這些代碼。
使用場景
a.可以通過數據庫中的相關表實現級聯更改。
b.實時監控某張表中的某個字段的更改而需要做出相應的處理。
c.例如可以生成某些業務的編號。
d.注意不要濫用,否則會造成數據庫及應用程序的維護困難。
e.大家需要牢記以上基礎知識點,重點是理解數據類型CHAR和VARCHAR的差異,表存儲引擎InnoDB和MyISAM的區別。
- MySQL中都有哪些觸發器?
在MySQL數據庫中有如下六種觸發器:
a.Before Insert
b.After Insert
c.Before Update
d.After Update
e.Before Delete
f.After Delete
最后,小編分類整理了許多java進階學習材料和BAT面試給熱愛IT行業的你,如果需要資料的請轉發此文章后再私聊小編回復【java】就能領取2019年java進階學習資料和BAT面試題以及《Effective Java》(第3版)電子版書籍。也可以加群:712263501領取海量學習資料進行學習。
總結
以上是生活随笔為你收集整理的MySQL面试题 | 附答案解析(十二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上海欢乐谷退票收手续费吗
- 下一篇: MySQL面试题 | 附答案解析(十三)