1. 分類
- 系統(tǒng)變量:全局變量聂示,會話變量
- 自定義變量:用戶變量,局部變量
2. 系統(tǒng)變量
說明
變量是由系統(tǒng)提供条霜,不是用戶定義催什,屬于服務(wù)器層面
語法
- 查看所有的系統(tǒng)變量
-- 全局變量
SHOW GLOBAL VARIABLES ;
-- 會話變量(session可以省略)
SHOW SESSION VARIABLES ;
- 查看滿足條件的部分系統(tǒng)變量
SHOW GLOBAL VARIABLES LIKE '%char%' ;
- 查看指定的某個系統(tǒng)變量
SELECT
@@global.character_set_server ;
- 為某個具體的系統(tǒng)變量賦值
SET GLOBAL autocommit = 0 ;
SET @@global.autocommit = 0 ;
總結(jié)
全局變量需要加global關(guān)鍵字,不加關(guān)鍵字默認(rèn)為會話變量宰睡。
服務(wù)器每次啟動將會為所有的全局變量賦初始值蒲凶,修改的值對所有的連接都有效,但是不能跨重啟拆内。
會話變量僅針對于當(dāng)前會話有效
3. 自定義變量
說明
變量是用戶自定義旋圆,不由系統(tǒng)給出
用戶變量
- 作用域
針對于當(dāng)前會話有效,同于會話變量的作用域麸恍,應(yīng)用于任何位置都可以灵巧,無需定義類型 - 聲明并初始化(更新)
SET @dudu1 = 567 ;
SET @dudu2 := 678 ;
SELECT
@dudu3 := 789 ;
SELECT
COUNT(*) INTO @num
FROM
`employees` ;
- 查看
SELECT
@num ;
局部變量
- 作用域
僅僅在定義的begin end中有效,應(yīng)用在begin end中并且必須是第一條語句抹沪,需要聲明類型 - 聲明
DECLARE dudu INT ;
DECLARE dudu INT DEFAULT 123 ;
- 賦值
SET dudu1 = 567 ;
SET dudu2 := 678 ;
SELECT
@dudu3 := 789 ;
SELECT
COUNT(*) INTO num
FROM
`employees` ;
- 使用
SELECT
num ;
案例:聲明兩個變量并賦值刻肄,求和
- 用戶變量
SET @dudu := 1 ;
SET @zhou := 2 ;
SET @sum := @dudu + @zhou ;
SELECT
@sum ;
- 局部變量
DECLARE dudu INT 1 ;
DECLARE zhou INT 2 ;
DECLARE `sum` ;
SET `sum` = dudu + zhou ;
SELECT
`sum` ;