mysql變量用法實(shí)例分析【系統(tǒng)變量、用戶變量】
本文實(shí)例講述了mysql變量用法。分享給大家供大家參考,具體如下:
本文內(nèi)容:
- 系統(tǒng)變量
- 用戶變量
- 局部變量
首發(fā)日期:2018-04-18
系統(tǒng)變量:
- 系統(tǒng)變量就是系統(tǒng)已經(jīng)提前定義好了的變量
- 系統(tǒng)變量一般都有其特殊意義。比如某些變量代表字符集、某些變量代表某些mysql文件位置
- 系統(tǒng)變量中包括會(huì)話級(jí)變量(當(dāng)次會(huì)話連接生效的變量,如names),以及全局變量(一直生效的變量) 【系統(tǒng)變量中全局變量和會(huì)話變量其實(shí)是使用一套變量,不同的是會(huì)話變量?jī)H當(dāng)次會(huì)話生效。】
-
- 會(huì)話變量的賦值:set 變量名 = 值; 【比如常用的set names ="utf8";】或者set @@變量名=值
- 全局變量的賦值:set global 變量名 = 值;
查看系統(tǒng)變量:
- show variables;
系統(tǒng)變量的調(diào)用:
- select @@變量名;
用戶變量:
- 用戶變量就是用戶自己定義的變量。
- 系統(tǒng)為了區(qū)別系統(tǒng)變量跟自定義變量,規(guī)定用戶自定義變量必須使用一個(gè)@符號(hào)
- 變量的定義方式:
set @變量名=1- select @變量名:=值;
- select 值 into @變量名;
- 用戶變量可以不聲明定義,就可以直接使用,不過默認(rèn)是null值
- 用戶變量都是會(huì)話級(jí)的變量,僅在當(dāng)次連接中生效。
局部變量:
- 由于局部變量是用戶自定義的,可以認(rèn)為局部變量也是用戶變量【但有所不同,局部中不需要使用@】
- 局部變量一般用在sql語句塊中,比如存儲(chǔ)過程塊、觸發(fā)器塊等
- 局部變量的定義方法:
-
- 先使用declare聲明局部變量,其中可選項(xiàng)default后面可以跟一個(gè)付給變量的默認(rèn)值:【非常重要的一步,不然會(huì)設(shè)置成用戶變量】【注意:變量聲明語句要在其他語句如select語句之前】
- 示例:declare myq int;
- 示例:declare myq int default 666;
- 設(shè)置變量的值:
- set 變量名= 值;
- 獲取變量的值:
- select 變量名;
- 先使用declare聲明局部變量,其中可選項(xiàng)default后面可以跟一個(gè)付給變量的默認(rèn)值:【非常重要的一步,不然會(huì)設(shè)置成用戶變量】【注意:變量聲明語句要在其他語句如select語句之前】
create procedure myset() begin declare mya int; declare myq int default 777; select mya,myq; set myq=6; set mya=666; select mya,myq; end; call myset();
補(bǔ)充:
- 有些人可能會(huì)發(fā)現(xiàn)直接set 變量名=值;也可以定義“用戶變量”;但這是一種不好的行為【這種行為忽略了各自變量的功能】,因?yàn)槟悴恢罆?huì)不會(huì)跟系統(tǒng)變量沖突,所以最好用戶變量加上@
- 因?yàn)?= ,有很多地方都用來判斷是否等于,為了避免歧義,也可以使用:=來賦值

- 【上面雖然給了一些其他的賦值方法,但好像有一些是不通用的,比如:=只用于用戶變量,所以要審慎使用】。
更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲(chǔ)過程技巧大全》及《MySQL數(shù)據(jù)庫(kù)鎖相關(guān)技巧匯總》
希望本文所述對(duì)大家MySQL數(shù)據(jù)庫(kù)計(jì)有所幫助。
相關(guān)文章
mysql關(guān)聯(lián)兩張表時(shí)的編碼問題及解決辦法
在本篇文章里小編給大家整理的是關(guān)于mysql關(guān)聯(lián)兩張表時(shí)的編碼問題及解決辦法,有需要的朋友們可以參考下。2019-09-09
使用MySQL的Binlog進(jìn)行數(shù)據(jù)回滾的完整流程
本文描述了使用MySQL的binlog進(jìn)行數(shù)據(jù)回滾的過程,從確認(rèn)是否啟用Binlog日志到找到誤操作的記錄,再到編寫腳本解析記錄,最后執(zhí)行SQL語句實(shí)現(xiàn)回滾,需要的朋友可以參考下2025-12-12
MySQL在生產(chǎn)環(huán)境出現(xiàn)無法啟動(dòng)的問題解決
在當(dāng)今的數(shù)據(jù)驅(qū)動(dòng)世界中,MySQL作為廣泛應(yīng)用的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),在眾多生產(chǎn)環(huán)境中承擔(dān)著至關(guān)重要的角色,然而,面對(duì)復(fù)雜多變的業(yè)務(wù)場(chǎng)景,MySQL可能會(huì)遭遇各類故障和性能瓶頸,本文將深入探討MySQL在生產(chǎn)環(huán)境出現(xiàn)無法啟動(dòng)的問題解決,需要的朋友可以參考下2024-10-10
MySQL查詢樹形結(jié)構(gòu)數(shù)據(jù)的兩種方法
本文主要介紹了MySQL查詢樹形結(jié)構(gòu)數(shù)據(jù)的兩種方法,可以使用遞歸查詢或者閉包表來實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11
MySQL空間函數(shù)ST_Distance_Sphere()的使用方式
這篇文章主要介紹了MySQL空間函數(shù)ST_Distance_Sphere()的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11

