博客 > SQL知識:SQL變量定義、分類及應(yīng)用場景
瀏覽量:1829次評論:0次
作者:銳成網(wǎng)絡(luò)整理時間:2024-05-30 15:58:32
在數(shù)據(jù)庫管理系統(tǒng)中,SQL語言是一種用于操作和管理數(shù)據(jù)的標(biāo)準(zhǔn)化語言,它通常被用于查詢、插入、更新和刪除數(shù)據(jù)庫中的數(shù)據(jù)。其中,變量是在SQL可以進(jìn)行賦值的參數(shù)。今天,我們將介紹在SQL中變量的定義、分類以及應(yīng)用場景。
一、變量的定義
SQL Server中的變量就是一個參數(shù),可以對這個參數(shù)進(jìn)行賦值。
二、變量的分類
變量分為局部變量和全局變量,局部變量用@來標(biāo)識,全局變量用@@來標(biāo)識(常用的全局變量一般都是已經(jīng)定義好的)
三、聲明變量
變量在使用前必須先聲明才能夠使用。
申明局部變量語法
DECLARE @變量名 數(shù)據(jù)類型;
例如:
DECLARE @A INT;
這樣就聲明了一個整數(shù)型的變量@A
四、局部變量賦值
聲明完了變量就可以給變量賦值了,變量賦值有兩種方式SET 或 SELECT
語法
SET 變量名=值
SELECT 變量名1=值1,變量名2=值2
從上面的語法大家可能已經(jīng)看出兩種賦值方式的區(qū)別了,SET只能給一個變量賦值,SELECT 可以給多個變量賦值。
例如
SET @A=3
SELECT @A=字段名1,@B=字段名2 FROM TABLE
五、變量常用場景
變量一般用作參數(shù)去給字段賦值,即將變量的值反過來賦值給字段。
我們以表Customers作為示例表
Customers
DECLARE @ID INT
DECLARE @NAME VARCHAR2(50)
DECLARE @ADDRESS VARCHAR2(50)
--用SET方法給變量賦值 , 此方法一次只能給一個變量賦值
SET @ID=1
--將部門ID為1的客戶姓名和地址,賦值給@NAME和@ADDRESS變量 ,此方法能一次多個變量賦值
SELECT @NAME=姓名,@ADDRESS=地址 FROM Customers WHERE 客戶ID=@ID
--查詢變量里的結(jié)果
SELECT @NAME,@ADDRESS
結(jié)果如下:
如果我們想查詢其他ID的姓名和地址,只需要更改一下@ID的值即可。
Q:可能有人會問,我直接把值寫在客戶ID后面不就可以了嗎?為什么寫這么長一段內(nèi)容來要使用變量呢?
這里有兩個原因
1、使用簡便
當(dāng)一個查詢里同一個字段需要修改的地方較多的時候,我們只需要修改這個字段對應(yīng)的變量內(nèi)容,那么所有的字段對應(yīng)的值都會一起跟著修改。
例如
要查詢學(xué)生們對應(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都會變更。
2、可以提高查詢效率。
當(dāng)我們使用查詢的使用,數(shù)據(jù)庫在執(zhí)行這個查詢語句的時候,如果不使用變量來修改值,實(shí)際上是兩個查詢。
例如:
SELECT * FROM TEST WHERE Student='張三';
SELECT * FROM TEST WHERE Student='李四'
執(zhí)行這兩個查詢,數(shù)據(jù)庫會制定兩個執(zhí)行計劃,而制定執(zhí)行計劃是需要消耗系統(tǒng)資源的。
而如果我們改成:
DECLARE @NAME VARCHAR(20)
SET @NAME='張三'
SELECT * FROM TEST WHERE Student=@NAME
當(dāng)我們修改@NAME的值為'李四'的時候,數(shù)據(jù)庫還是會使用之前的執(zhí)行計劃。這樣就節(jié)省了時間。
六、全局變量
全局變量使用@@來表示,一般都是系統(tǒng)預(yù)定義的一些全局變量。常用的全局變量有
@@ERROR ——最后一個SQL錯誤的錯誤號
@@IDENTITY —–最后一次插入的標(biāo)識值
@@LANGUAGE —–當(dāng)前使用的語言的名稱
@@MAX_CONNECTIONS – 可以創(chuàng)建的同時連接的最大數(shù)目
@@ROWCOUNT —-受上一個SQL語句影響的行數(shù)
@@SERVERNAME —-本地服務(wù)器的名稱
@@TRANSCOUNT —–當(dāng)前連接打開的事物數(shù)
@@VERSION —–SQL Server的版本信息
例如查詢數(shù)據(jù)庫的版本號
PRINT @@VERSION
結(jié)果:
查詢本地服務(wù)器的名稱
PRINT @@SERVERNAME
結(jié)果:
這些信息都存儲在全局變量中,當(dāng)發(fā)生改變時,全局變量的值也會跟著改變。
重要聲明:本文來自SQL數(shù)據(jù)庫開發(fā),經(jīng)授權(quán)轉(zhuǎn)載,版權(quán)歸原作者所有,不代表銳成觀點(diǎn),轉(zhuǎn)載的目的在于傳遞更多知識和信息。
相關(guān)文章推薦
2025-05-27 11:53:22
2024-08-20 17:58:16
2024-08-19 17:49:29
2024-08-19 10:23:28
2024-08-16 17:06:33
熱門工具
標(biāo)簽選擇
閱讀排行
我的評論
還未登錄?點(diǎn)擊登錄