使用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
      leave 标签名  -- 退出循环

end if;
end loop;

while循环

sql只有while..do结构

语法

while 条件 do

     循环执行的代码

end while;

repeat循环

 

语法

repeat

      循环执行的代码

until 条件 end repeat;

 在这里只介绍一下语法的使用,不给出使用的实例,因为没有什么意义,之后会在存储过程或者函数中给出实例