sql流程控制语句

-- 流程控制语句
-- 条件控制语句
-- if exists 判断该表是否存在,若存在删除,然后再新建;
drop table if exists t_test;
create table t_test(
t_id int(11) PRIMARY key
)

-- if 判断,返回结果boolean的结果,结果为true执行then后面的语句,结果为false则不执行;
-- 必须手动使用end if(相当于java中的:} )来结束if条件语句;
-- 也可以多重if嵌套使用
create PROCEDURE pro_if(score INT(11))
BEGIN
if score >=90 then
if score >95 THEN
SELECT 'A+';
else
SELECT 'A-';
end if;

elseif score >80 then
SELECT '良好';
else
SELECT '一般';
end if;
END

drop PROCEDURE pro_if;
call pro_if(97);

-- case 相当于java中的switch条件选择
-- case score when 90 then SELECT 'xxx'这种是表达式值
-- case when score>90 then select 'xxx'这种是条件
create procedure pro_case(score int(11))
BEGIN
case
when score>90 then select '优秀';
when score>80 then select '良好';
else
select '一般';
end case;
end
drop PROCEDURE pro_case;
call pro_case(89);

-- 循环结构
-- 三种:while repeat LOOP
-- while循环
create procedure pro_while()
begin
declare i int default 1;
declare sum int default 0;
while i<=100 do
set sum := sum+i;
set i :=i+1;
end while;
SELECT sum;
end

call pro_while();

-- repeat重复执行
-- repeat直到条件为真时,停止重复执行(执行end repeat语句)
create procedure pro_repeat()
begin
declare i int default 0;
declare sum int default 0;
repeat
set sum := sum+i;
set i :=i+1;
until i > 100 end repeat;
SELECT sum;
end

call pro_repeat();

-- loop 一直重复执行,直到遇到leave
create procedure pro_loop()
begin
declare i int default 0;
declare sum int default 0;
begin_add:loop -- 这里是设置一个标识,leave的时候是用过标识退出loop;
set sum := sum+i;
set i :=i+1;
if i > 100 then
leave begin_add;-- 相当于break;
end if;
end loop begin_add;
SELECT sum;
end

call pro_loop();






你可能感兴趣的:(mySql基础语句)