变量是一个拥有名字的对象,可以用于存储和共享数据。根据变量的创建方式和作用域可以将其分为以下几种类型:
- 系统变量(System Variable),由 MySQL 系统定义和维护的变量。系统变量可能包含全局值(全局变量)和会话值(会话变量),全局变量在服务器启动时通过命令行参数或者选项文件进行设置,在服务关闭时销毁;当客户端连接到服务器时,MySQL 会将大部分的全局变量复制一份作为客户端的会话变量,会话变量在连接断开时销毁。
- 用户变量(User-Defined Variable),由用户自定义的变量,在连接会话期间有效,可以用于在不同 SQL 语句之间传递数据。
- 局部变量(Local Variable),在存储过程或者函数中定义的变量,通常用于存储中间结果。局部变量的作用域为存储过程/函数内或者某个语句块之内。
本文主要介绍系统变量和用户变量的设置和使用,局部变量将会在后续关于存储过程的文章中进行讨论。
系统变量
系统变量由 MySQL 进行维护,用于配置服务器的操作和行为。绝大多数系统变量(编译时设置的只读变量除外)可以在服务器启动时通过命令行参数或者选项文件进行设置,大部分的系统变量也可以使用 SET 命令进行动态修改。
查看系统变量
SHOW VARIABLES语句可以用于查看系统变量,具体的语法如下:
SHOW [GLOBAL | SESSION] VARIABLES
[LIKE 'pattern' | WHERE expr]
其中,GLOBAL 表示查看全局变量,SESSION 表示查询会话变量(默认选项,也可以使用 LOCAL 替代),LIKE 用于查找特定名字的变量,WHERE 用于查找满足指定条件的变量。
例如,以下语句返回了当前会话中的所有会话变量:
show variables;
Variable_name |Value |
----------------------------------------------|------------------------------|
activate_all_roles_on_login |OFF |
admin_address | |
admin_port |33062 |
admin_ssl_ca | |
admin_ssl_capath | |
admin_ssl_cert | |
admin_ssl_cipher | |
以下语句使用 LIKE 运算符返回了所有名字以 version 开头的全局变量:
show global variables like 'version%';
Variable_name |Value |
-----------------------|----------------------------|
version |8.0.21 |
version_comment |MySQL Community Server - GPL|
version_compile_machine|x86_64 |
version_compile_os |Linux |
version_compile_zlib |1.2.11 |
标签:变量,admin,会话,version,MySQL,Variable From: https://www.cnblogs.com/xfeiyun/p/16962040.html