(十一)MySQL基礎——變數
阿新 • • 發佈:2018-11-11
一、變數分類
(1)系統變數:根據作用域不同又劃分為——全域性變數和會話變數
(2)自定義變數:使用者變數、區域性變數
二、變數說明
1、系統變數
說明:變數是由系統提供,不是使用者定義,屬於伺服器層面
使用語法:如果是全域性變數,則需要加GLOBAL;如果是會話級別,則需要加SESSION;如果不寫,則預設SESSION
(1)檢視所有的系統變數
-- 檢視全域性變數
SHOW GLOBAL VARIABLES;
-- 檢視會話變數
SHOW SESSION VARIABLES;
-- 預設是檢視會話變數
SHOW VARIABLES
(2)檢視滿足條件的部分系統變數
-- 案例檢視滿足條件的全域性變數
SHOW GLOBAL VARIABLES LIKE '%char'
-- 案例檢視滿足條件的會話變數
SHOW SESSION VARIABLES LIKE '%char'
-- 預設是檢視會話變數
SHOW VARIABLES LIKE '%char'
(3)檢視指定的某個系統變數的值
-- 檢視指定的全域性變數
SHOW @@GLOBAL.系統變數名;
-- 檢視指定的會話變數
SHOW @@SESSION.系統變數名;
-- 預設是檢視會話變數
SHOW @@系統變數名
(4)為某個系統變數賦值
------------------ 方式一 -------------------- -- 給全域性變數賦值 SET GLOBAL 系統變數名 = 值; -- 給會話變數賦值 SET SESSION 系統變數名 = 值; -- 預設是給會話變數賦值 SET 系統變數名 = 值; ------------------ 方式二 --------------------- -- 給全域性變數賦值 SET @@GLOBAL.系統變數名 = 值; -- 給會話變數賦值 SET @@SESSION.系統變數名 = 值; -- 預設是給會話變數賦值 SET @@系統變數名 = 值;
全域性變數的作用域:伺服器每次啟動將為所有的全域性變數賦初始值,針對於所有的會話(或者叫連線)生效,但不能跨重啟
會話變數的作用域:僅僅針對當前會話(連線)有效
2、自定義變數
說明:變數是使用者自定義的,不是由系統建立的
使用步驟:宣告、賦值、使用(檢視、比較、運算等)
(1)使用者變數
作用域:針對於當前會話(連線)有效,同會話變數的作用域
使用語法:
①宣告並初始化——賦值的操作符: = 或 :=
------------------- 方式一 ------------------- SET @使用者變數名 = 值; ------------------- 方式二 ------------------- SET @使用者變數名 := 值; ------------------- 方式三 ------------------- SELECT @使用者變數名 := 值;
②賦值(更新使用者變數的值)
------------------- 方式1.1 通過SET或SELECT -------------------
SET @使用者變數名 = 值;
------------------- 方式1.2 -------------------
SET @使用者變數名 := 值;
------------------- 方式1.3 -------------------
SELECT @使用者變數名 := 值;
------------------- 方式2.1 通過SELECT INTO -------------------
SELECT 欄位 INTO @變數名 FROM 表;
③使用(檢視使用者變數的值)
SELECT @使用者變數名;
(2)區域性變數
作用域:僅僅是在定義它的BEGIN END中有效
應用場景:應用在BEGIN END 中第一句話
使用語法:
①宣告
DECLARE 變數名 型別;
DECLARE 變數名 型別 DEFAULT 值;
②賦值
------------------- 方式1.1 通過SET或SELECT -------------------
SET 區域性變數名 = 值;
------------------- 方式1.2 -------------------
SET 區域性變數名 := 值;
------------------- 方式1.3 -------------------
SELECT @區域性變數名 := 值;
------------------- 方式2.1 通過SELECT INTO -------------------
SELECT 欄位 INTO 區域性變數名 FROM 表;
③使用
SELECT 區域性變數名;
(3)使用者變數和區域性變數對比
作用域 | 定義和使用的位置 | 語法 | |
使用者變數 | 當前會話 | 會話中的任何地方 | 必須加@符號,不用限定型別 |
區域性變數 | BEGIN END中 | 只能在BEGIN END中,且為第一句話 | 一般不加@符號,需要限定型別 |