使用sql也可以像java一样进行程序编写,说到编程,就离不开变量和流程控制,接下来介绍一下
变量
sql中的变量可分为系统变量和自定义变量
系统变量 | 用于控制服务器表现的变量 |
查看所有系统变量 | show global variables [like '%关键字%']; -- 查看全局变量 |
show session variables [like '%关键字%']; -- 查看会话变量 | |
查看具体变量值 | select @@变量名 |
修改全局级别变量 | set global 变量名 = 值; |
修改会话级别变量 | set 变量名 = 值;或者 set @@变量名 = 值 |
自定义变量 | 会话变量 | 相当于一个自定义的全局变量,可以在存储过程、函数和触发器之外或之内使用 |
普通变量 | 相当于一个局部变量,只能在在存储过程、函数和触发器中使用 |
会话变量 | 可以在存储过程、函数和触发器之外或之内使用 | ||
定义 | set @变量名 = 值 或者 set @变量名 := 值 (建议使用:= ,myslq中=有的时候表示比较) 另外就是会话变量名都必须以@开头 | ||
实例 | 直接赋值 | set @v_name = 'chaizpeng'; -- 查看变量值 select 变量名 | |
查询赋值 | -- 边查询边赋值,变量值是最后一条记录的值 select @czp_name := name from user; | ||
-- 必须只返回一条记录 select name from user where id = 4 into @czp_name; |
普通变量 | 相当于局部变量,只能在存储过程、函数和触发器中使用 |
定义 | -- 和创建表时声明每一个字段格式差不多 declare 变量名 类型 |
实例 | 这里先不写实例,因为存储过程或者函数还没有说,后续在函数或者过程的实例中会有体现 |
上边对变量做了详细的描述,接下来说一下流程控制,sql编程中的流程控制和java一样,有3种,分别是顺序流程、循环流程、条件流程。接下来详细说一下(顺序流程不介绍)
条件流程(分支结构)
sql中实现分支结构的方式有:if结构、case结构
if结构 | 条件判断,类似于java中的if判断 |
语法 | -- 语句以if开头,end if; 结尾 -- 判断完条件,要是用then来表示要执行符合条件的代码 if 判断条件 then 执行代码 elseif 判断条件 then 执行代码 else 执行代码 end if; |
case结构 | 条件判断,类似于java中的case判断 |
语法 | case 变量 when 值 then 满足条件代码; when 值 then 满足条件代码; else 其他代码; end; |
循环流程(循环结构)
sql中实现循环结构的方式有:loop循环、while循环、repeat循环
loop循环 | 循环控制,一般使用条件来结束循环 |
语法 | 标签名:loop 循环执行的代码 if 条件 then end if; |
while循环 | sql只有while..do结构 |
语法 | while 条件 do 循环执行的代码 end while; |
repeat循环 | |
语法 | repeat 循环执行的代码 until 条件 end repeat; |
在这里只介绍一下语法的使用,不给出使用的实例,因为没有什么意义,之后会在存储过程或者函数中给出实例