存儲過程和視圖的區別
SQL裏面不帶參數的存儲過程與視圖的區別
1、存儲過程是程序化的sql可以實現一般sql不能實現的功能。 如:先檢索一個表得到一些數據,經過一定的編輯後更新到另外一個表中、這就可以用不帶參數的存儲過程實現。 2、視圖是虛擬表,不存儲數據,存儲的是sql,檢索他的時候實際上是執行定義它的sql語句。
說明:從你的問題上可以看出,你使用存儲過程僅僅是用它檢索數據,所以你會產生這樣的疑問,一定要記住,存儲過程理解的簡單一點就是“數據庫中的程序”,
可以在不需要外部程序(如C,java,vb等)的情況下,讓數據庫自己解決復雜的、用一般sql不能實現的功能,而視圖則不然。
視圖和存儲過程比是沒什麽意義的
視圖就是虛擬表,把視圖和表比較還有點意思
視圖不占實際空間,可以對任意的表進行疊加和剪裁,利用分區視圖的功能,能加快表的I/O讀取時間(需要2塊以上硬盤)
視圖只不過是存儲在sql server上的select語句罷了,當對視圖請求時,sql server會像執行一句普通的select語句那樣的執行視圖的select語句,它的性能並不像人們想象得那麽出色。
而存儲過程在編譯後可以生成執行計劃,這使得每次執行存儲過程的時候效率將會更高,這是存儲過程,另外提交參數的時候,使用存儲過程將會減少網絡帶寬流量,這是存儲過程相對於普通的sql語句在性能上的最大的優勢。
視圖可以被看成是虛擬表或存儲查詢。可通過視圖訪問的數據不作為獨特的對象存儲在數據庫內。數據庫內存儲的是 SELECT 語句。SELECT 語句的結果集構成視圖所返回的虛擬表。用戶可以用引用表時所使用的方法,在 Transact-SQL 語句中通過引用視圖名稱來使用虛擬表。使用視圖可以實現下列任一或所有功能:
將用戶限定在表中的特定行上。
例如,只允許雇員看見工作跟蹤表內記錄其工作的行。
將用戶限定在特定列上。
例如,對於那些不負責處理工資單的雇員,只允許他們看見雇員表中的姓名列、辦公室列、工作電話列和部門列,而不能看見任何包含工資信息或個人信息的列。
將多個表中的列聯接起來,使它們看起來象一個表。
聚合信息而非提供詳細信息。
例如,顯示一個列的和,或列的最大值和最小值。
------------------
數據庫中的索引與書籍中的索引類似。在一本書中,利用索引可以快速查找所需信息,無須閱讀整本書。在數據庫中,索引使數據庫程序無須對整個表進行掃描,就可以在其中找到所需數據。
------------------
存儲過程可以使得對數據庫的管理、以及顯示關於數據庫及其用戶信息的工作容易得多。存儲過程是 SQL 語句和可選控制流語句的預編譯集合,以一個名稱存儲並作為一個單元處理。存儲過程存儲在數據庫內,可由應用程序通過一個調用執行,而且允許用戶聲明變量、 有條件執行以及其它強大的編程功能。
存儲過程可包含程序流、邏輯以及對數據庫的查詢。它們可以接受參數、輸出參數、返回單個或多個結果集以及返回值。
可以出於任何使用 SQL 語句的目的來使用存儲過程,它具有以下優點:
可以在單個存儲過程中執行一系列 SQL 語句。
可以從自己的存儲過程內引用其它存儲過程,這可以簡化一系列復雜語句。
存儲過程在創建時即在服務器上進行編譯,所以執行起來比單個 SQL 語句快。
存儲過程和視圖的區別
相關推薦
存儲過程和視圖的區別
硬盤 容易 生成 reply 想象 簡單 text 什麽 單個 SQL裏面不帶參數的存儲過程與視圖的區別1、存儲過程是程序化的sql可以實現一般sql不能實現的功能。 如:先檢索一個表得到一些數據,經過一定的編輯後更新到另外一個表中、這就可以用不帶參數的存儲過程實現。 2
Mysql存儲過程和函數區別介紹
fill get .com href 參數 tle gravity 由於 target 原文鏈接 存儲過程是用戶定義的一系列sql語句的集合,涉及特定表或其它對象的任務,用戶可以調用存儲過程,而函數通常是數據庫已定義的方法,它接收參數並返回某種類型的值並且不涉及特定用戶表。
MySQL視圖view/存儲過程和函數的使用
variables mysq tab sql語句 用戶 前綴 機制 聚合 2.0 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p.p2 { m
【SQL server基礎】SQL存儲過程和函數的區別
lan 嵌入 執行計劃 臨時 roc 沒有 存在 exe execution 本質上沒區別。只是函數有如:只能返回一個變量的限制。而存儲過程可以返回多個。而函數是可以嵌入在sql中使用的,可以在select中調用,而存儲過程不行。執行的本質都一樣。 函數限制比較多
oracle函數和存儲過程有什麽區別
以及 插入數據 應該 部分 思維 必須 等級 中一 func oracle函數和存儲過程有什麽區別 1. 返回值的區別,函數有1個返回值,而存儲過程是通過參數返回的,可以有多個或者沒有 2.調用的區別,函數可以在查詢語句中直接調用,而存儲過程必須單獨調用. 函數
存儲過程和存儲函數區別
業務邏輯 區別 多個 網絡數據 () 就是 效果 返回值 直接 存儲過程說白了就是把經常使用的SQL語句或業務邏輯封裝起來,預編譯保存在數據庫中,當需要的時候從數據庫中直接調用,省去了編譯的過程.提高了運行速度;同時降低網絡數據傳輸量 1、返回值上的不同存儲函數將向調用者
存儲過程和自定義函數的區別
tab idt 函數 操作 ron 執行 pan span tex 存儲過程 自定義函數 功能復雜 針對性強 對表操作 多個返回值 一個返回值 獨立執行 可以作為其他SQL語句的組成部分出現 存儲過程和自定義函數的區別
存儲過程和函數的區別
結果 pos clas 使用 class 存儲 target log lec 不同點:1、標識符不同。函數的標識符為FUNCTION,過程為:PROCEDURE。2、函數中有返回值,且必須返回,而過程沒有返回值。3、過程無返回值類型,不能將結果直接賦值給變量;函數有返回值類
MySql中的存儲過程和觸發器的使用和區別
通過 sel 兩張 PE trace 模塊 show eat com 存儲過程:是在大型數據庫系統中,一組為了完成特定功能的SQL 語句集,存儲在數據庫中,經過第一次編譯後再次調用不需要再次編譯,用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。存儲過
MySQL存儲過程和函數
-c com eat sql strong 沒有 round 函數 load data P176)存儲過程和函數的區別在於函數必須有返回值,而存儲過程沒有,存儲過程的參數可以使用IN、OUT、INOUT類型,而函數的參數只能指IN類型。如果有函數從其他類型的數據庫遷移到My
oracle存儲過程和存儲函數&觸發器
員工 觸發器的類型 table 序列 ger set 備份 oracl return oracle存儲過程和存儲函數 指存儲在數據庫中供所有用戶程序調用的子程序叫存儲過程,存儲函數 存儲過程和存儲函數的相同點:完成特定功能的程序 存儲過程和存儲函數的區別:是否用return
Oracle數據庫基礎--存儲過程和函數
9.png edi 語句 內容 upd 遊標 window 關鍵字 express 一、存儲過程和函數 存儲過程: 對一個模塊的封裝 函數: 功能與存儲過程幾乎一樣 區別: 函數必須通過return 關鍵字返回一個值 存儲過程: 不需
H5本地存儲sessionStorage和localStorage的區別
會話 pre targe null col 本地存儲 訪問 arr highlight sessionStorage用於本地存儲一個會話(session)中的數據,這些數據只有在同一個會話中的頁面才能訪問並且當會話結束後數據也隨之銷毀。因此sessionStorage不是一
遍歷SQL SERVER中所有存儲過程和觸發器
server text 查找 所有 and from obj where serve 如果需要查找某個存儲過程或觸發器中是否含有某段文本(比如:你想知道有哪些存儲過程操作了某個表) 可以這麽寫 select name from sysobjects o, syscomm
記一次MySQL存儲過程和遊標的使用
MySQL存儲過程 MySQL遊標 需求: 有三張表:Player、Consumption、Consumption_other。Player表中記錄用戶信息(playerid、origin等字段),Consumption和Consumption_other記錄用戶的消費信息。現需要根據Playe
MySQL學習筆記:刪除存儲過程和函數
class pan 防止 mysql學習 col div pre 註意 warnings 刪除存儲過程、存儲函數主要使用drop語句: drop procedure —— 刪除存儲過程 drop function —— 刪除存儲函數 語法: DROP {P
mysql中的存儲過程和遊標
out when success gin int tran if 語句 arc username -- Mysql 存儲過程 /* set @result = 0; create procedure login( -- 定義參數,有in、out、inout三種
MySQL_基礎_存儲過程和函數
where 存儲過程 賦值 初始化 初始 數據庫服務器 span 語法 創建過程 存儲過程和函數 含義:一組預先編譯好的SQL語句的集合,理解成批處理語句 1、提高代碼的重用性 2、簡化操作 3、減少了編譯次數並且減少了和數據庫服務器的連
存儲過程和存儲函數
limit select call 作用範圍 varchar color 錯誤 into cal grade表: select * from grade; +----+------+--------+------+-------+-------+ | id | name
mysql存儲過程和函數(一)
服務器 影響 end 結果 bsp 進行 exists class 行存儲 存儲過程和函數是事先經過編譯並存儲在數據庫的一段sql語句集合,調用存儲過程和函數可以簡化應用程序開發人員的很多工作,減少數據在數據庫和應用服務器之間的傳輸,對提高數據運行效率是有好處的。