<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          SQL中的變量

          共 2493字,需瀏覽 5分鐘

           ·

          2021-08-24 17:05

          點(diǎn)擊關(guān)注上方“SQL數(shù)據(jù)庫開發(fā)”,

          設(shè)為“置頂或星標(biāo)”,第一時(shí)間送達(dá)干貨

          SQL專欄

          SQL基礎(chǔ)知識(shí)第二版
          SQL高級(jí)知識(shí)第二版

          變量的定義

          SQL Server中的變量就是一個(gè)參數(shù),可以對(duì)這個(gè)參數(shù)進(jìn)行賦值。


          變量的分類

          變量分為局部變量和全局變量,局部變量用@來標(biāo)識(shí),全局變量用@@來標(biāo)識(shí)(常用的全局變量一般都是已經(jīng)定義好的)


          聲明變量

          變量在使用前必須先聲明才能夠使用。

          申明局部變量語法

          DECLARE @變量名 數(shù)據(jù)類型;

          例如:

          DECLARE @A INT;

          這樣就聲明了一個(gè)整數(shù)型的變量@A


          局部變量賦值

          聲明完了變量就可以給變量賦值了,變量賦值有兩種方式SET 或 SELECT

          語法

          SET 變量名=值

          SELECT  變量名1=值1,變量名2=值2

          從上面的語法大家可能已經(jīng)看出兩種賦值方式的區(qū)別了,SET只能給一個(gè)變量賦值,SELECT 可以給多個(gè)變量賦值。

          例如

          SET @A=3
          SELECT @A=字段名1,@B=字段名2 FROM TABLE


          變量常用場景

          變量一般用作參數(shù)去給字段賦值,即將變量的值反過來賦值給字段。

          我們以表Customers作為示例表

          DECLARE @ID INT
          DECLARE @NAME VARCHAR2(50)
          DECLARE @ADDRESS VARCHAR2(50)
          --用SET方法給變量賦值 , 此方法一次只能給一個(gè)變量賦值
          SET @ID=1
          --將部門ID為1的客戶姓名和地址,賦值給@NAME和@ADDRESS變量 ,此方法能一次多個(gè)變量賦值
          SELECT @NAME=姓名,@ADDRESS=地址 FROM Customers WHERE 客戶ID=@ID
          --查詢變量里的結(jié)果
          SELECT @NAME,@ADDRESS

          結(jié)果如下:

          如果我們想查詢其他ID的姓名和地址,只需要更改一下@ID的值即可。


          Q:可能有人會(huì)問,我直接把值寫在客戶ID后面不就可以了嗎?為什么寫這么長一段內(nèi)容來要使用變量呢?

          這里有兩個(gè)原因

          1、使用簡便

          當(dāng)一個(gè)查詢里同一個(gè)字段需要修改的地方較多的時(shí)候,我們只需要修改這個(gè)字段對(duì)應(yīng)的變量內(nèi)容,那么所有的字段對(duì)應(yīng)的值都會(huì)一起跟著修改。

          例如

          要查詢學(xué)生們對(duì)應(yīng)的不同老師的信息:

          DECLARE @ID INT
          SET @ID=1
          SELECT * FROM TEST WHERE Teacher=@ID AND Student='張三'
          UNION ALL
          SELECT * FROM TEST WHERE Teacher=@ID AND Student='李四'
          UNION ALL
          SELECT * FROM TEST WHERE Teacher=@ID AND Student='王五'
          UNION ALL
          SELECT * FROM TEST WHERE Teacher=@ID AND Student='馬六'
          UNION ALL
          SELECT * FROM TEST WHERE Teacher=@ID AND Student='趙七'

          我們只需要修改@ID的值,下面的所有查詢的ID都會(huì)變更。


          2、可以提高查詢效率。

          當(dāng)我們使用查詢的使用,數(shù)據(jù)庫在執(zhí)行這個(gè)查詢語句的時(shí)候,如果不使用變量來修改值,實(shí)際上是兩個(gè)查詢。

          例如:

          SELECT * FROM TEST WHERE Student='張三'
          SELECT * FROM TEST WHERE Student='李四'

          執(zhí)行這兩個(gè)查詢,數(shù)據(jù)庫會(huì)制定兩個(gè)執(zhí)行計(jì)劃,而制定執(zhí)行計(jì)劃是需要消耗系統(tǒng)資源的。

          而如果我們改成:

          DECLARE @NAME VARCHAR(20)
          SET @NAME='張三'
          SELECT * FROM TEST WHERE Student=@NAME

          當(dāng)我們修改@NAME的值為'李四'的時(shí)候,數(shù)據(jù)庫還是會(huì)使用之前的執(zhí)行計(jì)劃。這樣就節(jié)省了時(shí)間。


          全局變量

          全局變量使用@@來表示,一般都是系統(tǒng)預(yù)定義的一些全局變量。常用的全局變量有

          @@ERROR ——最后一個(gè)SQL錯(cuò)誤的錯(cuò)誤號(hào) 

          @@IDENTITY —–最后一次插入的標(biāo)識(shí)值 

          @@LANGUAGE —–當(dāng)前使用的語言的名稱 

          @@MAX_CONNECTIONS – 可以創(chuàng)建的同時(shí)連接的最大數(shù)目 

          @@ROWCOUNT —-受上一個(gè)SQL語句影響的行數(shù) 

          @@SERVERNAME —-本地服務(wù)器的名稱 

          @@TRANSCOUNT —–當(dāng)前連接打開的事物數(shù) 

          @@VERSION —–SQL Server的版本信息


          例如查詢數(shù)據(jù)庫的版本號(hào)

          PRINT @@VERSION


          結(jié)果:


          查詢本地服務(wù)器的名稱

          PRINT @@SERVERNAME

          結(jié)果:

          這些信息都存儲(chǔ)在全局變量中,當(dāng)發(fā)生改變時(shí),全局變量的值也會(huì)跟著改變。


          以上就是變量的一些相關(guān)內(nèi)容,如有什么疑問,可以在底下留言,我會(huì)一一回復(fù)的。


          總結(jié)

          變量的應(yīng)用范圍比較廣,特別是在存儲(chǔ)過程,游標(biāo)還有動(dòng)態(tài)SQL中都有應(yīng)用。作用也比較明顯,在查詢優(yōu)化方面也是一個(gè)不錯(cuò)的選擇。此外還有很多全局變量可以供我們?cè)谄綍r(shí)的開發(fā)中去使用,有興趣的可以去探究一下其他全局變量的用法。


          最后給大家分享我寫的SQL兩件套:《SQL基礎(chǔ)知識(shí)第二版》《SQL高級(jí)知識(shí)第二版》的PDF電子版。里面有各個(gè)語法的解釋、大量的實(shí)例講解和批注等等,非常通俗易懂,方便大家跟著一起來實(shí)操。

          有需要的讀者可以下載學(xué)習(xí),在下面的公眾號(hào)「數(shù)據(jù)前線」(非本號(hào))后臺(tái)回復(fù)關(guān)鍵字:SQL,就行
          數(shù)據(jù)前線


          后臺(tái)回復(fù)關(guān)鍵字:1024,獲取一份精心整理的技術(shù)干貨

          后臺(tái)回復(fù)關(guān)鍵字:進(jìn)群,帶你進(jìn)入高手如云的交流群。


          推薦閱讀

          瀏覽 83
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产aaa | 在线免费观看日韩一级 | 哪个网站可以看AV | 国产日在线 | 狠狠操人人摸 |