mysql e 變數 mysql 變數簡介

2021-10-20 21:58:16 字數 2279 閱讀 9232

根據mysql手冊,mysql的變數分為兩種:系統變數和使用者變數。但是在實際使用中,還會遇到諸如區域性變數、會話變數等概念。根據個人感覺,mysql變數大體可以分為四種型別:

##一、區域性變數。##

區域性變數一般用在sql語句塊中,比如儲存過程的begin/end。其作用域僅限於該語句塊,在該語句塊執行完畢後,區域性變數就消失了。 區域性變數一般用declare來宣告,可以使用default來說明預設值。

例如在儲存過程中定義區域性變數:

drop procedure if exists add;

create procedure add

in a int,

in b int

begin

declare c int default 0;

set c = a + b;

select c as c;

end;

在上述儲存過程中定義的變數c就是區域性變數

##二、使用者變數。##

使用者變數的作用域要比區域性變數要廣。使用者變數可以作用於當前整個連線,但是當當前連線斷開後,其所定義的使用者變數都會消失。 使用者變數使用如下的方式定義: @變數名

對使用者變數賦值有兩種方式,一種是直接用"="號,另一種是用":="號。其區別在於使用set命令對使用者變數進行賦值時,兩種方式都可以使用;當使用select語句對使用者變數進行賦值時,只能使用:=方式,因為在select語句中,=號被看作是比較操作符。

示例程式如下: drop procedure if exists math; create procedure math ( in a int, in b int ) begin set @var1 = 1; set @var2 = 2; select @sum:=(a + b) as sum, @dif:=(a - b) as dif; end;

mysql> call math(3, 4);

+------+------+ | sum | dif | +------+------+ | 7 | -1 | +------+------+

1 row in set (0.00 sec)

query ok, 0 rows affected (0.00 sec)

mysql> select @var1; //var1為使用者變數

+-------+ | @var1 | +-------+ | 1 | +-------+ 1 row in set (0.00 sec)

mysql> select @var2; //var2為使用者變數

+-------+ | @var2 | +-------+ | 2 | +-------+ 1 row in set (0.00 sec)

##3、會話變數##

伺服器為每個連線的客戶端維護一系列會話變數。在客戶端連線時,使用相應全域性變數的當前值對客戶端的會話變數進行初始化。設定會話變數不需要特殊許可權,但客戶端只能更改自己的會話變數,而不能更改其它客戶端的會話變數。會話變數的作用域與使用者變數一樣,僅限於當前連線。當當前連線斷開後,其設定的所有會話變數均失效。 設定會話變數有如下三種方式:

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> show session variables;

##4、全域性變數##

全域性變數影響伺服器整體操作。當伺服器啟動時,它將所有全域性變數初始化為預設值。這些預設值可以在選項檔案中或在命令列中指定的選項進行更改。要想更改全域性變數,必須具有super許可權。全域性變數作用於server的整個生命週期,但是不能跨重啟。即重啟後所有設定的全域性變數均失效。要想讓全域性變數重啟後繼續生效,需要更改相應的配置檔案。

要設定乙個全域性變數,有如下兩種方式:

set global var_name = value; //注意:此處的global不能省略。根據手冊,set命令設定變數時若不指定global、session或者local,預設使用session

set @@global.var_name = value; //同上

要想檢視乙個全域性變數,有如下兩種方式:

select @@global.var_name;

show global variables like "%var%";

mysql> show global variables;

mysql負變數 MySQL的變數

系統變數 系統定義好的變數,大部分時候使用者根本不需要使用系統變數。系統變數是用來控 務器表現的。如 autocommit,auto increment increment等。檢視系統變數 檢視所有變數 show variables 檢視範圍變數 show variables like 變數名 修改...

mysql 當變數存在 mysql變數

1.區域性變數 begin declare g score int default 10 end 僅在begin.end之間有效 2.使用者變數 set g score 10 或者set g score 10 或者select g socre 10 或者select g score score fr...

mysql內建變數 MySQL常用內建變數

mysql用很多常用的內建變數,掌握這些內建變數後對於我們快速獲取當前mysql的配置有很大幫助,下面就來列舉幾個常用的變數。檢視當前mysql版本號資訊。show variables like version mariadb none show variables like version var...