变量
系统变量
-- 查看所有系统变量
show variables;
-- select @@系统变量名
select @@version,@@autocommit,@auto_increment_offset,@@character_set_results;
+-----------+--------------+------------------------+-------------------------+
| @@version | @@autocommit | @auto_increment_offset | @@character_set_results |
+-----------+--------------+------------------------+-------------------------+
| 8.0.13 | 1 | NULL | utf8mb4 |
+-----------+--------------+------------------------+-------------------------+
-- 修改系统变量
-- 修改会话级系统变量 set 系统变量值名 = 值 or set @@变量名=值
set autocommit=1;
-- 全局修改 set global 全局变量值 = 值;
set global antocommit=0
自定义变量
mysql中系统为了区分系统变量,规定用户自定义变量必须使用一个@符号
定义方式: set @变量名=值;(所有自定义变量都是会话级别的)
-- 定义变量名
set @name = 'lili';
-- 查看变量名
select @name;
+-------+
| @name |
+-------+
| lili |
+-------+
-- 在mysql中 ‘=’ 会默认为比较处理符,为了区分mysql重新定义了一个变量赋值符‘:=’;
set @name1:="ggog";
select @name;
+-------+
| @name |
+-------+
| lili |
+-------+
-- mysql允许从数据表中获取数据让然后赋值给变量
-- 方案1: set @变量名 := 字段 from 数据源;
select @name:=name from m_copy1;
+-------------+
| @name:=name |
+-------------+
| name2 |
| name3 |
| name4 |
+-------------+
select @name;
+-------+
| @name |
+-------+
| name4 |
+-------+
-- 方案二: select 字段名 from 表名 into 变量名;
select name,id from m_copy where id=1 into @name,@id;
select @name,@id;
+-------+------+
| @name | @id |
+-------+------+
| name1 | 1 |
+-------+------+