mysql 變量聲明及賦值的三種方式


1.情景展示

  在mysql中,如何申明一個變量並進行使用?

  MySQL中主要有三種類型的變量:局部變量、系統變量及用戶自定義變量。

2.局部變量(無前綴)

  2.1 聲明變量

  作用域:BEGIN,END之間才能訪問得到;

  適用范圍:可以用在存儲過程或函數中;

  使用前提:必須使用關鍵詞DECLARE或者作為存儲過程的輸入或輸出參數使用。

  說       明:

  多個變量的聲明必須使用多個declare一一對應,否則會報錯;

  定義變量的數據類型時,必須指定允許接收的最大字節數,否則會報錯。

  以上兩種變量的定義方式,在BEGIN,END之間進行賦值之后,就能直接使用啦。

  2.2 變量賦值

  方式一:在定義變量的時候設置默認值;

  比如:

DECLARE
		V_END_NUMBER VARCHAR ( 50 ) DEFAULT '12345';

  需要提醒的一點是:在使用declare定義變量的時候,如果不設置默認值的話,它的初始化值=NULL。

  方式二:select cloumn1, cloumn2, ... into v_name1, v_name2, ... from table。

  這里還涉及兩種情況:

  當將查詢結果塞給兩個及以上變量時,INTO左邊的字段和INTO右邊的變量數量必須一一對應上才行,並且只能使用一個INTO;

  當將查詢結果塞給一個變量時,可以將這個作為最后一個查詢字段,並且可以使用INTO賦值,后面不能再跟其他字段。

3.系統變量(以@@為前綴)

  MySQL服務器維護許多系統變量配置為默認值。系統變量可以分為:

  GLOBAL類型:全局變量(影響服務器的整體操作);

  SESSION類型:會話變量(影響其對各個客戶端連接的操作);

  BOTH類型:現在還不知道它是個啥。

  3.1 查詢變量

  要查看正在運行的服務器使用的當前值,有兩種方式:

  方式一:SHOW VARIABLES 語句或變量名;

  以自動提交為例:

  方式二:SELECT @@變量名。

  以自動提交為例:

  3.2 修改變量

  修改全局變量有2種方式:

SET GLOBAL sort_buffer_size=1000000;
SET @@global.sort_buffer_size=1000000;

  修改會話變量有4種方式:

SET sort_buffer_size=1000000;
SET SESSION sort_buffer_size=1000000;
SET @@sort_buffer_size=1000000;
SET @@local.sort_buffer_size=10000;

4.自定義變量(以@為前綴)

  您可以訪問任何用戶定義的變量,而不聲明它或初始化它;

  如果引用尚未初始化的變量,則它的值為NULL,並且類型為字符串;

  變量類型:整數,小數,浮點數,二進制或非二進制字符串或NULL;

  用戶定義的變量是會話特定的。 也就是說,由一個客戶端定義的用戶變量不能被其他客戶端看到或使用。

  使用自定義變量,無需聲明直接賦值就可以啦。

  4.1 變量賦值

  方式一:使用set

  變形一:set @變量名=變量值

  變形二:set @變量名:=變量值

  

  方式二:使用select

  注意:使用select賦值,必須使用“:=”,不能使用“=”,因為等於號在這里代表的含義是:比較;

  變形一:select @變量名:=變量值

  變形二:select @變量名:=字段名 from table where ... limit 1;

  說明:通過查表給變量賦值的方式,前提條件是查詢結果只有一條記錄;

  為什么要限定一條記錄,因為變量只有一個值!下面我們可以進行一下測試:

  看似變量userKey2有多個變量值,事實果真如此嗎?

  其實際結果只有一項,就是上面多條記錄最末行的值。

  4.2 變量使用

  用法:@變量名

  這樣一來,就可以看出:使用局部變量最終是要服務於於SQL的,不然變量的定義沒有任何意義。

  我們可以得出這樣的結論:局部變量適用於SQL執行。

寫在最后

  哪位大佬如若發現文章存在紕漏之處或需要補充更多內容,歡迎留言!!!

 相關推薦:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM