您的位置:首页 > 汽车 > 时评 > MySQL复习3

MySQL复习3

2024/9/15 22:55:03 来源:https://blog.csdn.net/H520xcodenodev/article/details/141874175  浏览:    关键词:MySQL复习3

视图

视图(view)是一种虚拟存在的表,是一个逻辑表,本省没有数据,内容由查询定义。

基表:用来创建视图的表叫做基表

通过视图,我们可以查看基表的部分数据。视图数据来自定义视图的查询中使用的表,使用动态图动态生成。

优点

  • 简单
  • 安全
  • 数据独立

语法

create view <视图名> as <select语句>

案例

create view view_learn as select (
A.student_id from (
select student_id, num from score where course_id = 1
) as A left join (select student_id, num from score where course_id = 2
) as B on A.student_id = B.student_id
where A.num > if (isnull(B.num), 0, B.num)
);

流程控制

IF

if condition then
...
elseif condition then
...
else
...
end if

CASE

case valuewhen value then ...when value then ...else ...
end case

WHILE

while condition do
...
end while

LEAVE

-- 相当于break
leave label;

示例

-- leave语句退出循环或程序,只能和BEGIN ... END,LOOP,REPEAT,WHILE语句配合使用
-- 创建存储过程
delimiter //
create procedure example_leave(out sum int)
begindeclare i int default 1;declare s int default 0;while_label:while i <= 100 doset s = s + i;set i = i + 1;if i = 50 thenleave while_label;end if;end while;set sum = s;
end //
delimiter ;call example_leave(@sum);
select @sum;

image.png

ITERATE

-- 相当于 continue
iterate label;

LOOP

-- 相当于 while(true){}
loop...
end loop
-- 可以用LEAVE退出循环

示例

-- 创建存储过程
delimiter //
create procedure example_loop(out sum int)
begindeclare i int default 1;declare s int default 0;loop_label:loopset s = s + i;set i = i + 1;if i > 100 thenleave loop_label;end if;end loop;set sum = s;
end
//
delimiter ;call example_loop(@sum);
select @sum;

image.png

REPEAT

-- 相当于 do ... while(condition)
REPEAT...UNTIL condition
END REPEAT

示例

delimiter //
create procedure example_repeat(out sum int)
begindeclare s int default 1;declare i int default 0;repeatset s = s + i;set i = i + 1;until i > 100end repeat;set sum = s;
end
//
delimiter ;call example_repeat(@sum);
select @sum;

image.png

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com