中set无效是怎么回事_一起认识下,那些我们应该知道的mysql中的变量知识点
前言:
這篇文章主要是認(rèn)識(shí)一下mysql中的變量,本來是不準(zhǔn)備整理的,但是發(fā)現(xiàn)后面的存儲(chǔ)過程等等在實(shí)際用的時(shí)候還挺多。
mysql里面的變量你可以和java中的變量進(jìn)行對比理解。主要分為兩種:系統(tǒng)變量和自定義變量。自定義變量是重點(diǎn)。
一、系統(tǒng)變量
系統(tǒng)變量那肯定就是mysql數(shù)據(jù)庫為我們提供的,再細(xì)化的話又可以分為兩種:全局變量和會(huì)話變量。
1、查看所有的系統(tǒng)變量
只需要輸入show global variables;回車之后你會(huì)發(fā)現(xiàn)有很多的系統(tǒng)變量,查看會(huì)話變量的時(shí)候只需要把global變成session就可以了。會(huì)話變量的意思是只是在本次回話有效。會(huì)話的含義就是你開兩個(gè)命令行窗口,會(huì)話變量的值的改變在另外一個(gè)無效。
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 |每一個(gè)人的機(jī)器可能數(shù)量不同。我的電腦里面有494條。
2、查看某個(gè)指定的系統(tǒng)變量
select @@global.變量名稱;查看會(huì)話的變量值的時(shí)候只需要把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、為某個(gè)變量賦值
set global | session 系統(tǒng)變量名 = 新值;
set @@global | @@session.系統(tǒng)變量名 = 值;
二、自定義變量
自定變量就是用戶自己定義的,而不是由系統(tǒng)提供的。自定義變量也可以分為兩種:用戶變量和局部變量。
1、用戶變量
用戶變量的作用域是當(dāng)前會(huì)話,也就是說你再新建一個(gè)終端或者是命令行窗口就無效了。
(1)聲明初始化:
set @用戶變量名 = 值
set @用戶變量名 := 值
select @用戶變量名:=值
1 mysql> set @fdd = 'java的架構(gòu)師技術(shù)棧'; 2Query OK, 0 rows affected (0.03 sec) 3 mysql> set @fdd2 := 'java的架構(gòu)師技術(shù)棧'; 4Query OK, 0 rows affected (0.00 sec) 5 mysql> select @fdd2 := 'java的架構(gòu)師技術(shù)棧'; 6+--------------------------------------+ 7| @fdd2 := 'java的架構(gòu)師技術(shù)棧' | 8+--------------------------------------+ 9| java的架構(gòu)師技術(shù)棧 |10+--------------------------------------+111 row in set (0.01 sec)(2)賦值并查看
賦值是一個(gè)重點(diǎn),常常和表還有存儲(chǔ)過程等結(jié)合使用。
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)1011mysql> select count(*) into @fdd from user;12Query OK, 1 row affected (0.00 sec)1314mysql> select @fdd;15+------+16| @fdd |17+------+18| 3 |19+------+201 row in set (0.01 sec)2、局部變量
局部變量的作用域就是在定義他的begin end中有效。和我們java中的方法中的變量類似。
(1)聲明:
declare 變量名 類型;
declare 變量名 類型 default 默認(rèn)值;
(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 ;在這里建了一個(gè)存儲(chǔ)過程,聲明了倆變量aa、bb。在內(nèi)部定義局部變量。如果沒有給變量指定默認(rèn)值,則它的系統(tǒng)默認(rèn)值為 NULL。
今天就分享到這里哦,記得給小編點(diǎn)個(gè)關(guān)注哦
總結(jié)
以上是生活随笔為你收集整理的中set无效是怎么回事_一起认识下,那些我们应该知道的mysql中的变量知识点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 防止私自接交换机_防止私接家用路由器干扰
- 下一篇: php简单的mysql类_一个简单的ph