/*進階17 變量 系統變量: 全局變量: 會話變量: 自定義變量: 用戶變量: 局部變量: */ /* #一: 系統變量 #說明: 變量由系統提供,不是用戶定義的,屬於服務器層面 #使用的語法 #1/查看所有的系統變量, show global /[session] variables; 2.查看滿足條件的部分系統變量 show global/[session] variables like '%char%'; 3.查看指定的某個系統變量的值 select @@global/[session] .系統變量名; 4.為某個系統變量賦值 方式一: set global/[session] 系統變量名=值; 方式二: set @@global/[session].系統變量名=值; 注意: 如果是全局級別,則需要加上global; 如果是會話級別,則需要加上session ;【如果不寫,默認是這個】 */ /* #2>> 會話變量 作用域 : 僅對當前會話(查詢的sql文件 / 連接) 有效 #① : 查看所有的會話變量 SHOW VARIABLES; #547行 SHOW SESSION VARIABLES; #547行 #② : 查看部分的會話變量 SHOW VARIABLES LIKE '%char%'; SHOW SESSION VARIABLES LIKE '%char%'; */ /* #2>> 會話變量 作用域 : 僅對當前會話(查詢的sql文件 / 連接) 有效 對比用戶變量和局部變量: 作用域 定義和使用的位置 語法 用戶變量: 當前會話 會話中的任何地方 必須加@符號,不用限定類型 局部變量: begin end中 只能在begin end中,且 一般不用加@符號,需要限定類型 為第一句話 */ #1》 全局變量 #① 查看所有的全局變量 SHOW GLOBAL VARIABLES; #② 查看部分的全局變量 SHOW GLOBAL VARIABLES LIKE 'character%'; #③ 查看指定的全局變量 SELECT @@global.autocommit; #1 #④: 為某個指定的全局變量賦值 SET @@global.autocommit=0; #0 #2>> 會話變量 /* 作用域 : 僅對當前會話(查詢的sql文件 / 連接) 有效 */ #① : 查看所有的會話變量 SHOW VARIABLES; #547行 SHOW SESSION VARIABLES; #547行 #② : 查看部分的會話變量 SHOW VARIABLES LIKE '%char%'; SHOW SESSION VARIABLES LIKE '%char%'; #③ : 查看指定的某個會話變量 #select @@tx_isolation; #不支持 #select @@session.tx_isolation; #不支持查詢隔離級別 #④ : 為某個會話變量賦值 #set @@tx_isolation='read-uncommitted'; #不支持更改隔離級別 #SET session @@tx_isolation='read-uncommitted'; #二: 自定義變量 /* 說明: 變量是用戶自己進行定義的,不是由系統提供的; 使用步驟: 聲明/賦值/使用(查看/比較/運算等..) */ #1.用戶變量 #作用域:針對當前會話(連接)有效,同於會話變量的作用域 #賦值的操作符: =或:= #① 聲明並初始化 SET @用戶變量名=值; SET @用戶變量名:=值; SELECT @用戶變量名:=值; #方式二:通過select into SELECT 字段 INTO 變量名 FROM 表; #輸出結果 SELECT @num; #案例: SET @name='john'; SET @name=100; #聲明並初始化 SELECT COUNT(*) INTO @num FROM employees; SELECT @num; #----------------------------- #2.局部變量 ------沒辦法實踐!!實踐錯!!!! /* 作用域:僅僅作用在定義它的begin end中有效 應用在begin end中的第一句話 */ #① 聲明 DECLARE 變量名 類型; DECLARE 變量名 類型 DEFAULT 值; #① 賦值 SET 局部變量名=值; SET 局部變量名:=值; SELECT @用戶變量名:=值; #方式二:通過select into SELECT 字段 INTO 局部變量名 FROM 表; #③ 使用 SELECT 局部變量名; # 案例--------------- #1.使用用戶變量實現加法 SET @m=1; SET @n=2; SET @sum=@m+@n; SELECT @sum; #2.使用局部變量實現加法