事務 事務是一種機制、是一種操作序列,它包含了一組資料庫操作命令,這組命令要麼全部執行,要麼全部不執行。 在資料庫系統上執行併發操作時事務是作為最小的控制單元來使用的。這特別適用於多用戶同時操作的數據通信系統。例如:訂票、銀行、保險公司以及證券交易系統等。 如果某一事務成功,則在該事務中進行的所有數 ...
事務
事務是一種機制、是一種操作序列,它包含了一組資料庫操作命令,這組命令要麼全部執行,要麼全部不執行。
在資料庫系統上執行併發操作時事務是作為最小的控制單元來使用的。這特別適用於多用戶同時操作的數據通信系統。例如:訂票、銀行、保險公司以及證券交易系統等。
如果某一事務成功,則在該事務中進行的所有數據修改均會提交,成為資料庫的永久組成部分,如果事務遇到錯誤且必須取消或回滾,則所有數據修改均會被清除。
開始事務 BEGIN TRANSACTION
提交事務 COMMIT TRANSACTION
回滾事務 ROLLBACK TRANSACTION
--開始事務
begin transaction
declare @errorSum int --定義變數,用於累計事務執行過程中的錯誤
--轉帳
update bank set currentMoney=currentMoney-800 where customerName='張三'
set @errorSum=@errorSum+@@error --累計是否有錯誤
update bank set currentMoney=currentMoney+800 where customerName='李四'
set @errorSum=@errorSum+@@error --累計是否有錯誤
print '查看轉帳事務過程中的餘額'
select * from bank
--根據是否有錯誤,確定事務是提交還是回滾
if @errorSum>0
begin
print '交易失敗,回滾事務.'
rollback transaction
end
else
begin
print '交易成功,提交事務,寫入硬碟,永久保存!'
commit transaction
end
go
索引
索引提供指向存儲在表的指定列中的數據值的指針,然後根據指定的順序對這些指針排序。
索引使資料庫程式無需對整個表進行掃描,就可以在其中找到所需數據。
索引依賴於資料庫的表,作為表的一個組成部分,一旦創建後,又資料庫系統自身進行維護。
視圖
視圖和表類似,是一張虛擬表,通常是作為一個或多個表的行或列的子集創建的,視圖只供查詢,數據不可更改,查詢數據來源於我們建立的實體表。
存儲過程
存儲過程的概念類似於函數,它是SQL語句和控制流語句的預編譯集合。
存儲過程存儲在資料庫內,可由應用程式調用。
存儲過程的優點顯而易見:封裝複雜操作,節省編譯優化時間,實現代碼重用。
CREATE PROC 存儲過程名
AS
BEGIN
SET NOCOUNT ON
--SQL語句
END
帶有輸出參數的存儲過程,如果參數後面帶有output,則表示此參數為輸出參數,否則是普通的輸入參數,輸入參數可以帶有預設值
CREATE PROC 存儲過程名
@變數名 數據格式[=預設值] [OUTPUT]
AS
BEGIN
SET NOCOUNT ON
--SQL語句
END
調用存儲過程:EXEC 存儲過程名 [參數]
--調用後返回通過考試的學生人數,以供其他sql語句調用
CREATE PROCEDURE proc_withOutputpara
@subject varchar(10)='SQL', --接受參數,帶預設參數,變數之間帶逗號
@count int output --輸出參數
AS
SELECT @count=count(*) FROM students S,Mark SC,course C
WHERE S.sID=SC.sID AND SC.cID=C.cID
AND C.cNAME='C#' AND SC.SCore<60
GO
--調用存儲過程
DECLARE @count int,@sub varchar(10) --聲明變數
SET @sub='C#'
EXEC proc_withOutputpara @sub,@count=@count output
PRINT @sub+'考試不及格的共有'+convert(varchar(2),@count)+'人'
GO
觸發器
觸發器是一種特殊類型的存儲過程。
觸發器是當對某一個表進行操作。諸如:update、insert、delete這些操作的時候,系統會自動調用執行該表上對應的觸發器。
觸發器的主要作用是實現由主鍵和外鍵所不能保證的複雜的參照完整性和數據的一致性。
CREATE TRIGGER 觸發器名稱
ON 表名
FOR insert/delete/update
AS
--SQL語句
GO
博客園hoojo博主關於觸發器的詳細介紹:http://www.cnblogs.com/hoojo/archive/2011/07/20/2111316.html
博主初學,有錯還望各位大神指出。
轉載請聯繫