MySQL入门教程(18)系统变量与用户自定义变量

Tanglu MySQL 2022-12-26 130 0

一、MySQL系统变量

MySQL中的变量分为系统变量和用户自定义变量,其中系统变量根据生效范围不同又分了全局系统变量和会话系统变量。作为MySQL编码规范,系统变量都以@@开头,其中@@global表示全局系统变量,@@session表示会话系统变量,仅@@的话首先表示会话系统变量,如果会话系统中不存在则标记为全局系统变量

1、查看MySQL系统变量

#查看全局系统变量
show global variables ;
#查看会话系统变量
show session variables
#通过条件查询指定的系统变量
show global variables like '%admin_%'
#查看指定系统变量
SELECT @@global.max_connections;


 2、修改MySQL系统变量

方法1:通过配置文件修改,但是需要重启服务

方法2:在线修改,但是最好同步修改配置文件,避免服务重启后变量失效

SET @@GLOBAL.变量名=变量值
SET GLOBAL 变量名=变量值

SET @@SESSION.变量名=变量值
SET SESSION 变量名=变量值


二、MySQL用户自定义变量

用户变量是用户自己定义的变量,根据作用范围不同又分为会话用户变量和局部变量,会话用户变量的作用域只对当前连接有效,局部变量只能在存储过程中函数中使用。作为MySQL编码规范,以@开头的都属于用户变量

1、用户变量的定义与使用

#使用SET语句为变量赋值
#SET @用户变量名=值;
#SET @用户变量名:=值;

SET @m1=1;
SET @m2:=2;
SET @sum:= @m1 + @m2

#使用INTO关键字给变量赋值
SELECT  AVG(salary) INTO @用户变量名 FROM employees;

#使用用户变量
SELECT @sum;


2、定义局部变量

使用DECLARE语句进行局部变量的定义,它仅能在BEGIN...END中有效(所以只能在函数或者存储过程中),而且DECLARE只能放在第一句

BEGIN
  #声明局部变量
  DECLARE 变量名 变量数据类型 [DEFAULT 变量默认值];
  
  #为局部变量赋值
  SET 变量名=值;
  
  #查看局部变量
  SELECT 变量;
END

#声明2个局部变量,并将employees表中id为102的last_name和salary赋值给它们
DELIMITER //
CREATE PROCEDURE test_pro()
BEGIN
  #声明
  DECLARE emp_name VARCHAR(25);
  DECLARE sal DOUBLE(10,2) DEFAULT 0.0
  #赋值
  SELECT last_name,salary INTO emp_name,sal FROM employees WHERE id=102
  #使用
  SELECT emp_name,sal;
END
DELIMITER ;

CALL test_pro()


评论