分類
系統變量:
全局變量
會話變量
自定義變量:
用戶變量
局部變量
系統變量
變量由系統提供,不是用戶定義的,屬於服務器層面的
注:如果是全局級別用global,如果是會話級別用session;如果不寫,則默認session
使用語法:
1 查看所有的系統變量
SHOW GLOBAL|SESSION VARIABLES;
2 查看所有滿嘴條件的部分系統變量
SHOW GLOBAL | SESSION VARIABLES LIKE %CHAR%;
3 查看指定的某個系統變量的值
SELECT @@global|[SESSION].系統變量名稱;
4 爲某個系統變量賦值
SET GLOBAL |[SESSION] 系統變量名=值;
或
SET @@global |[SESSION].系統變量名=值;
全局變量
作用域:服務器每次啓動將會爲所有的全局變量賦初始值,針對所有的會話連接有效,但不能誇重啓;使重啓有效的話必須改配置文件
1 查看所有的全局變量
SHOW GLOBAL VARIABLES;
2 查看部分全局變量
SHOW GLOBAL VARIABLES LIKE '%char%';
3 查看指定的全局變量
SELECT @@global.autocommit;
SELECT @@autocommit;
SELECT @@tx_isolation;
會話變量
注:session關鍵字可加也可以不加,因爲不加的情況下系統會默認是session級的
1 查看所有的會話變量
SHOW VARIABLES; 或
SHOW SESSION varibales;
2 查看部分會話變量
SHOW VARIABLES LIKE '%char%'; 或
SHOW SESSION VARIABLES LIKE '%char%';
3 查看指定的某個會話變量
SELECT @@tx_isolation;或
SELECT @@session.tx_isolation;
4 爲某個會話變量賦值
SET @tx_isolation='read-uncommitted'; 或
SET SESSION tx_isolation='read-uncommitted';
用戶變量
用戶變量是用戶自定義的,不是由修通提供的;
步驟:聲明,賦值,使用
作用域:針對當前會話有效,同於會話變量的作用域
賦值操作符 =或:=
1 聲明並初始化
SET @用戶變量名=值; 或
SET @用戶變量名:=值; 或
SELECT @用戶變量名:=值;
2 賦值
方式一:通過SET 或 SELECT
SET @用戶變量名=值;或
SET @用戶變量名:=值;後
SELECT @用戶變量名:=值;
方式二:通過 SELECT INTO
SELECT 字段 INTO @變量名
FROM 表;
3 使用
SELECT @用戶變量名;
案例
#案例
#聲明並初始化
SET @count=1;
#聲明
SET @test;
#賦值
SELECT COUNT(*) INTO @count
FROM employees;
SELECT COUNT(*) FROM employees;//116
SELECT @count;//116
SELECT COUNT(*) INTO @test
FROM employees;
SELECT @test;//116
局部變量
作用域:僅僅在定義它的begin end中有效
應用在begin end中的第一句話
1 聲明:
DECLARE 變量名 類型;
2 聲明並賦默認值:
DECLARE 變量名 類型 DEFAULT 值;
3 賦值
方式一:通過SET 或 SELECT
SET 局部變量名=值; 或
SET 局部變量名:=值; 或
SELECT @局部變量名:=值;
方式二:通過 SELECT INTO
SELECT 字段 INTO 局部變量名
FROM 表;
對於用戶變量和局部變量
作用域 | 定義和使用的位置 | 語法 | |
---|---|---|---|
用戶變量 | 當前會話 | 會話中的任何地方 | 必須加@符號,不用限定類型 |
局部變量 | Begin End中 | 只能在Begin End中,且爲第一句話 | 一般不用加@符號,需要限定類型 |