变量
变量分为:系统变量以及用户自定义变量
系统变量
系统变量又分为全局系统变量和会话系统变量(具体是什么,我暂时不想知道)
查看系统变量:(没有什么意思,直接截图看一下吧)
查看指定系统变量
修改系统变量的值:
- 从配置文件中删除
- 在服务器运行期间,用
set
命令重新设置
用户变量
用户变量:
用户自己定义的变量,用户变量以一个@
开头。
根据作用的不同,又分为会话用户变量和局部变量
什么叫做会话级:只对当前连接会话有效
局部变量:只在BEGIN
和END
语句块中有效,局部变量只能在存储过程和函数中
会话用户变量:set @变量名 =赋值
局部变量:
用declare
定义一个局部变量
在begin``end
中有效
对应定义局部变量,用declare
后面要跟类型declare 变量名 类型 [default 值]
,如果没有写default
初始值为null
变量赋值:
set 变量名=值
set 变量名:=值
select 字段名或表达式 INTO 变量名 FROM 表
使用变量select 局部变量名
定义条件与处理程序
相当于错误处理
定义条件使用declare
语句declare 错误名称 condition for 错误码(错误条件)
定义处理程序declare 处理方式 handler for 错误类型 处理语句
处理方式有:
- continue——错误不处理,继续执行
- exit——遇到错误马上退出
错误类型:
定义处理程序的几种方式:
流程控制
MySQL的流程控制语句:只能用于存储过程
- 条件判断语句:if语句和case语句
- 循环语句:loop、while和repeat语句
- 跳转语句:iterate和leave语句
if
语法结构
if 表达式1 then 操作1;
elseif 表达式2 then 操作2;
else 操作N;
end if;
case
语法结构1——类似于switch
case 表达式
when 值1 then 结果1或语句1(如果是语句需要加分号)
when 值2 then 结果2或语句2
……
else 结果或语句n
end [case] (如果是放在begin end中需要加上case,如果放在select后面则不需要)
语法结构2——类似于if
case
when 条件1 then 结构1或语句1
when 条件2 then 结构2或语句2
……
else 结果n或语句n
end
循环结构——loop
语法结构:
[loop_label:]loop
循环执行的语句
end loop[loop_label]
loop_label表示loop语句的标注名称,该参数可以省略。
循环结构——while
语法结构
[while_label:]while 循环条件 do
循环体
end while[while_label];
循环结构——repeat
repeat循环首先会先执行一次循环,然后到until中进行表达式的判断
语法形式:
[repeat_label:]repeat
循环体的语句
until 结束循环的条件表达式
end repeat [repeat_label]
跳转语句——leave
leave语句可以用在循环语句内,或者begin和end包裹起来的程序体内,表示跳出循环或者跳出程序体的操作。 相当于break
语法格式:leave label
label参数表示循环的标志。
跳转语句——iterate
iterate语句只能用在循环语句内。 相当于continue
语法形式:interate label
label参数表示循环标志。interate语句必须跟在循环标志前面
游标
什么是游标?
看下面的文档个人解释:就是充当个指针的作用
使用游标的步骤:看尚硅谷的课件
- 声明游标——用declare
- 打开游标——用open
- 使用游标——fetch
- 关闭游标——close