明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

對mysql中變量的詳細(xì)說明

[摘要]定義變量語法如下declare var_name[,...] type [default value];MYSQL 變量定義只能在存儲過程或函數(shù)里面定義,不像 Oracle / SQL Server。該變量的作用范圍只能在begin...end塊中。變量定義必須寫在復(fù)合語句的開頭,并且在任何其他語...

定義變量

語法如下

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

MYSQL 變量定義只能在存儲過程函數(shù)里面定義,不像 Oracle / SQL Server。該變量的作用范圍只能在begin...end塊中。變量定義必須寫在復(fù)合語句的開頭,并且在任何其他語句的前面?梢砸淮温暶鞫鄠相同類型的變量?梢允褂胐efault賦默認(rèn)值。declare只能用在局部變量定義中。

#舉例
declare v_test int default 10;

設(shè)置變量

方式一

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。其作用域僅限于該語句塊,在該語句塊執(zhí)行完畢后,局部變量就消失了。局部變量一般用declare來聲明,可以使用default來說明默認(rèn)值。

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;

用戶變量(一個@)

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

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

結(jié)果


用戶變量

會話變量(兩個@@)

服務(wù)器為每個連接的客戶端維護(hù)一系列會話變量。在客戶端連接時,使用相應(yīng)全局變量的當(dāng)前值對客戶端的會話變量進(jìn)行初始化。設(shè)置會話變量不需要特殊權(quán)限,但客戶端只能更改自己的會話變量,而不能更改其它客戶端的會話變量。會話變量的作用域與用戶變量一樣,僅限于當(dāng)前連接。當(dāng)當(dāng)前連接斷開后,其設(shè)置的所有會話變量均失效。

#設(shè)置會話變量有如下三種方式:
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%";

全局變量(兩個@@)

全局變量影響服務(wù)器整體操作。當(dāng)服務(wù)器啟動時,它將所有全局變量初始化為默認(rèn)值。這些默認(rèn)值可以在選項文件中或在命令行中指定的選項進(jìn)行更改。要想更改全局變量,必須具有SUPER權(quán)限。全局變量作用于server的整個生命周期,但是不能跨重啟。即重啟后所有設(shè)置的全局變量均失效。要想讓全局變量重啟后繼續(xù)生效,需要更改相應(yīng)的配置文件

#要設(shè)置一個全局變量,有如下兩種方式:
set global var_name = value; 
set @@global.var_name = value; //同上

#要想查看一個全局變量,有如下兩種方式:
select @@global.var_name;
show global variables like "%var%";

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

【相關(guān)推薦】

1. 免費mysql在線視頻教程

2. MySQL最新手冊教程

3. 布爾教育燕十八mysql入門視頻教程

以上就是對mysql中變量的詳細(xì)介紹的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門到精通的SQL知識。