視圖
要把視圖看做是一張表,包含了一張表的部分數據或者多個表的綜合數據,視圖的使用和普通表一樣;
視圖建立並存儲在服務器,有效減少網絡數據流量,提高安全性;
視圖中不存放數據,數據依然存放在視圖引用的原始數據表中;
可以根據需求來提前創建不同的視圖。
企業管理器創建視圖:



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