SQL變量, since 2021-12-20

(2021.12.20 Mon)
SQL中的變量分為user-defined variable, local variable和system variables.

User-defined Variable(UDV)

用戶定義變量僅供一位用戶使用,不能被其他用戶使用。UDV在聲明和使用時需要在前面加上@符號。UDV也叫會話變量(session variable)。

設(shè)置UDV可使用SETSELECT指令酗捌。注意到使用SELECT指令賦值時,賦值符號為:=

SET @var1 = 1, @var2 = 2;
SELECT @var3 := 3, @var4 := 4;
SET @var6 = CAST(b'1000001' AS UNSIGNED);
SET @var7 = b'1000001';

UDV可定義的數(shù)據(jù)類型包括integer, decimal, floating-point, binary or nonbinary string, or NULL value短绸。

調(diào)用方法

SELECT place FROM table1 WHERE var_s BETWEEN @var3 AND @var4;

可在沒有聲明的情況下直接調(diào)用則返回NULL

SELECT @var5;

局部變量Local Variables

局部變量用DECLARE聲明,并標(biāo)明默認(rèn)值用DEFAULT筹裕。如果沒有指定默認(rèn)值醋闭,則默認(rèn)為NULL

局部變量用于存儲過程朝卒,其作用域是BEGIN...END標(biāo)記的范圍证逻。

DELIMITER //

CREATE PROCEDURE sp_test(var1 INT) 
BEGIN   
    DECLARE start  INT unsigned DEFAULT 1;  
    DECLARE finish INT unsigned DEFAULT 10;

    SELECT  var1, start, finish;

    SELECT * FROM places WHERE place BETWEEN start AND finish; 
END; //

DELIMITER ;

mysql > CALL sp_test(5);

System Variables

(2021.12.21 Tues)
系統(tǒng)變量,也叫全局變量抗斤。對所有客戶端生效囚企,只有super權(quán)限才能修改系統(tǒng)變量。其定義格式為

SET GLOBAL <var_name> = <var_value>;
SET @@global.<var_name> = <var_value>;

對系統(tǒng)變量可以通過表達(dá)式賦值瑞眼,但是需要注意龙宏,服務(wù)器已經(jīng)啟動后(server runtime)使用SET賦值時可以使用乘號(*)等符號。而在服務(wù)器啟動時(server startup)則不能通過運算符號對其賦值伤疙。下面的第一行和第四行都是正確的银酗,其他錯誤。

$> mysql --max_allowed_packet = 16M
$> mysql --max_allowed_packet = 16*1024*1024
mysql> SET GLOBAL max_allowed_packet = 16M;
mysql> SET GLOBAL max_allowed_packet = 16*1024*1024;

在mysql console上徒像,查看系統(tǒng)變量的指令是

mysql> show variables;

可以指定SESSIONGLOBAL關(guān)鍵詞來找到對應(yīng)的變量

SHOW GLOBAL VARIABLES LIKE '%ASDF%';
SHOW SESSION VARIABLES LIKE '%vnbm%';

Persist a global system variable to the mysqld-auto.cnf file (and set the runtime value):

SET PERSIST max_connections = 1000;
SET @@PERSIST.max_connections = 1000;

Persist a global system variable to the mysqld-auto.cnf file (without setting the runtime value):

SET PERSIST_ONLY back_log = 1000;
SET @@PERSIST_ONLY.back_log = 1000;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末黍特,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子锯蛀,更是在濱河造成了極大的恐慌灭衷,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旁涤,死亡現(xiàn)場離奇詭異翔曲,居然都是意外死亡经备,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門部默,熙熙樓的掌柜王于貴愁眉苦臉地迎上來侵蒙,“玉大人,你說我怎么就攤上這事傅蹂》坠耄” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵份蝴,是天一觀的道長犁功。 經(jīng)常有香客問我,道長婚夫,這世上最難降的妖魔是什么浸卦? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮案糙,結(jié)果婚禮上限嫌,老公的妹妹穿的比我還像新娘。我一直安慰自己时捌,他們只是感情好怒医,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著奢讨,像睡著了一般稚叹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拿诸,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天扒袖,我揣著相機(jī)與錄音,去河邊找鬼亩码。 笑死季率,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蟀伸。 我是一名探鬼主播蚀同,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼啊掏!你這毒婦竟也來了蠢络?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤迟蜜,失蹤者是張志新(化名)和其女友劉穎刹孔,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡髓霞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年卦睹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片方库。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡结序,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出纵潦,到底是詐尸還是另有隱情徐鹤,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布邀层,位于F島的核電站返敬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏寥院。R本人自食惡果不足惜劲赠,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望秸谢。 院中可真熱鬧凛澎,春花似錦、人聲如沸钮追。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽元媚。三九已至,卻和暖如春苗沧,著一層夾襖步出監(jiān)牢的瞬間刊棕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工待逞, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留甥角,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓识樱,卻偏偏與公主長得像嗤无,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子怜庸,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容