局部变量

局部变量只在BEGIN和END的代码块中有效,执行完该代码块,变量就消失,在存储过程中最为常见。DECLARE语句专门用于定义局部变量,可以使用DEFAULT语句来指明默认值。定义多个变量:DECLARE x, y INT DEFAULT 0。赋值用的是SET或SELECT语句:

DECLARE total_count INT DEFAULT 0
SET total_count = 10;
SELECT COUNT(*) INTO total_count FROM products

存储过程中的常见应用:

DELIMITER //
CREATE PROCEDURE p1(IN a INT, IN b INT)
BEGINDECLARE c INT DEFAULT 0;set c=a+b;select c AS num;
END//

c就是局部变量

用户变量

用户变量与数据库连接有关,一个客户端定义的变量不能被其它客户端看到或使用。当客户端退出时,该客户端连接的所有变量将失效。用户变量不需要声明,可以直接使用,用户变量以@var_name的形式命名变量,变量名必须以@开头。

赋值语法,一般用SET:

set @varName=value;
SELECT @var_name := value;

赋值后输出用select @varName。比如:

@c=@b*2是正确的,@b=@b+1是错误的,但set @b=@b+1是正确的,这一点不像C++。

系统变量

MySQL可以访问许多系统变量。当服务器运行时许多变量允许动态更改。这样就可以修改服务器操作而不需要停止并重启服务器。系统变量又包含两种:会话变量影响具体客户端连接的操作,全局变量影响服务器整体操作。

全局变量

全局变量在 MySQL 启动的时候由服务器自动初始化他们的值, 这些默认的值可以在/etc/my.cnf中修改。要想更改全局变量,必须具有SUPER权限。全局变量作用于SERVER的整个生命周期,但重启后所有设置的全局变量均失效。要想让全局变量重启后继续生效,需要更改相应的配置文件。

查看全局变量

show global variables;  // 变量太多,一般不用
show global variables like `wait_timeout`;

修改全局变量

set global varname = value;
set @@global.varname = value;

会话变量

会话变量在每一个数据库连接建立后,由MySQL来初始化。MySQL会将当前所有的全局变量都复制一份作为会话变量。也就是说,如果在建立会话以后,没有人为更改过会话变量与全局变量的值,那这两份变量的值应该是完全一致的。设置会话变量不需要特殊权限,会话变量的作用域与用户变量一样,仅限于当前连接。

查看会话变量

show session variables; // 变量太多,一般不用
show variables like 'version';

修改会话变量

set session varname = value;
set @@session.varname = value;

SESSION关键字,都可以用LOCAL关键字来代替。

参考:
MySQL 系统变量

MySQL 各种变量相关推荐

  1. centos下加入mysql环境变量

    centos下加入mysql环境变量 命令行的时候每次都要进入mysql的目录/usr/local/mysql/bin太麻烦了,为了能在任何一个位置直接进入,设置一下环境变量即可 vi /etc/pr ...

  2. mysql session变量_mysql 系统变量和session变量

    mysql系统变量包括全局变量(global)和会话变量(session),global变量对所有session生效,session变量包括global变量.mysql调优必然会涉及这些系统变量的调整 ...

  3. 9、MySQL系统变量(查看和修改)

    在 MySQL 数据库,变量分为系统变量和用户自定义变量.系统变量以 @@ 开头,用户自定义变量以 @ 开头. 服务器维护着两种系统变量,即全局变量(GLOBAL VARIABLES)和会话变量(SE ...

  4. MySQL中变量的定义和变量的赋值使用(转)

    说明:现在市面上定义变量的教程和书籍基本都放在存储过程上说明,但是存储过程上变量只能作用于begin...end块中,而普通的变量定义和使用都说的比较少,针对此类问题只能在官方文档中才能找到讲解. 前 ...

  5. MySQL 服务器变量 数据操作DML-视图

    原文:MySQL 服务器变量 数据操作DML-视图 SQL语言的组成部分 常见分类: DDL:数据定义语言 DCL:数据控制语言,如授权 DML:数据操作语言 其它分类: 完整性定义语言:DDL的一部 ...

  6. MySQL数据库变量_数据库参数_MySQL变量_系统变量_用户变量

    文章目录 MySQL 变量分类 系统变量 查看系统变量 设置系统变量 如何通过配置文件来设置变量值 通过命令行选项来设置变量值 动态设置全局级的系统变量 设置静态的系统变量 设置会话级的系统变量 引用 ...

  7. MySQL的变量分类总结

    在MySQL中,my.cnf是参数文件(Option Files),类似于ORACLE数据库中的spfile.pfile参数文件,照理说,参数文件my.cnf中的都是系统参数(这种称呼比较符合思维习惯 ...

  8. 配置mysql环境变量

    配置mysql环境变量(非必要) 说明:给mysql配置环境变量后我们就可以在cmd里运行mysql(开启.停止等操作) 1. 和其实环境变量的配置方法一样,我们打开环境变量配置窗口(组合键win+P ...

  9. php mysql变量赋值给变量_MySQL_mysql 存储过程中变量的定义与赋值操作,一、变量的定义 mysql中变量定 - phpStudy...

    mysql 存储过程中变量的定义与赋值操作 一.变量的定义mysql中变量定义用declare来定义一局部变量,该变量的使用范围只能在begin...end 块中使用,变量必须定义在复合语句的开头,并 ...

  10. mysql 变量作表名查询_使用MySQL函数变量作为表名查询

    我需要有一个表中增加一定的ID(如AUTO_INCREMENT)函数使用MySQL函数变量作为表名查询 我有水木清华这样 DELIMITER $$ DROP FUNCTION IF EXISTS `G ...

最新文章

  1. Windows安装python 虚拟环境,Virtualenv
  2. iOS 编写高质量Objective-C代码(六)
  3. nullnull使用PL/SQL获取创建用户的语句
  4. 通过百度获取IP地址对应的经纬度
  5. Python3列表、元组及之间的区别和转换
  6. 达芬奇DaVinci Resolve Studio Mac v17.4.6
  7. linux socket 程序被ctrl+c或者异常终止,提示:bind error:Address already in use,解决办法...
  8. AX2012 R2安装
  9. 为eclipse3.6安装subversive插件
  10. Excel VBA与VSTO基础实战指南 VBA和VSTO权威教材
  11. 网易暴力裁员事件 网易员工疑遭网易暴力裁员
  12. 音响无声或声音不正常的原因有哪些?
  13. Android一键锁屏与抬手亮屏的实现
  14. 在做产品经理的实习收获(第一篇)
  15. Vue3中关于getCurrentInstance的大坑
  16. 清北学堂day1考试
  17. 谷歌的无痕模式有什么好处_为什么Google的新搜索结果设计是黑暗的模式
  18. kalman滤波纯纯纯纯纯纯理论推导
  19. c语言中的指数e怎么表示什么作用,什么叫做指数E;指数E是用什么推导出来的?...
  20. [python爬虫] BeautifulSoup爬取+CSV存储贵州农产品数据

热门文章

  1. WPF 分享一种设置程序保存配置文件的方法
  2. 想成为大数据分析师必须知道的这些事儿(文末福利)
  3. 基于Windows NBL配置WebInterface
  4. linux shell编程if语句内判断参数
  5. 任正非为什么向两千多年前的李冰父子学习?
  6. 操作系统原理常见面试题总结
  7. Facebook vs Chrome 关公秦琼的未来之战,互联网营销
  8. Eclipse中启动tomcat访问404解决及原因
  9. 14.PHP核心技术与最佳实践 --- PHP 编码规范
  10. 9. explain