在T—Sql中使用變量
(一)局部變量
1聲明變量 @age和@name
declare @name varchar(30)
declare @age int
2賦值
---(1)
-- set @age=20
--set @name='wang'
--select @age
--select @name
---(2)
select @age=20
select @name='wang'
print @age
print @name
--3分別使用set和select 爲行號變量@rcount賦值
--計算score表中english平均成績,如果〉=60,查詢正數前三名,否則找出倒數前三名。
select avg(ENGLISH) FROM Score
select avg(isnull(ENGLISH,0))
FROM Score
declare @count int
select @count=COUNT(*) from Score
declare @sum float
select @sum=SUM(ENGLISH) FROM Score
declare @avg float
set @avg=(@sum/@count)
if @avg>=60
begin
select top 3 * from Score order by english desc
end
else
begin
select top 3 * from Score order by english asc
end
4.通過while 計算1---100之間奇數的和。
declare @sum2 int =0
declare @i int =1
while @i<=100
begin
if @i%2<>0
begin
set @sum2=@sum2+@i
end
set @i=@i+1
end
print @sum2
5通過while 計算1---100之間偶數的和。
declare @sum1 int =0
declare @i int =1
while @i<=100
begin
if @i%2<>1
begin
set @sum1=@sum1+@i
end
set @i=@i+1
end
print @sum1
6使用while實現如果english不及格的人超過半數,則給每個人增加2分,循環加,直到不及格的人數少於一半。
declare @count2 int =(select COUNT(*)from Score)
declare @loster int=(select COUNT(*)from Score where english<60)
declare @harfcount int=floor(@count2/2)
while @harfcount<@loster
begin
update Score set english=english+2 where english<60
set @loster=(select COUNT(*)from Score where english<60)
end
7使用事務實現--轉賬問題:從0001賬戶轉1000塊到0002賬戶。
add constraint CH_balance check (balance>=10)
insert into Bank values('0001',10000)
insert into Bank values('0002',100)
update Bank set balance=balance-1000 where Cid='0001'
update Bank set balance=balance+1000 where Cid='0002'
8.打開"隱式事務":設置爲開,刪除表中數據,回滾!(默認情況爲關,如果打開了則不自動提交,學要手動提交)
egin tran
begin try
declare @errorSum int =0
update Bank set balance=balance-900 where Cid='0001'
set @errorSum=@errorSum+@@error
update Bank set balance=balance+900 where Cid='0002'
set @errorSum=@errorSum+@@error
commit
print '提交!!'
end try
begin catch
rollback
print '回滾!'
end catch
9關閉“隱式事務”。
--如果隱式事務打開,然後刪除某個表,在事務沒有結束前,其它查詢不能訪問該表。
10使用系統存儲過程
給數據'Test'重命名爲:'Test123'
exec sp_renamedb 'Test','Test123'
查詢當前數據庫中有多少個表
exec sp_tables
查詢當前數據庫中student表中的列信息
exec sp_columns 'Student'
11自定義存儲過程 “usp_Helloworld”並使用。實現輸出hello world!
create proc usp_Helloworld
as
begin
print 'hello world!'
end
exec usp_Helloworld