11月8日

在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
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章