变量、流程控制与游标

目录

变量

系统变量

系统变量分类

查看指定的系统变量

修改系统变量的值

用户变量

用户变量分类

会话用户变量

局部变量

对比会话用户变量与局部变量

定义条件与处理程序(省略)

流程控制

分支结构之 IF

分支结构之 CASE

循环结构之LOOP

循环结构之WHILE

循环结构之REPEAT

跳转语句之LEAVE

跳转语句之ITERATE

游标

用法:


变量

分为系统变量、用户自定义变量

系统变量

不是用户自定义,属于服务器层面。

系统变量分类

  • 全局系统变量(global)

备注: 静态变量(在 MySQL 服务实例运行期间它们的值不能使用 set 动态修改)属于特殊的全局系 统变量。

  • 会话系统变量(session)

如果不标记级别,默认是session。

查看指定的系统变量

作为 MySQL 编码规范,MySQL 中的系统变量以 两个“@” 开头,其中“@@global”仅用于标记全局系统变 量,“@@session”仅用于标记会话系统变量。“@@”首先标记会话系统变量,如果会话系统变量不存在, 则标记全局系统变量。

360c3b74cc3f7169a6790d66e603f464.png

修改系统变量的值

方式1:修改MySQL 配置文件 ,继而修改MySQL系统变量的值(该方法需要重启MySQL服务)

方式2:在MySQL服务运行期间,使用“set”命令重新设置系统变量的值

用户变量

用户变量分类

会话用户变量 和 局部变量

  • 会话用户变量:作用域和会话变量一样,只对 当前连接 会话有效。
  • 局部变量:只在 BEGIN 和 END 语句块中有效。局部变量只能在 存储过程和函数 中使用。

会话用户变量

变量的定义

查看用户变量的值

SELECT @用户变量

局部变量

定义:可以使用 DECLARE 语句定义一个局部变量

作用域:仅仅在定义它的 BEGIN ... END 中有效

位置:只能放在 BEGIN ... END 中,而且只能放在第一句

用法如图:

对比会话用户变量与局部变量

定义条件与处理程序(省略)

流程控制

分支结构之 IF

IF 表达式1 THEN 操作1

[ELSEIF 表达式2 THEN 操作2]……

[ELSE 操作N]

END IF

分支结构之 CASE

循环结构之LOOP

循环结构之WHILE

[while_label:] WHILE 循环条件 DO

循环体 END WHILE

[while_label];

循环结构之REPEAT

跳转语句之LEAVE

跳转语句之ITERATE

游标

类似于指针,可以一行行缓存输出,让SQL这种面向集合的语言有了面向过程开发的能力

用法:

1.声明游标

DECLARE cursor_name CURSOR FOR select_statement;

这里 select_statement 代表的是 SELECT 语句,返回一个用于创建游标的结果集。

2.打开游标

OPEN cursor_name

3.使用游标

FETCH cursor_name INTO var_name [, var_name] ...

这句的作用是使用 cursor_name 这个游标来读取当前行,并且将数据保存到 var_name 这个变量中,游 标指针指到下一行。如果游标读取的数据行有多个列名,则在 INTO 关键字后面赋值给多个变量名即可。 游标的查询结果集中的字段数,必须跟 INTO 后面的变量数一致 。

4.关闭游标

CLOSE cursor_name

游标声明的位置必须在声明变量的后面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值