1. 程式人生 > >MySQL數據庫8(二十二)變量

MySQL數據庫8(二十二)變量

rom 器) bubuko ima sql數據庫 字段 strong 技術分享 觸發

變量

Mysql本質是一種編程語言,需要很多變量來保存數據。Mysql中有很多的屬性控制都是通過mysql中固有的變量來實現的。

系統變量

系統內部定義的變量,系統變量針對所有用戶(mysql客戶端)有效

查看系統所有變量

show variables;

技術分享圖片

Mysql允許用戶使用select查詢變量的數據值(系統變量)

基本語法:select @@變量名;

技術分享圖片

修改系統變量

分為兩種修改方式:

1、局部修改(會話級別):只針對當前自己客戶端當次連接有效

基本語法:set 變量名 = 新值;

技術分享圖片

2、全局修改:針對所有客戶端,“所有時刻”都有效

基本語法:set global 變量名 = 值;或者 set @@global.變量名 = 值;

全局修改後,所有連接的客戶端並沒有發現改變?全局修改只針對新客戶端生效(正在連著的無效)

註意:如果想要本次連接對應的變量修改有效,那麽不能使用全局修改,只能使用會話級別修(set 變量名 = 值;)

會話變量

會話變量也稱之為用戶變量,會話變量跟mysql客戶端是綁定的,設置的變量,只對當前用戶使用的客戶端生效。

定義用戶變量:set @變量名 = 值;

技術分享圖片

在mysql只因為沒有比較符號 ==,所以使用=代替比較符號,有時候在賦值的時候,會報錯;mysql為了避免系統分不清是賦值還是比較:特定增加一個變量的賦值符號: :=

賦值:set @變量名 := 值;

技術分享圖片

Mysql是專門存儲數據的:允許將數據從表中取出存儲到變量中:查詢得到的數據只能是一行數據(一個變量對應一個字段值):mysql中沒有數組

1、賦值且查看賦值過程:select @變量1: =字段1,@變量2 : = 字段2 from 數據表 where條件;

錯誤語法:就是因為使用=,系統會當作比較符號來處理

技術分享圖片

正確使用: :=

技術分享圖片

2、只賦值不看過程:select 字段1,字段2…from 數據源 where 條件 into @變量1,@變量2…;

技術分享圖片

技術分享圖片

局部變量

作用範圍在begin到end語句塊之間。在該語句塊裏設置的變量,declare語句專門用於定義局部變量。

1、局部變量是使用declare關鍵字聲明

2、局部變量declare語句出現的位置一定是在begin和end之間(begin end是在大型語句塊中使用:函數/存儲過程/觸發器)

3、聲明語法:declare 變量名 數據類型[屬性];

declare res int default 0;

declare res int = 0;

MySQL數據庫8(二十二)變量