變量 variables
MySQL本質是一種程式設計語言
1、系統變量
對所有使用者用戶端都有效
1.1、檢視系統變量
1、方式一
show variables [like 'pattern'];
示例
mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit | ON |
+---------------+-------+
2、方式二:
使用select查詢變量的資料值
select @@變量名;
示例
select @@autocommit;
+--------------+
| @@autocommit |
+--------------+
| 1 |
+--------------+
1.2、修改系統變量
1、局部修改(會話級别)
-- 隻針對目前用戶端當次連接配接有效
set 變量名 = 值;
-- eg:
set autocommit = 'off';
show variables like 'autocommit';
2、全局修改
-- 所有用戶端,都有效
set global 變量名 = 值;
set @@global.變量名 = 值;
-- eg:
set global autocommit = 'off';
注意,全局修改之後,重新開機用戶端生效
2、會話變量
也稱為使用者變量,設定的變量,隻針對目前使用者使用的用戶端生效
-- 定義使用者變量
set @變量名 = 值;
set @age = 23;
mysql中沒有比較符号 == ,使用的是 =;
為了避免分不清是指派還是比較,指派使用
:=
set @變量名 := 值;
set @name := 'Tom';
mysql允許将資料從表中取出存儲到變量中,隻能是一行資料
-- 1、指派且檢視指派過程
select @變量1 := 字段1, @變量2 := 字段2 from 表 where 條件
select @name := name, @age := age from my_student limit 1;
+---------------+-------------+
| @name := name | @age := age |
+---------------+-------------+
| 劉備 | 18 |
+---------------+-------------+
--- 2、隻指派不看過程
select 字段1, 字段2 from 表 where 條件 into @變量1, @變量2;
select name, age from my_student limit 1 into @name, @age;
檢視變量
select @變量名
mysql> select @name, @age;
+--------+------+
| @name | @age |
+--------+------+
| 劉備 | 18 |
+--------+------+
3、局部變量
作用範圍在begin到end語句塊之間,在該語句塊裡設定的變量
- declare語句用于定義局部變量
- 局部變量 declare語句出現在begin到end語句塊之間
聲明文法
declare 變量名 資料類型 [屬性];
4、變量作用域
變量能夠使用的區域範圍
4.1、局部作用域
declare 關鍵字聲明 (結構體中使用:函數/存儲過程/觸發器)
declare關鍵字聲明的變量沒有任何符号修飾,就是普通字元串,如果再外部通路該變量,系統會自動認為是字段
4.2、會話作用域
使用者定義的,使用@符号定義的變量,使用set關鍵字
會話作用域,當次連接配接有效隻要再本連接配接中,任何地方都可以使用(可以在結構内容,也可以跨庫)
會話變量可以再函數内部使用
set @name = '張三';
create function get_name() returns char(4)
return @name;
select get_name();
+------------+
| get_name() |
+------------+
| 張三 |
+------------+
use mydatabase2;
mysql> select @name;
+--------+
| @name |
+--------+
| 張三 |
+--------+
4.3、全局作用域
set global 變量名 = 值;
set @@global.變量名 = 值;