最近在使用存储过程定时创建分区的时候,运行时经常报错,原因都是因为变量的定义或者赋值问题导致的,在此记录一下MySQL的变量定义及赋值,方便自己和大家查阅,各位看到此博客的小伙伴,如有不对的地方请及时通过私信我或者评论此博客的方式指出,以免误人子弟。多谢!

另外,这是一个系列文章,最终我们将实用MySQL定时器和存储过程,实现定时自动创建分区功能,这是在此之前需要掌握的知识点,感兴趣的敬请关注。

目录

局部变量

声明变量

变量赋值

用户变量

变量赋值

系统变量

查看变量

修改变量


局部变量

通常用在存储过程或函数中,定义在 begin and之间。

声明变量

DECLARE var_name[,...] type [DEFAULT value]
  • DECLARE:声明变量的关键字。

  • var_name:变量的名称,可同时定义多个。

  • type:变量数据类型。

  • DEFAULT value:为变量定义默认值,默认值为NULL。

示例:

定义一个变量 a ,数据类型为 int ,默认值为 0:

declare a int default value 0;

变量赋值

方式一:使用 set 关键字赋值。

SET var_name = expr[,var_name = expr]...
  • set:变量赋值关键字。

  • var_name: 变量的名称;

  • expr: 赋值表达式。

注意:一个 SET 语句可以同时为多个变量赋值,各个变量的赋值语句之间用逗号隔开。

示例:

将变量 a 赋值为10:

set a=10;

方式二:使用 SELECT ... INTO 赋值。

SELECT col_name [...] INTO var_name[,...]
FROM table_name WEHRE condition
  • col_name: 查询的字段名称。

  • var_name: 变量的名称。

  • table_name: 参数指表的名称。

  • condition: 指查询条件。

注意:将查询结果赋值给变量时,该查询语句的返回结果只能是单行。

示例:

从 t_user 表中查询id为2的记录,将该记录的 user_name 赋值给变量 uname:

select user_name into uname from t_user where id = 2;

用户变量

详情见官网 User-Defined Variables

用户变量无需声明,直接赋值即可。用户变量名不区分大小写。名称的最大长度为64个字符。

变量赋值

方式一:使用 SET 赋值。

可以使用形如 set @变量名=变量值 或者 set@变量名:=变量值 的方式赋值。

SET @var_name = expr [, @var_name = expr] ...
或
SET @var_name := expr [, @var_name := expr] ...

示例:

SET @a=1,@b=2;
SELECT @a,@b;

查询结果如下:

方式二:使用 SELECT 赋值。

select @变量名:=变量值
select @变量名:=字段名 from table where ... limit 1;

示例:

SELECT @a:=1,@b:=2 AS b;
SELECT @a,@b;

示例:

现有表 t_user :

SELECT @a:=user_name FROM t_user WHERE id =1;

查询结果如下:

再看如下语句:

SELECT @a:=user_name FROM t_user WHERE age =18;

查询结果如下:

注意: 通过查询表给变量赋值时,需保证查询结果只有一条记录,如上这种查询除了三条,最好在查询后进行 limit 操作。

更多示例:

SET @t1=1, @t2=2, @t3:=4;
SELECT @t1, @t2, @t3, @t4 := @t1+@t2+@t3;

SET @a=1;
SET @a = @a + 1;
SELECT @a;

SET @a=1;
SELECT @a, @a:=@a+1

系统变量

像我们使用MySQL定时器一样,首先我们使用 SHOW VARIABLES LIKE '%event_sche%'; 查看是否开启了定时器支持,这里我们查的就是 系统变量,准确来说是系统变量中的 全局变量(GLOBAL)。

GLOBAL全局变量在MySQL启动时由服务器自动初始化默认值,这些默认值可通过MySQL的配置文件my.cnf进行更改。临时性修改可以直接使用 set 进行设置,但是重启服务后会设置失效。

SESSION类型会话变量在每一次建立新链接是初始化,作用域与用户变量一样,仅限于当前连接。

查看变量

方式一:使用 SHOW VARIABLES 语句或变量名。

以查看是否自动提交为例:

SHOW VARIABLES LIKE '%autocommit';

显示所有会话变量:

show [session] variables;

其实session不管带不带,默认查询的都是会话变量。

显示所有全局变量:

show global variables;

方式二:使用 SELECT @@。

以查看是否自动提交为例:

SELECT @@autocommit;

修改变量

修改全局变量:

以修改是否自动提交为例:

SET GLOBAL autocommit=1;
SET @@global.autocommit=1;

修改会话变量:

SET autocommit=1;
SET SESSION autocommit=1;
SET @@global.autocommit=1;

(超实用、简单明了)Mysql变量定义与赋值相关推荐

  1. mysql存储过程变量定义_存储过程中MySQL变量定义和赋值

    MySQL变量定义和赋值是我们经常会遇到的问题,下面就为您接受如何在存储过程中MySQL变量定义和赋值,希望对您学习MySQL变量定义方面能有所启迪. 一.MySQL变量的定义 mysql变量定义用d ...

  2. mysql 变量定义和赋值_MySQL变量解析

    MySQL变量 MySQL变量分类: ①系统变量 全局变量 会话变量 ②自定义变量 用户变量 局部变量 1.系统变量 变量是由系统提供的,属于服务器层面,分全局变量和会话变量. 系统变量使用语法: 查 ...

  3. C++变量定义和赋值

    C++变量定义和赋值 C++是"静态类型(statically typed)语言",含义:在编译阶段检查类型,检查类型的过程称为类型检查(type checking) 动态类型语言 ...

  4. 1.2编程基础之变量定义、赋值及转换 10 Hello, World 的大小

    http://noi.openjudge.cn/ch0102/10/ #include <bits/stdc++.h> using namespace std; int main( voi ...

  5. C语言变量定义与赋值

    编程环境:Visual Studio 2017; 电脑系统:WIN10 : 一.定义变量与初始化 一般编程中,考虑编程环境及C89.C99标准,稳妥的做法是:定义变量的同时进行初始化: 1.目的是j的 ...

  6. C语言变量定义和赋值

    定义变量的格式非常简单,如下所示: 数据类型  变量名; 首先要强调的一点是:最后的分号千万不要丢了.变量的定义是一个语句,我们说过,语句都是以分号结尾的. "数据类型"表示想要存 ...

  7. c语言 字母赋值给变量,C++变量(变量定义和赋值)详解

    变量表示计算机内存中的存储位置.使用赋值语句可以将值存储到变量中. 计算机编程中变量的概念与数学上变量的概念有些不同.在编程中,变量是用于保存数据的命名存储位置.变量允许程序员将数据存储到计算机内存中 ...

  8. python变量定义必须赋值_Python3单行定义多个变量或赋值方法

    Python3单行定义多个变量或赋值方法 你甚至可以在一行内将多个值赋值给多个变量 >>> a , b = 45, 54 >>> a 45 >>> ...

  9. 变量定义、赋值、初始化

    一.如何输入 1.输入的位置是在终端窗口中 2.输入是以行为单位来进行的,行结束的标志时按下回车键,在按下前,程序不会读到任何东西 二.变量 1.变量的定义 ●定义变量一般形式:< 类型名称 & ...

最新文章

  1. C++ OpenCV创建xml,yml文件(图像)列表程序
  2. 使用Postman测试导入和导出excel
  3. 跨域请求的一种解决方案
  4. 《程序是怎样跑起来的》第四章
  5. 极限中0除以常数_高中物理必知的50个关键常数
  6. 决策树原理实例(python代码实现)_决策树原理实例(python代码实现)
  7. SDN精华问答 | SDN的核心技术是什么?
  8. 自然语言处理实践Task5
  9. linux 线程 waitforsingleobject,用Sleep或WaitForSingleObject实现线程的休眠 | 求索阁
  10. 长短期记忆网络_思维导图:长短期记忆模型
  11. python 字符串去空格_Python去除、替换字符串空格的处理方法
  12. 看到这个数据库设计,我终于明白了我和其他软测人的差距
  13. 有计算机科学与技术专业的大学,开设计算机科学与技术专业的大学有哪些,开设计算机科学与技术专业的大学有哪些...
  14. Android Gradle Task-中文
  15. 联想笔记本S10电池拆解
  16. 关于类名前两个字大写,Spring引入不成功的问题。
  17. 5_ARM Cortex-M汇编
  18. 深耕硬科技,香港科大百万创赛与八大投资机构签署合作意向
  19. 2021世界人工智能大会
  20. 扫描IP软件,无线AP忘记IP地址

热门文章

  1. 第28课:彻底解密Spark Sort-Based Shuffle排序具体实现内幕和源码详解
  2. 蒂特ft232_芯片资料-FT232.pdf
  3. 非走不可的弯路 [转]
  4. 基于模板匹配和遗传算法的人眼定位
  5. Rook下快速部署ceph分布式文件系统
  6. 公众号如何发布一个投票活动
  7. 人人商城物流信息接口设置不生效(快递鸟)
  8. 关于修改ant table选中行的背景色
  9. 2017年原生广告程序化购买将成为新趋势
  10. pac文件提取服务器,[工具使用] privoxy 实现 PAC 请求过滤