存儲過程:
存儲過程(stored procedure)有時也稱為sproc。存儲過程存儲於數據庫中而不是在單獨的文件中,有輸入參數、輸出參數以及返回值等。
在數據庫中,創建存儲過程和創建其他對象的過程一樣,除了它使用的AS關鍵字外。存儲過程的基本語法如下:
CREATE PROCDUER|PROC <sproc name>
[<parameter name>[schema.]<data type>[VARYING][=<default value>][OUT [PUT]][,
[<parameter name>[schema.]<data type>[VARYING][=<default value>][OUT [PUT]][,
...]]
[WITH
RECOMPILE|ENCRYPTION|[EXECUTE AS {CALLER|SELF|OWNER|<'user name'>}]
[FOR REPLICATION]
AS
<code>|EXTERNAL NAME <assembly name>.<assembly class>
存儲過程示例一:
create proc first as select *from news go
執行存儲過程方法:
--以下語句都可以執行語句 execute news exec news --定義一個變量接收返回值 declare @fanhuizhi int execute @fanhuizh=news select @fanhuizh --修改存儲過程 alter proc cangcang as select code as'編號',mname as'名稱',mprice as'價格',gname as'供應商',(mshu+cshu) as'商品總量' from men join cang on men.mcode=cang.code join gong on cang.cg=gong.gcode go
利用存儲過程查找三個表內的信息示例:
create proc secof as begin select *from gong select *from cang select *from men end go execute secof


輸入學生學號,查看學生三門課的總分

1.視圖的概述 視圖其實就是一條查詢sql語句,用於顯示一個或多個表或其他視圖中的相關數據。視圖將一個查詢的結果作為一個表來使用,因此視圖可以被看作是存儲的查詢或一個虛擬表。視圖來源於表,所有對視圖數據的修改最終都會被反映到視圖的基表中,這些修改必須服從基表的完整性約束,並同樣會觸發定義在基表上的觸發器。(Oracle支持在視圖上顯式的定義觸發器和定義一些邏輯約束)
2.視圖的存儲 與表不同,視圖不會要求分配存儲空間,視圖中也不會包含實際的數據。視圖只是定義了一個查詢,視圖中的數據是從基表中獲取,這些數據在視圖被引用時動態的生成。由於視圖基於數據庫中的其他對象,因此一個視圖只需要占用數據字典中保存其定義的空間,而無需額外的存儲空間。
3.視圖的作用
用戶可以通過視圖以不同形式來顯示基表中的數據,視圖的強大之處在於它能夠根據不同用戶的需要來對基表中的數據進行整理。視圖常見的用途如下:
(1)通過視圖可以設定允許用戶訪問的列和數據行,從而為表提供了額外的安全控制
(2)隱藏數據復雜性:視圖中可以使用連接(join),用多個表中相關的列構成一個新的數據集。此視圖就對用戶隱藏了數據來源於多個表的事實。
(3)簡化用戶的SQL 語句:用戶使用視圖就可從多個表中查詢信息,而無需了解這些表是如何連接的。
(4)以不同的角度來顯示基表中的數據::視圖的列名可以被任意改變,而不會影響此視圖的基表
(5)使應用程序不會受基表定義改變的影響::在一個視圖的定義中查詢了一個包含4 個數據列的基表中的3 列。當基表中添加了新的列后,由於視圖的定義並沒有被影響,因此使用此視圖的應用程序也不會被影響。
(6)保存復雜查詢::一個查詢可能會對表數據進行復雜的計算。用戶將這個查詢保存為視圖之后,每次進行類似計算只需查詢此視圖即可。
(7)邏輯數據獨立性::視圖可以使應用程序和數據庫表在一定程度上獨立。如果沒有視圖,應用一定是建立在表上的。有了視圖之后,程序可以建立在視圖之上,從而程序與數據庫表被視圖分割開來。
use chaoshi go select* from cangku select * from gongying --將以上兩個語句寫成一個語句顯示 select cangku.ccode,cname,cprice,cshu,cgcode,gongying.gname,gtel from cangku , gongying where cangku.cgcode=gongying.gcode --join on select cangku.ccode,cname,cprice,cshu,cgcode,gongying.gname,gtel from cangku join gongying on cangku.cgcode=gongying.gcode --視圖創建(語句進行創建視圖) create view cangkugongying--創建視圖的語法 as--as go中間放上我所需要的一個查詢語句 select cangku.ccode,cname,cprice,cshu,cgcode,gongying.gname,gtel from cangku join gongying on cangku.cgcode=gongying.gcode go --調用視圖 select *from cangkugongying--視圖就是一個虛擬的表,所以可以from --視圖創建(鼠標操作創建視圖) select * from xin select cname,cshu from xin
