(超实用、简单明了)Mysql变量定义与赋值
最近在使用存储过程定时创建分区的时候,运行时经常报错,原因都是因为变量的定义或者赋值问题导致的,在此记录一下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变量定义与赋值相关推荐
- mysql存储过程变量定义_存储过程中MySQL变量定义和赋值
MySQL变量定义和赋值是我们经常会遇到的问题,下面就为您接受如何在存储过程中MySQL变量定义和赋值,希望对您学习MySQL变量定义方面能有所启迪. 一.MySQL变量的定义 mysql变量定义用d ...
- mysql 变量定义和赋值_MySQL变量解析
MySQL变量 MySQL变量分类: ①系统变量 全局变量 会话变量 ②自定义变量 用户变量 局部变量 1.系统变量 变量是由系统提供的,属于服务器层面,分全局变量和会话变量. 系统变量使用语法: 查 ...
- C++变量定义和赋值
C++变量定义和赋值 C++是"静态类型(statically typed)语言",含义:在编译阶段检查类型,检查类型的过程称为类型检查(type checking) 动态类型语言 ...
- 1.2编程基础之变量定义、赋值及转换 10 Hello, World 的大小
http://noi.openjudge.cn/ch0102/10/ #include <bits/stdc++.h> using namespace std; int main( voi ...
- C语言变量定义与赋值
编程环境:Visual Studio 2017; 电脑系统:WIN10 : 一.定义变量与初始化 一般编程中,考虑编程环境及C89.C99标准,稳妥的做法是:定义变量的同时进行初始化: 1.目的是j的 ...
- C语言变量定义和赋值
定义变量的格式非常简单,如下所示: 数据类型 变量名; 首先要强调的一点是:最后的分号千万不要丢了.变量的定义是一个语句,我们说过,语句都是以分号结尾的. "数据类型"表示想要存 ...
- c语言 字母赋值给变量,C++变量(变量定义和赋值)详解
变量表示计算机内存中的存储位置.使用赋值语句可以将值存储到变量中. 计算机编程中变量的概念与数学上变量的概念有些不同.在编程中,变量是用于保存数据的命名存储位置.变量允许程序员将数据存储到计算机内存中 ...
- python变量定义必须赋值_Python3单行定义多个变量或赋值方法
Python3单行定义多个变量或赋值方法 你甚至可以在一行内将多个值赋值给多个变量 >>> a , b = 45, 54 >>> a 45 >>> ...
- 变量定义、赋值、初始化
一.如何输入 1.输入的位置是在终端窗口中 2.输入是以行为单位来进行的,行结束的标志时按下回车键,在按下前,程序不会读到任何东西 二.变量 1.变量的定义 ●定义变量一般形式:< 类型名称 & ...
最新文章
- C++ OpenCV创建xml,yml文件(图像)列表程序
- 使用Postman测试导入和导出excel
- 跨域请求的一种解决方案
- 《程序是怎样跑起来的》第四章
- 极限中0除以常数_高中物理必知的50个关键常数
- 决策树原理实例(python代码实现)_决策树原理实例(python代码实现)
- SDN精华问答 | SDN的核心技术是什么?
- 自然语言处理实践Task5
- linux 线程 waitforsingleobject,用Sleep或WaitForSingleObject实现线程的休眠 | 求索阁
- 长短期记忆网络_思维导图:长短期记忆模型
- python 字符串去空格_Python去除、替换字符串空格的处理方法
- 看到这个数据库设计,我终于明白了我和其他软测人的差距
- 有计算机科学与技术专业的大学,开设计算机科学与技术专业的大学有哪些,开设计算机科学与技术专业的大学有哪些...
- Android Gradle Task-中文
- 联想笔记本S10电池拆解
- 关于类名前两个字大写,Spring引入不成功的问题。
- 5_ARM Cortex-M汇编
- 深耕硬科技,香港科大百万创赛与八大投资机构签署合作意向
- 2021世界人工智能大会
- 扫描IP软件,无线AP忘记IP地址