变量声明
会话变量
定义形式:set @变量名 = 值;
- 它可以在编程环境和非编程环境中使用!
- 使用的任何场合也都带该“@”符号。
普通变量
定义形式:declare 变量名 类型 [default 默认值];
- 它必须先声明(即定义),此时也可以赋值;
- 赋值跟会话变量一样:
set 变量名 = 值;
- 它只能在编程环境中使用!!!
说明:什么是编程环境?
存储过程,函数,触发器
变量赋值形式
语法1:set 变量名 = 表达式;
此语法中的变量必须先使用declare声明
语法2:set @变量名=表达式;
此方式可以无需declare语法声明,而是直接赋值
语法3:select @变量名:=表达式;
此语句会给该变量赋值,同时还会作为一个select语句输出‘结果集’
语法4:select 表达式 into @变量名;
此语句虽然看起来是select语句,但其实并不输出‘结果集’,而是给变量赋值。
运算符
算术运算符
+、-、*、/、%
注意:mysql没有++和–运算符
关系运算符
>、>=、<、<=、=(等于)、<>(不等于)!=(不等于)
逻辑运算符
and(与)、or(或)、not(非)
if判断
MySQL支持两种判断,第一个是if判断,第二个 case判断
单分支
if 条件 then
//代码
end if;
双分支
if 条件 then
代码1
else
代码2
end if;
多分支
if 条件 then
代码1
elseif 条件 then
代码2
else
代码3
end if;
案例:如果输入1则输出春天,2=》夏天 3=》秋天 4 =》冬天 其他数字=》出错
我们使用存储过程来体验if语句的用法
create procedure 存储过程名(参数,参数,…)
begin
//代码
end
create procedure p1 (n int)
begin
if n=1 then
select ‘春天’ as ‘季节’;
elseif n=2 then
select ‘夏天’ as ‘季节’;
elseif n=3 then
select ‘秋天’ as ‘季节’;
elseif n=4 then
select ‘冬天’ as ‘季节’;
else
select ‘无法无天’ as ‘季节’;
end if;
end$
调用:call 存储过程的名称(参数)
call p1(1);
case判断
case 变量
when值 then 语句;
when值 then 语句;
else 语句;
end case ;
案例:如果输入1则输出春天,2=》夏天 3=》秋天 4 =》冬天 其他数字=》出错
create procedure p2 (n int)
begin
case n
when 1 then select '春天天' as '季节';
when 2 then select '夏天天' as '季节';
when 3 then select '秋天天' as '季节';
when 4 then select '冬天天' as '季节';
else select '无法无天' as '季节';
end case;
end$
call p2(3);
循环
MySQL支持的循环有loop、while、repeat循环
loop 循环
标签名:loop
leave 标签名 --退出循环
end loop;
-- 使用loop循环,完成计算1到n的和;
create procedure p3(n int)
begin
declare i int default 1;
declare s int default 0;
aa:loop
if i>n then
leave aa;
end if;
set s=s+i;
set i=i+1;
end loop;
select s;
end$
while 循环
while 条件 do
//代码
end while;
-- 使用while循环,完成计算1到n的和;
create procedure p4(n int)
begin
declare i int default 1;
declare s int default 0;
while i<=n do
set s = s+i;
set i = i+1;
end while;
select s;
end$
repeat 循环
repeat
//代码
until 条件 end repeat;
--使用repeat循环,完成计算1到n的和;
create procedure p5(n int)
begin
declare i int default 1;
declare s int default 0;
repeat
set s = s+i;
set i = i+1;
until i>n end repeat;
select s;
end$