变量:系统VS用户
系统变量【@@】(global全局 VS session会话 )
属于服务器,启动MySQL服务,生成MySQL服务实例期间,MySQL将为系统变量赋值,
每一个MySQL客户机成功连接MysQL服务器后,都会产生与之对应的会话。会话期间,MySQL服务实例会在MySQL服务器内存中生成与该会话对应的会话系统变量,这些会话系统变量的初始值是全局系统变
1全局系统变量针对于所有会话(连接)有效,但不能跨重启
2会话系统变量仅针对于当前会话(连接)有效。会话期间,当前会话对某个会话系统变量值的修 改,不会影响其他会话同一个会话系统变量的值。
3会话1对某个全局系统变量值的修改会导致会话2中同一个全局系统变量值的修改。
查看系统变量
show global variables 【like '%表示符'】
show session variables【like '%表示符'】
查看指定系统变量
select @@globl.变量名;
select @@session.变量名;
修改系统变量值
set @@global,变量名 = 值;
用户自定义变量【@】会话用户变量 VS 局部变量
用户自定义变量定义:
set @变量名 = 值;
select 表达式 into @用户变量 = 【fom子句】
查看用户变量
select @变量名;
局部变量
定义:declare 作用域:begin ..放在第一行....end
定义条件与处理程序【了解即可】
定义条件是事先定义程序执行过程中可能遇到的问题,处理程序定义了在遇到问题时应当采取的处理方式,并且保证存储过程或函数在遇到警告或错误时能继续执行。这样可以增强存储程序处理问题的能力,避免程序异常停止运行。
说明:定义条件和处理程序在存储过程、存储函数中都是支持的。
定义条件:declare 错误名称 condition for 错误码(错误条件)
定义处理程序:declare 处理方式 handler for 错误类型 处理语句;
流程控制
IF语句
基本语法: if 表达式1(true|false) then 执行语句;
elseif 表达式2 then 执行语句;
else 执行语句;
end if;
CASE 分支
case 表达式
when 数值1 then 执行语句;
when 数值2 then 执行语句;
else 执行语句;
end case;
循环结构:
LOOP循环
【loop标签】loop
循环体 (使用leave)
end loop 【loop标签】
WHILE循环
【while标签】 while 循环条件 do
循环体
end while 【while标签】
REPEAT循环
【repeat标签】repeat
循环体
until 结束条件(直到满足退出)
end repeat【repeat标签】
LEAVE【跳转】 :与标签连用
ITERATE iterate:与continue作用相似
游标
虽然我们也可以通过筛选条件WHERE和HAVING,或者是限定返回记录的关键字LIMIT返回一条记录,但是,却无法在结果集中像指针一样,向前定位一条记录、向后定位一条记录,或者是随意定位到某一条记录,并对记录的数据进行处理。
这个时候,就可以用到游标。游标,提供了一种灵活的操作方式,让我们能够对结果集中的每一条记录进行定位,并对指向的记录中的数据进行操作的数据结构。游标让SQL这种面向集合的语言有了面向过程开发的能力。
在SQL中,游标是一种临时的数据库对象,可以指向存储在数据库表中的数据行指针。这里游标充当了指针的作用,我们可以通过操作游标来对数据行进行操作。
使用游标的步骤:
第一步:声明游标
declare 游标名 cursor for select语句;
第二步:打开游标
open 游标名
第三步:使用游标(从游标中拿数据)
fetch 表标名 into 变量名
第四步:关闭游标
close 游标名;
游标注意事项: