對mysql中變量的詳細介紹

定義變量

語法如下

declare?var_name[,...]?type?[default?value];

MYSQL 變量定義只能在MYSQLMYSQL里面定義,不像 Oracle / SQL Server。該變量的作用范圍只能在begin…MYSQL塊中。變量定義必須寫在復合語句的開頭,并且在任何其他語句的前面。可以一次聲明多個相同類型的變量。可以使用default賦默認值。declare只能用在局部變量定義中。

#舉例  declare?v_test?int?default?10;

設置變量

方式一

set?var_name=expr,[,var_name2=expr?...];    #舉例  set?v_test=15;

方式二

select?col_name[,...]?into?var_name[,...]?table_expr;    #舉例  select?sid?into?@a?from?test1;

如果col_name(如sid)返回多行值,@a最后只會去最后一行值。

變量分類

局部變量(不需要加@)

局部變量一般用在sql語句塊中,比如存儲過程的begin/end。其作用域僅限于該語句塊,在該語句塊執行完畢后,局部變量就消失了。局部變量一般用declare來聲明,可以使用default來說明默認值。

create?procedure?add(in?a?int,in?b?int)  begin  ????declare?c?int?default?0;#c定義的局部變量  ????set?c?=?a?+?b;  ????select?c?as?c;  end;

用戶變量(一個@)

用戶MYSQL要比局部變量要廣。用戶變量可以作用于當前整個連接,但是當當前連接斷開后,其所定義的用戶變量都會消失。
用戶變量使用如下的方式定義:@MYSQL

#舉例  set?@a?=?1;  set?@b?=?2;  select?@sum:=(@a?+?@b),?@dif:=(@a?-?@b);

結果

對mysql中變量的詳細介紹

用戶變量

會話變量(兩個@@)

服務器為每個連接的客戶端維護一系列會話變量。在客戶端連接時,使用相應全局變量的當前值對客戶端的會話變量進行初始化。設置會話變量不需要特殊權限,但客戶端只能更改自己的會話變量,而不能更改MYSQL客戶端的會話變量。會話變量的作用域與用戶變量一樣,僅限于當前連接。當當前連接斷開后,其設置的所有會話變量均失效。

#設置會話變量有如下三種方式:  set?session?var_name?=?value;  set?@@session.var_name?=?value;  set?var_name?=?value;    #查看一個會話變量也有如下三種方式:  select?@@var_name;  select?@@session.var_name;  show?session?variables?like?"%var%";

全局變量(兩個@@)

全局變量影響服務器整體操作。當服務器啟動時,它將所有全局變量初始化為默認值。這些默認值可以在選項文件中或在命令行中指定的選項進行更改。要想更改全局變量,必須具有MYSQL權限。全局變量作用于server的整個MYSQL,但是不能跨重啟。即重啟后所有設置的全局變量均失效。要想讓全局變量重啟后繼續生效,需要更改相應的MYSQL

#要設置一個全局變量,有如下兩種方式:  set?global?var_name?=?value;?  set?@@global.var_name?=?value;?//同上    #要想查看一個全局變量,有如下兩種方式:  select?@@global.var_name;  show?global?variables?like?"%var%";

注意:此處的global不能省略。根據手冊,set命令設置變量時若不指定GLOBAL、SESSION或者LOCAL,默認使用SESSION。

【相關推薦】

1.?MYSQL

2.?MYSQL

3. MYSQL

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享