●SQL编程
declare @avg decimal(18,2)
set @avg=(select AVG(Price) from Car)
print '所有汽車的平均價(jià)格是:'+cast(@avg as varchar(20))
declare @find varchar(20) ? ?--聲明變量
set @find='寶馬' ? ?--變量賦值
if(@find='寶馬') ? ?--判斷
begin
print '寶馬汽車' ? ?--顯示結(jié)果如下第二圖
select * from Car where Name like '%'+(@find)+'%'
end
else
begin
print '其他'
select * from Car
end
create procedure UP_Fruit_Buy ? ?--為方便查看,創(chuàng)建存儲(chǔ)過程名寫為(用戶_表_對(duì)表的操作)
@username varchar(50), ? ?--定義形參
@fruitname varchar(50),
@buycount int = 0
as
begin
……
end
?當(dāng)涉及到修改數(shù)據(jù)時(shí),用begin tran …… rollback,便于操作失誤時(shí),恢復(fù)數(shù)據(jù)
?
觸發(fā)器
觸發(fā)器是一種特殊的存儲(chǔ)過程。
觸發(fā)器主要是通過事件進(jìn)行觸發(fā)而被執(zhí)行的,而存儲(chǔ)過程可以通過存儲(chǔ)過程名字而被直接調(diào)用觸發(fā)器的主要作用就是其能夠?qū)崿F(xiàn)由主鍵和外鍵所不能保證的復(fù)雜的參照完整性和數(shù)據(jù)的一致性,另外還有強(qiáng)化約束和級(jí)聯(lián)運(yùn)行的功能。
?
inserted,deleted臨時(shí)表
這兩個(gè)表是由系統(tǒng)管理的,存儲(chǔ)在內(nèi)存中,不是存儲(chǔ)在數(shù)據(jù)庫(kù)中,因此不允許用戶直接對(duì)其修改,是只讀的。
這兩個(gè)表的結(jié)構(gòu)總是與被該觸發(fā)器作用的表有相同的表結(jié)構(gòu)。
這兩個(gè)表是動(dòng)態(tài)駐留在內(nèi)存中的,當(dāng)觸發(fā)器工作完成,這兩個(gè)表也被刪除。
這兩個(gè)表主要保存因用戶操作而被影響到的原數(shù)據(jù)值或新數(shù)據(jù)值。
?
更新操作包括兩個(gè)部分,在deleted中存放了舊值,然后在inserted中存放新值。
插入操作,在inserted中存放新值。
刪除操作,在deleted中存放舊值。
?
種類:after觸發(fā)器、instead of觸發(fā)器
兩種觸發(fā)器的區(qū)別:after觸發(fā)器是觸發(fā)條件執(zhí)行完以后,才執(zhí)行觸發(fā)器;instead of觸發(fā)器是不再執(zhí)行觸發(fā)條件,直接執(zhí)行觸發(fā)器。
?
CREATE TRIGGER trigger_name ON { table | view } [ WITH ENCRYPTION ] {{ { FOR | AFTER | INSTEAD OF } { [ DELETE ] [ , ] [ INSERT ] [ , ] [ UPDATE ] } [ WITH APPEND ][ NOT FOR REPLICATION ] AS sql_statement [ ...n ] } 例: create trigger TR_Student_Delete on student ? ?--創(chuàng)建對(duì)于表student的觸發(fā)器 for delete ? ?--觸發(fā)條件 as …… ? ?--執(zhí)行過程 go轉(zhuǎn)載于:https://www.cnblogs.com/phantom-k/p/3967411.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
- 上一篇: vmware的硬件选项里有关于虚拟化引擎
- 下一篇: 配置SQL Server 2012 Al