MySQL基礎-21變數
阿新 • • 發佈:2020-07-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