SQL學習2

來源:互聯網
上載者:User

標籤:avg   end   ascii   color   指令碼   種類   var   技術分享   --   

 

  * SqlServer相比MySQLMySQL不支援交易處理,沒有視圖,沒有預存程序和觸發器,沒有資料庫端的使用者自訂函數,不能完全使用標準的SQL文法

  * 所以在這裡我使用 SQL Server 2014 Management Studio來完成一些SQL Server的工作

 

 

 

T-SQL 編碼

1:局部變數和全域變數

* 全域變數由系統提供且預先聲明,通過在變數名前面添加“@@”符號區別於局部變數。使用者只能使用全域變數不能修改全域變數的值。全域變數的作用範圍是整個SQL Server系統

* 局部變數由使用者自己定義,通過在變數名前面添加“@”符號區別於全域變數

例1:聲明一個變數@testDateTime,將getdate()函數的值放入變數中,最後輸出變數@testDateTime的值

declare @testDateTime varchar(30)select @testDateTime = getdate() select @testDateTime as ‘目前時間‘go

運行結果

例2:聲明一個變數@getAge,將mytestuser表裡面id是2的欄位的age的值放入變數@getAge中,最後輸出@getAge的值

declare @getAge intselect @getAge = age from mytestuser where id=2select @getAge as ‘2號的年齡‘go

運行結果

2:使用運算子

例1:將運算式67%31的值賦給變數@result

declare @result intselect @result = 67%31select @result as ‘結果‘go

運行結果

例2:定義變數x和y,給變數賦值,然後求兩個變數的與、或、異或的結果

declare @x int, @y intset @x = 2set @y = 7select @x & @y as ‘與‘,       @x | @y as ‘或‘,       @x ^ @y as ‘異或‘

運行結果

例3:定義變數x和y,給變數賦值,然後求兩個變數中較小的一個

declare @x int, @y intset @x = 12set @y = 7if @x < @yselect @x as ‘小資料‘elseselect @y as ‘小資料‘

 運行結果

例4:使用串連運算子(+)將兩個字串串連起來

--需要注意的是變數x的長度,如果長度不夠,就不能完整的顯示資料declare @x varchar(70)set @x = ‘米諾八慈‘+‘的‘+‘部落格園‘select @x as ‘資料連線的結果‘

運行結果

3:case語句

例1:如果年齡小於20歲顯示“少年”,如果年齡在20歲到30歲之間顯示“青年”,如果年齡在30歲以上顯示“中年”

/*需要注意的是1:在case和欄位之間是有逗號隔開的2:在when then之間不能使用&&表示並且,所以可以將條件倒置,以避免出現age<30&&age>20*/select name,age,case  when age>30 then ‘中年‘when age>20 then ‘青年‘when age<20 then ‘少年‘end as levelfrom mytestuser

運行結果

4:while表示迴圈

例1:顯示字串“米諾八慈”中的每一個字元以及其ASCII碼

declare @position int,@str varchar(10)set @position = 1 --需要注意的是在SQL裡面字串的從1開始取值set @str = ‘米諾八慈‘while @position <=DATALENGTH(@str)--這裡的長度是8    begin        select SUBSTRING(@str,@position,1),        ascii(SUBSTRING(@str,@position,1))        set @position =@position+1    end

運行結果

5:result語句

result可以從查詢或過程中無條件退出,可在任何時候從過程、批處理或語句塊中退出,而不執行result之後的語句

例1:通過預存程序求使用者平均年齡

--刪除預存程序drop procedure mypro--建立預存程序create procedure mypro @num intas return(select avg(age) from mytestuser where id < @num)--建立查詢declare @avg int ,@number intset @number = 4exec @avg = mypro @number --將變數num的值傳入預存程序並將預存程序的結果賦給變數avgselect @avg as ‘平均年齡‘ 

以上SQL語句一個一個的執行,執行建立查詢的結果

 

 

 

使用者自訂函數

例1:建立一個函數用於顯示出較大的年齡的使用者資訊

--刪除函數drop function showMax--建立函數create function showMax(@id1 int,@id2 int) returns  varchar(50)  --函數名--函數體as  begin       declare @result varchar(50),@name1 varchar(10),@name2 varchar(10),@age1 varchar(10),@age2 varchar(10)      select @age1 = age,@name1 = name from mytestuser where id = @id1      select @age2 = age,@name2 = name from mytestuser where id = @id2      if (@age1<@age2)            set @result = @name2 +‘的年齡是:‘+ @age2      else            set @result = @name1 +‘的年齡是:‘+ @age1      return @result   end/*需要注意的是:1:在函數名裡面聲明了id1和id2,在函數體裡面就不需要聲明可以直接使用了2:必須要用@age1 varchar(10),@age2 varchar(10)將int類型轉換成varchar類型,以便與@name2 +‘的年齡是:‘相連*/--使用函數select dbo.showMax(3,4) as maxMess

 

運行結果

 

 

 

遊標

遊標實際上就是一種能從包括多條資料記錄的結果集中每次提取一條記錄的機制

1:遊標的類型

1:T-SQL遊標

主要用於T-SQL指令碼,預存程序和觸發器。主要用在伺服器上,由用戶端發送給伺服器的T-SQL語句或批處理、預存程序、觸發器中的T-SQL進行管理。不支援提取資料區塊或多行資料

2:API遊標

主要哦用在伺服器上

3:客戶遊標

主要是當在客戶機上緩衝結果集時使用

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------由於T-SQL遊標和API遊標使用在伺服器端上,也叫作伺服器資料指標或後台遊標。用戶端資料指標又被稱為前台遊標

伺服器資料指標包含:靜態資料指標、動態資料指標、順向資料指標、鍵集驅動遊標4種類型

2:遊標的5種操作

聲明遊標 --> 開啟遊標 --> 讀取遊標 --> 關閉遊標(如果不關閉遊標,其他人就可以進入,非常危險) --> 釋放遊標

 

SQL學習2

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.