15 —— MySQL中的变量

变量的类别:

  • 系统变量:全局变量、会话变量。(作用域:是所有的连接,当关闭服务再重启时,之前的设置将失效)
  • 自定义变量:用户变量、局部变量(作用域:仅仅针对当前会话连接有效)

一、系统变量

  • 系统变量如果是全局的则加 global,如果是会话级则加session,如果省略则表示会话级

1、查询系统变量

# 查询所有的全局变量
show global variables;

# 查看所有会话变量,session 可以省略
show [session] variavles;

# 查看满足条件的部分系统变量,如所有的字符集
SHOW VARIABLES LIKE '%char%';

# 查看某个指定的系统变量的值,查看指定的用select来查
SELECT @@系统变量名

# 查看指定的全局变量值,会话变量值时session可以省略
select @@global.系统变量名;

2、为某个系统变量赋值

方法一:
# 为某个全局系统变量赋值
set global 系统变量名=值;
# 为某个会话系统变量赋值
set [session] 系统变量名=值;

方法二:
set @@global.系统变量名=值;    # 全局系统变量赋值
set @@session.系统变量名=值;   # 会话系统变量赋值

二、自定义变量

1、用户变量:

  • 作用域:针对当前会话连接有效,等同于会话变量的作用域

(1)、声明并初始化:

# 语法:
set @用户变量名=值;    # 方式1
set @用户变量名:=值;   # 方式2
select @用户变量名:=值 # 方式3

(2)、为变量赋值

set @用户变量名=值;    # 方式1
set @用户变量名:=值;   # 方式2
select @用户变量名:=值 # 方式3

select 字段 into 变量名 from 表;  # 方式4,相当于将字段的值赋给变量

2、局部变量

  • 作用域:仅仅在定义它的 begin end 中有效(只能在 begin end 块中)
  • 必须应用在 begin end 的第一句话

(1)、声明

declare 变量名 类型;
declare 变量名 类型 default 值;

(2)、赋值

方法1:
set 局部变量名=值;      # 方式1
set 局部变量名:=值;    # 方式2
select @局部变量名:=值;  #方式3

方法2:
select 字段 into 变量名 from 表;  # 方式4,相当于将字段的值赋给变量

(3)、打印

select 局部变量名;

三、应用实例

1、声明两个变量并赋初始值,求和,并打印:

# 定义用户变量,在使用过程中变量前要加@符号
SET @m=1;
SET @n=2;
SET @sum=@m+@n;
SELECT @sum;
发布了213 篇原创文章 · 获赞 48 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/Jeffxu_lib/article/details/102466099
15