变量

  • 系统变量
  • 全局系统变量(需添加global关键字)
  • 会话系统变量(需添加session关键字)
  • 用户自定义变量
系统变量
系统变量分为全局系统变量和会话系统变量,有时也将全局系统变量称为全局变量,会话系统变量称为local变量,如果不指名,默认为会话级别,静态变量属于特殊的全局系统变量。每一个MySQL客户机成功连接MySQL服务器后,都会产生与之对应的会话,会话期间,MySQL服务实例会在MySQL服务器内存中生成与该会话对应的会话系统变量,这些会话系统变量的初使值是全局系统变量值的复制。
- 全局系统变量针对于所有会话(连接)有效,但不能重启
- 会话系统变量仅针对当前会话(连接)有效,会话期间,当前会话对某个会话系统变量值的修改,不会影响其他会话同一个会话系统变量的值
- 会话1对某全局系统变量值的修改会导致会话2中同一个全局系统变量值的修改
注:在MySQL中有些系统变量只能是全局的,例如max_connections用于限制服务器的最大连接数;有些系统变量作用域可以是全局又可以是会话,如character_set_client用于设置客户端的字符集;有些系统变量的作用域只能是当前会话,例如pseudo_thread_id用于标记当前会话的MySQL连接ID。
#查看全局系统变量
mysql> SHOW GLOBAL VARIABLES;
#查看所有会话变量(默认)
mysql> SHOW SESSION VARIABLES;或SHOW VARIABLES;
#查看部分系统变量
mysql> SHOW GLOBAL VARIABLES LIKE 'admin_%';
+------------------------+---------+
| Variable_name          | Value   |
+------------------------+---------+
| admin_address          |         |
| admin_port             | 33062   |
| admin_ssl_ca           |         |
| admin_ssl_capath       |         |
| admin_ssl_cert         |         |
| admin_ssl_cipher       |         |
| admin_ssl_crl          |         |
| admin_ssl_crlpath      |         |
| admin_ssl_key          |         |
| admin_tls_ciphersuites |         |
| admin_tls_version      | TLSv1.2 |
+------------------------+---------+
11 rows in set (0.01 sec)
#查询指定系统变量
MySQL中的系统变量以两个"@"开头,其中@@global仅用于标识全局系统变量,"@@session"仅用于标记会话系统变量,"@@"首先标记会话系统变量,如会话系统变量不存在,则标记全局系统变量。
mysql> select @@global.max_connections;
+--------------------------+
| @@global.max_connections |
+--------------------------+
|                      151 |
+--------------------------+
1 row in set (0.00 sec)
mysql> select @@session.character_set_client;
+--------------------------------+
| @@session.character_set_client |
+--------------------------------+
| utf8mb4                        |
+--------------------------------+
1 row in set (0.00 sec)
mysql> select @@session.pseudo_thread_id;
+----------------------------+
| @@session.pseudo_thread_id |
+----------------------------+
|                          8 |
+----------------------------+
1 row in set (0.00 sec)
#修改系统变量的值
#1.修改MySQL配置文件,修改完成后需重启MySQL服务器
#2.在MySQL运行期间,使用SET命令重新设置系统变量的值
#为某个全局系统变量赋值(使用SET设置的系统变量一旦重启服务器将失效)
SET @@global.变量名=变量值
SET GLOBAL 变量名=变量值
mysql> select @@global.max_connections;
+--------------------------+
| @@global.max_connections |
+--------------------------+
|                      151 |
+--------------------------+
1 row in set (0.00 sec)mysql> set @@global.max_connections=161;
Query OK, 0 rows affected (0.00 sec)mysql> select @@global.max_connections;
+--------------------------+
| @@global.max_connections |
+--------------------------+
|                      161 |
+--------------------------+
1 row in set (0.00 sec)#为某个会话变量赋值(针对当前会话有效,一旦会话结束,会话变量失效)
SET @@session.character_set_client='gbk'
SET session character_set_client='gbk'
用户变量

用户变量是用户自已定义的,作为MySQL编码规范,MySQL中的用户变量以一个"@"开头,根据作用范围不同,分为会话用户变量和局部变量。

  • 会话用户变量:作用域和会话变量一样,只对当前连接有效
  • 局部变量:只在BEGIN和END语句块中有效,局部变量只能在存储过程和函数中使用
#变量定义
#方式1:"="或":="
SET @用户变量 = 值;
SET @用户变量 := 值;
#方式2:":="或INTO关键字
SELECT @用户变量:=表达式[FROM 等子句];mysql> SET @m1 = 1;
Query OK, 0 rows affected (0.01 sec)mysql> SET @m2 := 2;
Query OK, 0 rows affected (0.00 sec)mysql> SET @sum := @m1+@m2;
Query OK, 0 rows affected (0.00 sec)mysql> select @sum;
+------+
| @sum |
+------+
|    3 |
+------+
1 row in set (0.00 sec)mysql> SELECT @count :=count(*) from employees;
+-------------------+
| @count :=count(*) |
+-------------------+
|               106 |
+-------------------+
1 row in set, 1 warning (0.00 sec)
mysql> select @count;
+--------+
| @count |
+--------+
|    106 |
+--------+
1 row in set (0.00 sec)
mysql> select avg(salary) into @avg_sal from employees;
Query OK, 1 row affected (0.00 sec)mysql> select @avg_sal;
+--------------------+
| @avg_sal           |
+--------------------+
| 6464.1509433962265 |
+--------------------+
1 row in set (0.00 sec)
#局部变量-可以使用DECLARE语句定义一个局部变量,作用域(仅在定义它的BEGIN...END中有效),位置(只能放在BEGIN...END中,而且只能放在第一句)
BEGIN#声明局部变量DECLARE 变量名1 变量数据类型[DEFAULT 变量默认值]DECLARE 变量名2,变量名3...变量数据类型[DEFAULT 变量默认值]#为局部变量赋值SET 变量名1 [:]=值;SELECT 值 INTO 变量名2 [FROM子句]#查看局部变量的值SELECT 变量1,变量2,变量3;
END#
mysql> DELIMITER $
mysql> CREATE PROCEDURE test_var() BEGIN DECLARE a INT DEFAULT 0;DECLARE bINT; DECLARE emp_name VARCHAR(25); SET a = 1; SET b :=2; SELECT last_name INNTO emp_name FROM employees WHERE employee_id=101; SELECT a,b,emp_name; END$
Query OK, 0 rows affected (0.04 sec)
mysql> DELIMITER ;
mysql> CALL test_var();
+------+------+----------+
| a    | b    | emp_name |
+------+------+----------+
|    1 |    2 | Kochhar  |
+------+------+----------+
1 row in set (0.00 sec)Query OK, 0 rows affected (0.00 sec)

Linux学习-MySQL变量学习相关推荐

  1. linux mysql更改生效_linux下面MySQL变量修改及生效

    今天在访问mysql项目的时候突然报500错误,没有找到连接,因此想到mysql的连接时间. mysql> show global variables; 主要就是连接时间是28800(8小时), ...

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

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

  3. linux修改mysql字符集6,linux下mysql字符集编码问题的修改

    安装完的MySQL的默认字符集为 latin1 ,为了要将其字符集改为用户所需要的(比如utf8),就必须改其相关的配置文件:由于linux下MySQL的默认安装目录分布在不同的文件下:不像windo ...

  4. linux数据库创建score表,MySQL数据库学习笔记

    MySQL数据库学习笔记phpma (实验环境:Redhat9.0,MySQL3.23.54) 纲要: 一,连接MySQL phpma 二,MySQL管理与授权 三,数据库简单操作 四, 数据库备份 ...

  5. linux使用读mysql脚本,【mysql学习】linux安装mysql,使用install脚本方式 (二)

    [mysql学习]linux安装mysql,使用install脚本方式 (二) 发布时间:2020-04-06 20:51:12 来源:51CTO 阅读:1092 作者:浮尔魔司 本文介绍Linux下 ...

  6. python、oracle、linux、mysql、大数据及其它内容学习导航站

    本导航站汇聚本博主所有python.oracle.linux.mysql.大数据及其它学习原创内容,励志将50篇归为一类,该导航站方便大家收藏查看. 一.python python-利用python写 ...

  7. Linux安装mysql学习

    Linux下安装mysql-5.7.24 下面记录了在Linux(Centos 7)环境下安装Mysql的完整过程,实操记录; 安装版本为mysql-5.7.24,对于5.7.24之后的版本,不适用此 ...

  8. python、Linux、MySQL学习笔记

    git操作: 1.git init [project-name] 2.git clone url  克隆文件 3.git status 查看目前状态 4.git add .  添加 5.git com ...

  9. MySQL服务器学习笔记!(二) ——数据库各项操作

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://foreveryan.blog.51cto.com/3508502/657640 ...

最新文章

  1. 如何重装计算机操作系统,自己如何重装笔记本电脑操作系统呢?
  2. jQuery的链Chaining
  3. 我现在编程方面的特别大的问题
  4. 工作322:uni-扩展运算符实现拼接合并操作
  5. 面试问题汇总 精选 分析 解答 职业规划 part 1
  6. 世界首富马斯克吟《七步诗》,中外互联网世界究竟发生了什么?
  7. 初识python你应该知道的6个知识点
  8. C# .Net中的类型转换(3)
  9. 2022,火山引擎的云上第一“子”,为何是视频?
  10. SONiC:为Microsoft全球云提供支持的网络交换机软件
  11. c# iot .net6 树莓派+RS485串口工业级光照度传感器 代码实例
  12. Excel删除重复项,不保留重复项数据
  13. nvm在c语言是什么意思的缩写,nvm是什么意思的缩写
  14. 点在多边形内算法,JS判断一个点是否在一个复杂多边形的内部
  15. 用c语言做记忆测试小游戏,用C语言实现简单小游戏
  16. L1 Cache(一级缓存)
  17. EasyWord的使用——POI操作Word的工具
  18. 日常英语:Job interview
  19. Nonlinear Schrodinger equations on the torus
  20. 自动化专业学计算机技术,自动化专业学什么?大学自动化专业主要学什么

热门文章

  1. openstack-mitaka(二) 基于vmware的搭建
  2. Ceph Luminous 12.2.11 安装 nfs-ganesha
  3. PDF文档如何用关键字精确查找?
  4. Excel技巧--数据不能按照1-100来排列
  5. 微信小程序反编译的应对方法
  6. android调用相机分辨率,Android菜鸟笔记-获取摄像头像素值
  7. linux查询历史登入系统的主机名称或IP地址
  8. HDU-6194 string string string
  9. 斐讯路由器设置linux,Windows10系统怎么给斐讯K3路由器开启Telnet
  10. 常见的几种网络Hack方式