SQL-變量(16)

變量

1.系統(tǒng)變量:
        全局變量:作用域:服務(wù)器每次啟動將為所有的全局變量賦初始值爬早,
               針對于所有的的會話(連接)有效曾沈,但不垮重啟聊浅。
        
        會話變量:僅僅針對當(dāng)前的會話(連接)有效
2.自定義變量:
        用戶變量
        局部變量

一. 系統(tǒng)變量

即該變量由系統(tǒng)提供私痹,不是用戶定義匈棘,屬于服務(wù)層面            

1. 使用語法:

1.查看所有的系統(tǒng)的變量
show grobal|[session] variables;
注意:如果是全局級別坝咐,則需要要加global解虱,如果是會話級別盆色,則需要加session粥帚,如果不寫胰耗,則默認(rèn)session。
mysql> show global variables;
+----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name                                            | Value                                                                                                                                                                                                                                                                                                                                                                                                                                      |
+----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| activate_all_roles_on_login                              | OFF                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| auto_generate_certs                                      | ON                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| auto_increment_increment                                 | 1                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| auto_increment_offset                                    | 1                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| autocommit                                               | ON 
...
...
531 rows in set (0.01 sec)

mysql> show session variables;
+----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name                                            | Value                                                                                                                                                                                                                                                                                                                                                                                                                                      |
+----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| activate_all_roles_on_login                              | OFF                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| auto_generate_certs                                      | ON                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| auto_increment_increment                                 | 1                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| auto_increment_offset                                    | 1                                                                                                                                                                                                                                                                                                                                                             
...
...
548 rows in set (0.00 sec)                                                                                                                                                                 
2.查看滿足條件的部分系統(tǒng)變量
show global | [session] variables like '要查看變量的部分字符' 芒涡;
mysql> show global variables like '%char%';
+--------------------------+-----------------------------------------------------------+
| Variable_name            | Value                                                     |
+--------------------------+-----------------------------------------------------------+
| character_set_client     | utf8mb4                                                   |
| character_set_connection | utf8mb4                                                   |
| character_set_database   | utf8mb4                                                   |
| character_set_filesystem | binary                                                    |
| character_set_results    | utf8mb4                                                   |
| character_set_server     | utf8mb4                                                   |
| character_set_system     | utf8                                                      |
| character_sets_dir       | /usr/local/mysql-8.0.11-macos10.13-x86_64/share/charsets/ |
+--------------------------+-----------------------------------------------------------+
8 rows in set (0.01 sec)


3.查看指定的某個系統(tǒng)變量的值
select @@global | [session] .系統(tǒng)變量名

mysql> select @@global.character_set_system;
+-------------------------------+
| @@global.character_set_system |
+-------------------------------+
| utf8                          |
+-------------------------------+
1 row in set (0.00 sec)
4.為某個系統(tǒng)變量賦值
  方式一:
  set global|[session] 系統(tǒng)變量名=值柴灯;
  方式二:
  set @@global|[session].系統(tǒng)變量名=值;                     
mysql> show global variables like '%isolation%';
+-----------------------+-----------------+
| Variable_name         | Value           |
+-----------------------+-----------------+
| transaction_isolation | REPEATABLE-READ |
+-----------------------+-----------------+
1 row in set (0.00 sec)
mysql> set global transaction_isolation ='read-committed';
Query OK, 0 rows affected (0.00 sec)

mysql> show global variables like '%isolation%';
+-----------------------+----------------+
| Variable_name         | Value          |
+-----------------------+----------------+
| transaction_isolation | READ-COMMITTED |
+-----------------------+----------------+
1 row in set (0.00 sec)


mysql> set @@global.transaction_isolation='REPEATABLE-READ';
Query OK, 0 rows affected (0.07 sec)

mysql> show global variables like '%isolation%';
+-----------------------+-----------------+
| Variable_name         | Value           |
+-----------------------+-----------------+
| transaction_isolation | REPEATABLE-READ |
+-----------------------+-----------------+
1 row in set (0.00 sec)


二. 自定義變量

(1)用戶變量

1.即用戶自己定義的费尽,不是用系統(tǒng)提供的赠群。
2.使用步驟:
  聲明
  賦值
  使用(查看,比較依啰,運(yùn)算等)
3.作用域:
  針對當(dāng)前會話(連接)有效乎串,同于會話變量的作用域 
賦值操作符:= 或 := 

(1)聲明并初始化
 set @用戶變量名=值; 或
 set @用戶變量名 := 值;或
 select @用戶變量名 := 值叹誉;
(2)賦值(更新用戶變量的值)
 方式一(聲明并初始化一樣):通過set或select
       set @用戶變量名=值鸯两;或
       set @用戶變量名 := 值;或
       select @用戶變量名 := 值长豁;
方式二:通過select into 
      select 字段 into 變量名 from 表钧唐;
(3)使用:select  @用戶變量名;           
  

案例

mysql> set @name ='keen';
Query OK, 0 rows affected (0.06 sec)

mysql> set @name =22;
Query OK, 0 rows affected (0.00 sec)

mysql> set @count =1;
Query OK, 0 rows affected (0.00 sec)

mysql> #賦值
mysql> use myemployees;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select count(*) into @count from employees;
Query OK, 1 row affected (0.06 sec)

mysql> #查看
mysql> select @count;
+--------+
| @count |
+--------+
|    107 |
+--------+
1 row in set (0.00 sec)

mysql> select @name;
+-------+
| @name |
+-------+
|    22 |
+-------+
1 row in set (0.00 sec)

mysql> set @name='keen';
Query OK, 0 rows affected (0.00 sec)

mysql> select @name;
+-------+
| @name |
+-------+
| keen  |
+-------+
1 row in set (0.00 sec)


2.局部變量

 作用域:僅僅在定義它的 begin end 中有效
 應(yīng)用在begin end 中的第一句話

 (1)聲明:
    declare 變量名 類型;
    declare 變量名 類型 default 值匠襟;
(2)賦值
   方式一:
    通過set或select
    set 局部變量名=值钝侠;或
    set 局部變量名 := 值;或
    select @局部變量名 := 值酸舍;
   方式二:通過select into 
    select 字段 into 局部變量名 from 表帅韧;    
(3)使用
  select 局部變量名;

練習(xí):聲明兩個變量并賦初始值啃勉,求和忽舟,并打印淮阐;

@用戶變量名
set @n=1;
set @m=2;
set @sum =@n+@m;
select @sum;


#2.局部變量
declare m int default 1;
declare n  int default 2;
declare sum int;
set sum=m+n;
select sum;
//declare is not valid at this position. 因為它得在begin end 里
      

注:這是本人的學(xué)習(xí)筆記及練習(xí)叮阅,如果有錯誤的地方望指出一起討論,謝謝泣特!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末浩姥,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子状您,更是在濱河造成了極大的恐慌勒叠,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件膏孟,死亡現(xiàn)場離奇詭異缴饭,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)骆莹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來担猛,“玉大人幕垦,你說我怎么就攤上這事「盗” “怎么了先改?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蒸走。 經(jīng)常有香客問我仇奶,道長,這世上最難降的妖魔是什么比驻? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任该溯,我火速辦了婚禮岛抄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘狈茉。我一直安慰自己夫椭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布氯庆。 她就那樣靜靜地躺著蹭秋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪堤撵。 梳的紋絲不亂的頭發(fā)上仁讨,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機(jī)與錄音实昨,去河邊找鬼洞豁。 笑死,一個胖子當(dāng)著我的面吹牛屠橄,可吹牛的內(nèi)容都是我干的族跛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼锐墙,長吁一口氣:“原來是場噩夢啊……” “哼礁哄!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起溪北,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤桐绒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后之拨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體茉继,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年蚀乔,在試婚紗的時候發(fā)現(xiàn)自己被綠了烁竭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡吉挣,死狀恐怖派撕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情睬魂,我是刑警寧澤终吼,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站氯哮,受9級特大地震影響际跪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一姆打、第九天 我趴在偏房一處隱蔽的房頂上張望良姆。 院中可真熱鬧,春花似錦穴肘、人聲如沸歇盼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽豹缀。三九已至,卻和暖如春慨代,著一層夾襖步出監(jiān)牢的瞬間邢笙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工侍匙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留氮惯,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓想暗,卻偏偏與公主長得像妇汗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子说莫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容