MySQL变量的使用

在mysql文档中,mysql变量可分为两大类,即系统变量和用户变量。

但根据实际应用又被细化为四种类型,即局部变量、用户变量、会话变量和全局变量。

一、局部变量

mysql局部变量,只能用在begin/end语句块中,比如存储过程中的begin/end语句块。

其作用域仅限于该语句块。

-- declare语句专门用于定义局部变量,可以使用default来说明默认值
declare age int default 0;

-- 局部变量的赋值方式一
set age=18;

-- 局部变量的赋值方式二
select StuAge
into age
from demo.student
where StuNo=‘A001‘;

二、用户变量

mysql用户变量,mysql中用户变量不用提前申明,在用的时候直接用“@变量名”使用就可以了。

其作用域为当前连接。

-- 第一种用法,使用set时可以用“=”或“:=”两种赋值符号赋值
set @age=19;

set @age:=20;

-- 第二种用法,使用select时必须用“:=”赋值符号赋值
select @age:=22;

select @age:=StuAge
from demo.student
where StuNo=‘A001‘;

三、会话变量

mysql会话变量,服务器为每个连接的客户端维护一系列会话变量。

其作用域仅限于当前连接,即每个连接中的会话变量是独立的。

-- 显示所有的会话变量
show session variables;

-- 设置会话变量的值的三种方式
set session auto_increment_increment=1;
set @@session.auto_increment_increment=2;
set auto_increment_increment=3;        -- 当省略session关键字时,默认缺省为session,即设置会话变量的值

-- 查询会话变量的值的三种方式
select @@auto_increment_increment;
select @@session.auto_increment_increment;
show session variables like ‘%auto_increment_increment%‘;        -- session关键字可省略

-- 关键字session也可用关键字local替代
set @@local.auto_increment_increment=1;
select @@local.auto_increment_increment;

四、全局变量

mysql全局变量,全局变量影响服务器整体操作,当服务启动时,它将所有全局变量初始化为默认值。要想更改全局变量,必须具有super权限。

其作用域为server的整个生命周期。

-- 显示所有的全局变量
show global variables;

-- 设置全局变量的值的两种方式
set global sql_warnings=ON;        -- global不能省略
set @@global.sql_warnings=OFF;

-- 查询全局变量的值的两种方式
select @@global.sql_warnings;
show global variables like ‘%sql_warnings%‘;

原文地址:https://www.cnblogs.com/asdyzh/p/9818738.html

时间: 2024-08-29 17:19:20

MySQL变量的使用的相关文章

mysql变量修改及生效

使用过mysql的人都知道我们对mysql设置变量是在my.cnf文件里,平时修改一次变量后需要重启mysql的服务,但是在实际生产服务器中这样是不允许的,我们可以通过这个语句查询mysql的全部变量 mysql> show global variables; 如果mysql中开启了慢查询日志分析,查看慢查询的设定默认时间及要调整默认时间就 mysql> show global variables like "%_time"; +----------------------

性能测试关注的mysql变量

MySQL变量很多,其中有一些MySQL变量非常值得我们注意,下面就为您介绍一些值得我们重点学习的MySQL变量,供您参考. 1 Threads_connected 首先需要注意的,想得到这个变量的值不能show variables like 'Threads_connected';而是show status like 'Threads_connected'(下面的变值也是这样的);意思:变量的值是表示当前有多少个客户连接该mysql服务器引申:连接数是否过多,网络时候存在问题!特别是在pcon

mysql变量使用总结

set语句的学习: 使用select定义用户变量的实践将如下语句改成select的形式: set @VAR=(select sum(amount) from penalties);我的修改: select @VAR:=(select sum(amount) from penalties); 我这样改,虽然是可以的.但是,对比的书中的答案,发现这样的方式太蹩脚了.说明没有很好地理解select定义变量的本质.在select中,发现有一个用户变量,如果没有定义,那么就会初始化.select子句原来的

Mysql 变量讲解

set语句的学习: 使用select定义用户变量的实践将如下语句改成select的形式: set @VAR=(select sum(amount) from penalties);我的修改: select @VAR:=(select sum(amount) from penalties); 我这样改,虽然是可以的.但是,对比的书中的答案,发现这样的方式太蹩脚了.说明没有很好地理解select定义变量的本质.在select中,发现有一个用户变量,如果没有定义,那么就会初始化.select子句原来的

MySQL服务 - MySQL变量类型及变量设置

一.MySQL变量类型: MySQL通过变量来定义当前服务器的特性,保存状态信息等.我们可以通过手动更改变量的值来配置MySQL,也可以通过变量获得MySQL的当前状态信息.MySQL的变量类型可以从变量的修改方式和变量的生效范围划分. 1.根据变量修改的方式: 动态变量:可以在MySQL运行时调整其指,并立即生效: 静态变量:需要在配置文件中修改,重启服务后生效: 2.根据变量的生效范围: 全局变量:服务级别的设定,对整个服务生效: 会话变量:仅对当前会话生效,其他会话和新会话不受影响:会话结

mysql变量使用总结(转)

set语句的学习: 使用select定义用户变量的实践将如下语句改成select的形式: set @VAR=(select sum(amount) from penalties);我的修改: select @VAR:=(select sum(amount) from penalties); 我这样改,虽然是可以的.但是,对比的书中的答案,发现这样的方式太蹩脚了.说明没有很好地理解select定义变量的本质.在select中,发现有一个用户变量,如果没有定义,那么就会初始化.select子句原来的

linux下面MySQL变量修改及生效

今天在访问mysql项目的时候突然报500错误,没有找到连接,因此想到mysql的连接时间. mysql> show global variables; 主要就是连接时间是28800(8小时),而且任务调度也没打开,因此想到修改全局变量的值. 1.修改任务调度装: 1.1具体的查看任务调度的状态:show variables like '%event%';  1.2修改任务打开状态:set global event_scheduler=on; 2.修改数据库连接时间: 2.1查看连接时间:sho

Mysql变量简介

一.mysql变量分为三类 1.全局变量(内置变量):mysql数据库内置的变量 (所有连接都起作用) a.查看所有全局变量: show variables; b.查看某个全局变量: select @@变量名; c.修改全局变量: set 变量名=新值;(没有该变量,会自己创建) 2.会话变量: 只存在于当前客户端与数据库服务器端的一次连接当中. a.查看会话变量: select @变量; b.修改会话变量: set @变量=值;(没有该变量,会自己创建) 3.局部变量: 在存储过程中使用的变量

MYSQL变量和状态

mysql设置变量是在my.cnf文件里,修改配置文件后需要重启mysql的服务,才能生效.但是在线上服务器是不允许随便重启的,我们可以用命令直接修改变量值,使其生效.然后再修改配置文件中的值,以防止重启时还用旧值. show  variables like "slow%" #查询慢查询相关的变量 slow_launch_time 表示如果建立线程花费了比这个值更长的时间,slow_launch_threads 计数器将增加 mysql> set global long_quer