表和視圖,存儲過程和函數的區別

表是真實存在, 它佔存儲空間
視圖相當於一個查詢語句它不佔有存儲空間
一個淺顯的比喻吧:表是可執行文件,視圖是快捷方式
表是真正的存在與數據庫中(也就是硬件介質上)的數據組合,而視圖只是簡單的把一個或多個表或其他視圖聯繫在一起的集合,也就是說視圖只是固定了你的數據查詢方式,但是並沒有真正把數據保存起來,每次訪問視圖的時候,系統會自動根據視圖的規則去組織篩選數據
 
函數和存儲過程本質上沒區別。
函數只能返回一個變量的限制。而存儲過程可以返回多個。
函數是可以嵌入在sql中使用的,可以在select中調用,而存儲過程不行。
執行的本質都一樣。 
函數限制比較多,比如不能用臨時表,只能用表變量.還有一些函數都不可用等等.而存儲過程的限制相對就比較少 1. 一般來說,存儲過程實現的功能要複雜一點,而函數的實現的功能針對性比較強。 2. 對於存儲過程來說可以返回參數,而函數只能返回值或者表對象。 3. 存儲過程一般是作爲一個獨立的部分來執行,而函數可以作爲查詢語句的一個部分來調用,由於函數可以返回一個表對象,因此它可以在查詢語句中位於FROM關鍵字的後面。 4. 當存儲過程和函數被執行的時候,SQL Manager會到PRocedure cache中去取相應的查詢語句,如果在procedure cache裏沒有相應的查詢語句,SQL Manager就會對存儲過程和函數進行編譯。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章