1. 程式人生 > >SQL Server資料庫開發(2.T-Sql程式設計)

SQL Server資料庫開發(2.T-Sql程式設計)

一,批處理(GO)

        --可以使不在同一批處理中的sql語句相互之間不受影響 
        --把相互聯絡的放在同一批次,沒聯絡的放在不同批次

二,變數分類(區域性變數。全域性變數)
    2.1區域性變數
        先宣告變數  
            [email protected]

變數名  資料型別
            [email protected] char (10)   --宣告一個長度為個字元的變數id
            [email protected] int   --宣告一個存放職員年齡的整型變數

        然後變數賦值 
            

[email protected]變數名 = 值 :用於普通的賦值
            [email protected] = 20
            [email protected]變數名 = 值:用於從表中查詢資料並賦值
            [email protected] = '11111'

        在使用變數            
            列。 找王五學號前後的同學
            declare @sid int 
            select @sid = stuid  from StuInfo where stuname='王五'
            print '王五的學號為:' + convert(varchar(20),@sid)
            select * from StuInfo where [email protected] or [email protected]+1
            
            區域性變數只在定義它的區域性輸入範圍內有效         

    2.2全域性變數
        是以@@全域性變數名  

        由系統定義和維護,只讀不能改   

        全域性變數在整個SQL環境下都可以被訪問或呼叫      


   三,分支結構
           IF-ELSE語句
            --if(條件)
            --    begin
            --        T-SQL語句  
            --    end
            --else if (條件)
            --    begin
            --        T-SQL語句  
            --    end
            --else
            --    begin
            --        T-SQL語句  
            --    end


--1.查找出王五前後學生
declare @name varchar(10),@age int,@nameone varchar(10),@nametwo varchar(10)

select stuid from StuInfo where stuName='王五'

select @name=stuName from StuInfo where stuid=3
select @nameone=stuName from StuInfo where stuid=3+1
select @nametwo=stuName from StuInfo where stuid=3-1

select @name
select @nameone
select @nametwo

--2.比較男女平均成績的優異
declare @nan int,@nv int
select @nan=AVG(score) from StuInfo,StuMarks where StuInfo.stuid=StuMarks.stuid and stusex='男'
select @nv=AVG(score) from StuInfo,StuMarks where StuInfo.stuid=StuMarks.stuid and stusex='女'
if(@nan>@nv)
begin
    print'男生成績優異'
end
else
    print'女生成績優異'

--3.給分數分等級制度
select stuName,score,等級=
case
    when score>=90 then 'A'
    when score>=80 then 'B'
    when score>=70 then 'C'
    when score>=60 then 'D'
    else 'E'
end
from StuInfo,StuMarks 
where StuInfo.stuid=StuMarks.stuid and subject='SQL'


--4.把一個學生成績依次相加修改到70

declare @score1 int
select @score1=score from StuMarks where StuMarksno=6
while (@score1<70)
begin
    set @[email protected]+1
    update StuMarks set score = @score1 where StuMarksno=6    
end
print @score1