黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

SQL基礎(chǔ)4

系統(tǒng) 2415 0

--局部臨時(shí)表:
--臨時(shí)表的表名有一個(gè)前綴#
--臨時(shí)表只對(duì)當(dāng)前會(huì)話有效,只要將連接斷開,再次打開則臨時(shí)表就沒(méi)有了。

--如果臨時(shí)表是在存儲(chǔ)過(guò)程中創(chuàng)建的,則當(dāng)存儲(chǔ)過(guò)程執(zhí)行完畢,則自動(dòng)銷毀。類似于c#變量的作用域范圍。
--

--全局臨時(shí)表:
--前綴##
--多個(gè)會(huì)話中可以共享全局臨時(shí)表
--只有創(chuàng)建該表的會(huì)話斷開時(shí)才會(huì)刪除全局臨時(shí)表,如果這時(shí),正有其他會(huì)話在訪問(wèn)該臨時(shí)表,則會(huì)等待該會(huì)話結(jié)束后刪除臨時(shí)表。

create table #student
(
?username nvarchar(10),
?age int
)
create table ##quanjustudent
(
? username nvarchar(10),
? age int
)
--表變量
declare @T1 table(c1 int,c2 int);
insert into @t1 values(1,2)
select * from @t1

--在視圖中的查詢語(yǔ)句,必須為每一列建一個(gè)列名
create view vw1
as
select
tsname,
case
? when tsage>50 then '豆蔻年華'
?else '青壯年'
end as '外號(hào)'
from tblstudent
select * from vw1

--在視圖中不能使用order by語(yǔ)句。除非:除非另外還指定了 TOP 或 FOR XML
--錯(cuò)誤的寫法
create view vw2
as
select * from tblstudent order by tsid desc
--正確的寫法
create view vw2
as
select top 10 * from tblstudent order by tsid desc

--=======聲明變量----
declare @name varchar(10)
declare @age int
set @name='abc'
set @age=1
print @name
print @age

declare @userAge int
-------------=使用set與select為變量賦值的區(qū)別============
--當(dāng)使用set為變量賦值時(shí),如果右邊返回多個(gè)值,則“報(bào)錯(cuò)”。
?set @userAge=(select tsage from TblStudent)
?print @userAge

declare @userAge int
?--當(dāng)使用select為變量賦值時(shí),如果右邊返回多個(gè)值,則始終以最后一個(gè)為準(zhǔn)
?select top 5? @userAge=tsage from TblStudent
?print @userAge


declare @age int
?--一開始變量沒(méi)有賦值的時(shí)候?yàn)閚ull,null與任何類型計(jì)算得到的結(jié)果還是null
?--所以和建議聲明變量的時(shí)候一定要賦初值。
?set @age=@age+1
?select @age --所以這里輸出還是null


----------事務(wù)--
begin tran
declare @sum int
update bank set salary=salary+1000 where id=1
set @sum+=@@error
update bank set salary=salary-1000 where id=2
set @sum+=@@error
if @sum<>0
begin
-- 回滾
? rollback
end
else
begin
--提交
? commit tran
end

--隱式事務(wù)
SET IMPLICIT_TRANSACTIONS? ON
--關(guān)閉數(shù)據(jù)庫(kù)的隱式提交
SET IMPLICIT_TRANSACTIONS? OFF


------------存儲(chǔ)過(guò)程-----------
---分頁(yè)存儲(chǔ)過(guò)程
create proc fenye
@size int,
@index int,
@total int output
as

? select * from?
(
? select *, row_number() over(order by tsid) as number from tblstudent
)as T
where T.tsid between (@index-1)*@size+1 and @index*@size

select @total=count(1) from tblstudent

declare @cont int
exec fenye 2,2,@cont output
print @cont

?

--sql server中的觸發(fā)器是表級(jí)觸發(fā)器,無(wú)論刪除多少行或者插入多少行,只觸發(fā)一次。
--是按語(yǔ)句來(lái)觸發(fā)的,每次執(zhí)行一次語(yǔ)句,觸發(fā)一次觸發(fā)器。
--不會(huì)每一條語(yǔ)句都觸發(fā)
create trigger tri_tblclass_insert_after
on tblclass after insert
as
declare @classid int
declare @classname varchar(20)
select @classid=tclassid,@classname=tclassname from tblclass
print @classid
print @classname

insert into tblclass values('你懂的','還能有啥哇')


--當(dāng)使用instead of 觸發(fā)器以后,原來(lái)的刪除操作被替換成了:
--insert into TblClassBak select * from deleted
create trigger tri_TblClass_delete_instead_of
on TblClass instead of delete
as
begin
?
?insert into TblClassBak
?select * from deleted
end

SQL基礎(chǔ)4


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論