SQLSever--視圖與存儲過程


視圖

要把視圖看做是一張表,包含了一張表的部分數據或者多個表的綜合數據,視圖的使用和普通表一樣;

視圖建立並存儲在服務器,有效減少網絡數據流量,提高安全性;

視圖中不存放數據,數據依然存放在視圖引用的原始數據表中;

可以根據需求來提前創建不同的視圖。

企業管理器創建視圖:

T-SQL創建視圖:

USE DBName
go
IF EXISTS(SELECT * FROM sysobjects WHERE name=view_Name)
    DROP VIEW view_Name
CREATE VIEW view_Name
    AS
        <SELECT語句>

代碼示例:

存儲過程

啥是存儲過程?

就是事先存儲好的SQL語句,放在數據庫端,需要使用時直接調用存儲過程就可以執行相應的SQL語句。存儲過程可帶參數,也可返回結果。

存儲過程有啥優勢呢?

執行速度更快;允許模塊化設計;提高系統安全性;減少網絡流量。

傳統SQL語句與存儲過程執行效率的對比:

跟視圖有啥區別呢?

視圖僅僅用來查詢,而存儲過程可以用來增刪查改;視圖是數據庫的一張虛擬表,可以像表一樣使用,而存儲過程本質來說還是在執行SQL語句。

如何查看存儲過程?

存儲過程分類:

三種:系統存儲過程、擴展存儲過程、自定義存儲過程

系統存儲過程:由“sp_"開頭,由系統定義與維護,需要學會使用。

擴展存儲過程:“xp_”開頭,以DLL形式單獨存在,至今不知道有啥鳥用!

自定義存儲過程:根據需要自定義,類似C#里面的“方法”的存在。

存儲過程調用方法:

EXECUTE    過程名 【參數】
簡寫:EXEC    過程名 【參數】

代碼示例:

重點!自定義存儲過程!!!

1 use DB
2 go
3 create procedure(縮寫:proc) 存儲過程名
4                 @參數1  數據類型=默認值  OUTPUT
5                 ……
6                 @參數n   數據類型=默認值  OUTPUT    
7 as
8                  SQL語句
9 go

自定義存儲過程的內容全在上面規范里面,其中:

第3行,procedure可以縮寫為proc;

第4~6行的參數定義可有可無,若有,在調用存儲過程時需要一起傳遞過來;默認值可有可無,若有,在調用存儲過程時可以不傳遞參數值;OUTPUT關鍵字可有可無,若有在調用時需要有一個變量來接受它的返回值

 

什么時候使用存儲過程?

當一個事務涉及到多個SQL語句時或者涉及到對多個表的操作時就要考慮用存儲過程;當在一個事務的完成需要很復雜的商業邏輯時(比如,對多個數據的操作,對多個狀態的判斷更改等)要考慮;還有就是比較復雜的統計和匯總也要考慮,但是過多的使用存儲過程會降低系統的移植性。

引用:https://www.cnblogs.com/JustYong/p/5359689.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM