ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

视图及存储过程

2022-06-15 11:31:16  阅读:133  来源: 互联网

标签:存储 set number 视图 month score result snumber 过程


一、视图

1、什么是视图?

 

2、基本使用

# 创建视图
create or replace view user_view as select id ,name from user where id <=3;
# 查询视图
show create view user_view;
select * from  user_view;
# 修改视图
create or replace view user_view as select id ,name from user where id <=10;
alter view user_view as select id ,name from user where id <=3;
# 删除视图
drop view user_view;

二、存储过程

1、什么是存储过程?

通过封装一些sql 来提高执行sql的执行效率    
在服务器中执行时,使用delimiter指定sql的结束符

2、基本使用

if-else语法:
# 创建存储过程 create procedure score_result(in score int , out result varchar(10)) begin if score >= 85 then set result := '优秀'; elseif score >= 60 then set result := '及格'; else set result := '不及格'; end if; select concat('您输入的分数是;',score,',查询结果是:',result); end; # 调用存储过程 call score_result(89 ,@result); #查询结果 select @result; # 删除存储过程 drop procedure score_result;
# case语法:
#创建存储过程
create procedure month_case(in month int ,out result varchar(20))
begin
    case
        when month >=1 and month <=3 then
        set result := '第一季度';
        when month >=4 and month <=6 then
        set result := '第二季度';
        when month >7 and month <=9 then
        set result := '第三季度';
        when month >=10 and month <=12 then
        set result := '第四季度';
        else set result := '非法参数';
    end case;
    select concat('您输入的月份是;',month,',所在的季度是:',result);
end;
#调用存储过程
call month_case(3,@result)
# while语法 从1累加到n,n为传入的值
create procedure sum_while(in number int ,out snumber int)
begin
    set snumber := 0;
    while number > 0 do
        set snumber := snumber + number;
        set number := number - 1;
    end while;
    select concat('sum结果为:',snumber);
end;
#调用存储过程
call sum_while(10,@snumber);

# repeat语法 从1累加到n,n为传入的值
create procedure sum_repeat(in number int ,out snumber int)
begin
    set snumber := 0;
    repeat
        set snumber := snumber + number;
        set number := number - 1;
        until number <=0
    end repeat;
    select concat('sum结果为:',snumber);
end;
#调用存储过程
call sum_repeat(10,@snumber);


# loop语法 从1累加到n,n为传入的值
create procedure sum_loop(in number int ,out snumber int)
begin
    set snumber := 0;
    sum:loop
       if number <=0 then
           leave sum;
       end if;
#  iterate 跳过当前进入下一个循环
#        if number%2 = 1 then
#            set number := number -1 ;
#            iterate sum;
#        end if;

        set snumber := snumber + number;
        set number := number - 1;
    end loop sum;
    select concat('sum结果为:',snumber);
end;
#调用存储过程
call sum_loop(10,@snumber);

 

练习:

1 200分转100分换算

create procedure score_convert(inout score double)
begin
    set score := score * 0.5;
    select concat('转换结果为:',score);
end;
# 赋值
set @score = 78;
# 调用
call score_convert(@score);
# 查询结果
select @score;
# 删除存储过程
drop procedure score_convert;

 

标签:存储,set,number,视图,month,score,result,snumber,过程
来源: https://www.cnblogs.com/ykluo/p/16377873.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有