1. 程式人生 > 實用技巧 >MySQL基礎-21變數

MySQL基礎-21變數

宣告:此MySQL基礎學習源自尚矽谷。(推薦)b站官方連結:https://www.bilibili.com/video/BV1xW411u7ax?p=1

變數

系統變數:
	全域性變數
	會話變數
	
自定義變數:
	使用者變數
	區域性變數

variables /ˈveə riə bl z/ 變數

1.系統變數

說明:變數由系統提供,不是使用者定義,屬於伺服器層面。

1.檢視所有的系統變數

show global variables; # 檢視所有全域性變數
show 【session】 variables; # 檢視所有會話變數,預設為session

2.檢視滿足條件的部分系統變數

show global variables like '%char%'; # 檢視滿足條件的字符集
show session variables like '%char%'; # 檢視滿足條件的字符集

3.檢視指定的某個系統變數的值

select @@系統變數名; # session變數
select @@global.系統變數名; # 全域性變數

4.為某個系統變數賦值

方式一:
set global 系統變數名 = 值; # 全域性變數級別
set session 系統變數名 = 值; # session會話級別,session預設

方式二:
set @@global.系統變數名 = 值;
set @@session.系統變數名 = 值;

注意:

如果是全域性級別,則需要加global,如果是會話級別,則需要加session,如果不寫,預設是session

全域性變數作用域

全域性變數屬於每個連線共有的變數
伺服器每次啟動將為所有的全域性變數賦初始值,針對於所有的會話(連線)有效,但不能跨重啟,就是即使修改了全域性變數值,伺服器重啟後,初始值是伺服器配置檔案中的值。
若修改伺服器重啟後的全域性變數值,需要修改伺服器的配置檔案中的值。

會話變數作用域

僅僅針對於當前會話(連線)有效

2.自定義變數

說明:變數是使用者自定義的,不是系統提供的
使用步驟:
	宣告
	賦值
	使用(檢視、比較、運算等)

1.使用者變數

作用域:針對於當前會話(連線)有效,同會話變數的作用域。

應用在任何地方,也就是begin end裡面或begin end外面

①宣告並初始化

賦值的操作符:= 或 :=
# 三種方式:
①set @使用者變數名=值;
②set @使用者變數名:=值;
③select @使用者變數名 := 值;

②賦值(更新使用者變數的值)

方式一:通過set 或 select
    ①set @使用者變數名=值;
    ②set @使用者變數名:=值;
    ③select @使用者變數名 := 值;
    
方式二:通過select into
	select 欄位 into 使用者變數名 from 表;

③使用(檢視使用者變數的值)

select @使用者變數名;

案例:

-- 宣告並初始化
set @name='join'; # 弱型別,賦給什麼型別的值,變數就是什麼型別
set @name=100;
set @count=1;
-- 賦值
select count(*) into @count from employees; # 查詢employees表的總數賦給變數count
-- 使用
select @count;

2.區域性變數

作用域:僅僅在定義它的begin end中有效

應用在begin end 中的第一句

①宣告

declare 變數名 型別;
declare 變數名 型別 default 值; # 值型別與定義型別一致或相容

②賦值

方式一:通過set 或 select
    ①set 區域性變數名=值; # 不加 @ 符
    ②set 區域性變數名:=值;
    ③select @區域性變數名 := 值; # 需要加 @ 符
    
方式二:通過select into
	select 欄位 into 區域性變數名 from 表;

③使用(檢視區域性變數的值)

select @區域性變數名;

使用者變數和區域性變數對比

作用域 定義和使用的位置 語法
使用者變數 當前會話 會話中的任何地方 必須加@符,不用限定型別
區域性變數 begin end中 只能在begin end中,且為第一句話 一般不用加@符,需要限定型別

案例:

1.使用者變數
set @m=1;
set @n=2;
set @sum= @m+@n;
select @sum; # 3