变量、流程控制与游标
一. 变量
1.1 系统变量
- 全局系统变量(
global
) - 会话系统变量(
session
)
1.1.1 查看系统变量
# 查看所有的全局(global)变量
SHOW GLOBAL VARIABLES;
# 查看所有的会话(session)变量
SHOW GLOBAL VARIABLES;
SHOW VARIABLES;
# 查看满足条件的部分系统变量
SHOW GLOBAL VARIABLES LIKE '%标识符%';
# 查看满足条件的部分会话变量
SHOW SESSION VARIABLES LIKE '%标识符%';
1.1.2 查看指定的系统变量
- 作为
MySQL
编码规范,MySQL
中的系统变量以两个"@
“开头,其中”@@global
"仅仅作用于标记全局系统变量,“@@session
”仅仅用于会话系统变量。"@@
"首先标记会话系统变量,如果会话系统变量不存在,则标记全局系统变量。
## 查看指定的系统变量的值
SELECT @@global.变量名;
## 查看指定的会话变量的值
SELECT @@session.变量名;
SELECT @@变量名;
1.1.3 修改系统变量的值
- 有的时候,数据库管理员需要修改系统变量的默认值,以便修改当前会话或者
MySQL
服务实例的属性、特征。具体方法:- 方法1:修改
MySQL
配置文件,继而修改MySQL
系统变量的值(该方法需要重启MySQL
服务) - 方法2:在MySQL服务运行期间,使用"set"命令重新设置系统变量的值
- 方法1:修改
SET @@global.变量名 = 变量值;
SET GLOBAL 变量名 = 变量值;
SET @@session.变量名 = 变量值;
SET SESSION 变量名 = 变量值;
1.1 用户变量
- 会话用户变量:作用域和会话变量一样,只对
当前连接
会话有效 - 局部变量:只在
BEGIN
和END
语句块中有效。局部变量只在存储过程中和函数中使用。
1.1.1 会话用户变量
- 变量的定义:
# 方式1:
SET @用户变量 = 值;
SET @用户变量 := 值;
SET @m1 = 1;
SET @m2 := 2;
SET @sum := @m1 + @m2;
# 方式2:
SELECT @count := COUNT(*) FROM employees;
SELECT @count;
1.1.1 局部变量
- 定义:可以使用
declare
语句定义一个局部变量 - 作用域:仅仅在定义它的
BEGIN...END
中有效 - 位置:只能放在
BEGIN...END
中,而且只能放在第一句
二. 流程控制
三大流程:
- 顺序结构
- 分支结构
- 循环结构
三大流程控制语句: (注意:只能用于存储程序)
- 条件判断语句:
IF
语句和CASE
语句 - 循环语句:
LOOP
、WHILE
和REPEAT
语句 - 跳转语句:
ITERATE
和LEAVE
语句
三. 游标
- 声明游标
- 打开游标
- 使用游标
- 关闭游标