一起認識下,那些我們應該知道的mysql中的變數知識點

程式設計師志強發表於2020-11-11

前言:
這篇文章主要是認識一下mysql中的變數,本來是不準備整理的,但是發現後面的儲存過程等等在實際用的時候還挺多。
mysql裡面的變數你可以和java中的變數進行對比理解。主要分為兩種:系統變數和自定義變數。自定義變數是重點。

一、系統變數

系統變數那肯定就是mysql資料庫為我們提供的,再細化的話又可以分為兩種:全域性變數和會話變數。
1、檢視所有的系統變數
只需要輸入show global variables;回車之後你會發現有很多的系統變數,檢視會話變數的時候只需要把global變成session就可以了。會話變數的意思是隻是在本次回話有效。會話的含義就是你開兩個命令列視窗,會話變數的值的改變在另外一個無效。
1mysql> show global variables; 2±----------------------------------±---------+ 3| Variable_name | Value | 4±----------------------------------±---------+ 5| auto_increment_increment | 1 | 6| auto_increment_offset | 1 | 7| autocommit | ON | 8| automatic_sp_privileges | ON | 
每一個人的機器可能數量不同。我的電腦裡面有494條。

2、檢視某個指定的系統變數
select @@global.變數名稱;檢視會話的變數值的時候只需要把global變成session就可以了。
1mysql> select @@global.version_comment; 2±-----------------------------+ 3| @@global.version_comment | 4±-----------------------------+ 5| MySQL Community Server (GPL) | 6±-----------------------------+ 71 row in set (0.00 sec)

3、為某個變數賦值
set global | session 系統變數名 = 新值;
set @@global | @@session.系統變數名 = 值;
二、自定義變數
自定變數就是使用者自己定義的,而不是由系統提供的。自定義變數也可以分為兩種:使用者變數和區域性變數。
1、使用者變數
使用者變數的作用域是當前會話,也就是說你再新建一個終端或者是命令列視窗就無效了。
(1)宣告初始化:
set @使用者變數名 = 值
set @使用者變數名 := 值
select @使用者變數名:=值
1 mysql> set @fdd = ‘java的架構師技術棧’; 2Query OK, 0 rows affected (0.03 sec) 3 mysql> set @fdd2 := ‘java的架構師技術棧’; 4Query OK, 0 rows affected (0.00 sec) 5 mysql> select @fdd2 := ‘java的架構師技術棧’; 6±-------------------------------------+ 7| @fdd2 := ‘java的架構師技術棧’ | 8±-------------------------------------+ 9| java的架構師技術棧 | 10±-------------------------------------+ 111 row in set (0.01 sec) 
(2)賦值並檢視
賦值是一個重點,常常和表還有儲存過程等結合使用。
select 欄位 into 自定義變數 from 表名;
1mysql> select * from user; 2±—±-------±--------±-----+ 3| id | name | english | math | 4±—±-------±--------±-----+ 5| 1 | 張三 | 70 | 75 | 6| 2 | 李四 | 75 | 80 | 7| 3 | 王五 | 85 | 90 | 8±—±-------±--------±-----+ 93 rows in set (0.00 sec) 10 11mysql> select count(*) into @fdd from user; 12Query OK, 1 row affected (0.00 sec) 13 14mysql> select @fdd; 15±-----+ 16| @fdd | 17±-----+ 18| 3 | 19±-----+ 201 row in set (0.01 sec) 
2、區域性變數
區域性變數的作用域就是在定義他的begin end中有效。和我們java中的方法中的變數類似。
(1)宣告:
declare 變數名 型別;
declare 變數名 型別 default 預設值;
(2)賦值
set @使用者變數名 = 值
set @使用者變數名 := 值
select @使用者變數名:=值
select 欄位 into 自定義變數 from 表名;
(3)使用
select 區域性變數名;
1mysql> delimiter 2mysql> CREATE PROCEDURE test.my_test(OUT aa VARCHAR(5),OUT bb INT) 3 -> BEGIN 4 -> DECLARE a VARCHAR(5); 5 -> DECLARE b INT DEFAULT 22; 6 -> SET aa = a; 7 -> SET bb = b; 8 -> END$ 9Query OK, 0 rows affected (0.07 sec) 10mysql> delimiter ;
在這裡建了一個儲存過程,宣告瞭倆變數aa、bb。在內部定義區域性變數。如果沒有給變數指定預設值,則它的系統預設值為 NULL。

今天就分享到這裡哦,記得給我點個關注哦

相關文章