(超实用、简单明了)Mysql变量定义与赋值
最近在使用存儲過程定時創建分區的時候,運行時經常報錯,原因都是因為變量的定義或者賦值問題導致的,在此記錄一下MySQL的變量定義及賦值,方便自己和大家查閱,各位看到此博客的小伙伴,如有不對的地方請及時通過私信我或者評論此博客的方式指出,以免誤人子弟。多謝!
另外,這是一個系列文章,最終我們將實用MySQL定時器和存儲過程,實現定時自動創建分區功能,這是在此之前需要掌握的知識點,感興趣的敬請關注。
目錄
局部變量
聲明變量
變量賦值
用戶變量
變量賦值
系統變量
查看變量
修改變量
局部變量
通常用在存儲過程或函數中,定義在 begin and之間。
聲明變量
DECLARE var_name[,...] type [DEFAULT value]-
DECLARE:聲明變量的關鍵字。
-
var_name:變量的名稱,可同時定義多個。
-
type:變量數據類型。
-
DEFAULT value:為變量定義默認值,默認值為NULL。
示例:
定義一個變量 a ,數據類型為 int ,默認值為 0:
declare a int default value 0;變量賦值
方式一:使用 set 關鍵字賦值。
SET var_name = expr[,var_name = expr]...-
set:變量賦值關鍵字。
-
var_name: 變量的名稱;
-
expr: 賦值表達式。
注意:一個 SET 語句可以同時為多個變量賦值,各個變量的賦值語句之間用逗號隔開。
示例:
將變量 a 賦值為10:
set a=10;方式二:使用 SELECT ... INTO 賦值。
SELECT col_name [...] INTO var_name[,...] FROM table_name WEHRE condition-
col_name: 查詢的字段名稱。
-
var_name: 變量的名稱。
-
table_name: 參數指表的名稱。
-
condition: 指查詢條件。
注意:將查詢結果賦值給變量時,該查詢語句的返回結果只能是單行。
示例:
從 t_user 表中查詢id為2的記錄,將該記錄的 user_name 賦值給變量 uname:
select user_name into uname from t_user where id = 2;用戶變量
詳情見官網 User-Defined Variables
用戶變量無需聲明,直接賦值即可。用戶變量名不區分大小寫。名稱的最大長度為64個字符。
變量賦值
方式一:使用 SET 賦值。
可以使用形如 set @變量名=變量值 或者 set@變量名:=變量值 的方式賦值。
SET @var_name = expr [, @var_name = expr] ... 或 SET @var_name := expr [, @var_name := expr] ...示例:
SET @a=1,@b=2; SELECT @a,@b;查詢結果如下:
?方式二:使用 SELECT 賦值。
select @變量名:=變量值 select @變量名:=字段名 from table where ... limit 1;示例:
SELECT @a:=1,@b:=2 AS b; SELECT @a,@b;示例:
現有表 t_user :
SELECT @a:=user_name FROM t_user WHERE id =1;查詢結果如下:
?再看如下語句:
SELECT @a:=user_name FROM t_user WHERE age =18;?查詢結果如下:
注意: 通過查詢表給變量賦值時,需保證查詢結果只有一條記錄,如上這種查詢除了三條,最好在查詢后進行 limit 操作。
更多示例:
SET @t1=1, @t2=2, @t3:=4; SELECT @t1, @t2, @t3, @t4 := @t1+@t2+@t3; SET @a=1; SET @a = @a + 1; SELECT @a;?
SET @a=1; SELECT @a, @a:=@a+1系統變量
像我們使用MySQL定時器一樣,首先我們使用 SHOW VARIABLES LIKE '%event_sche%'; 查看是否開啟了定時器支持,這里我們查的就是 系統變量,準確來說是系統變量中的 全局變量(GLOBAL)。
GLOBAL全局變量在MySQL啟動時由服務器自動初始化默認值,這些默認值可通過MySQL的配置文件my.cnf進行更改。臨時性修改可以直接使用 set 進行設置,但是重啟服務后會設置失效。
SESSION類型會話變量在每一次建立新鏈接是初始化,作用域與用戶變量一樣,僅限于當前連接。
查看變量
方式一:使用 SHOW VARIABLES 語句或變量名。
以查看是否自動提交為例:
SHOW VARIABLES LIKE '%autocommit';?顯示所有會話變量:
show [session] variables;其實session不管帶不帶,默認查詢的都是會話變量。
顯示所有全局變量:
show global variables;方式二:使用 SELECT @@。
以查看是否自動提交為例:
SELECT @@autocommit;修改變量
修改全局變量:
以修改是否自動提交為例:
SET GLOBAL autocommit=1; SET @@global.autocommit=1;修改會話變量:
SET autocommit=1; SET SESSION autocommit=1; SET @@global.autocommit=1;總結
以上是生活随笔為你收集整理的(超实用、简单明了)Mysql变量定义与赋值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sql 如果不存在则插入,存在则不操作或
- 下一篇: 04 MySQL多实例部署