mysql视图和存储过程

视图


视图就是将一条sql查询语句封装起来,之后使用sql时,只需要查询视图即可,查询视图时会将这条sql语句再次执行一遍。视图不保存数据,数据还是在表中。

SELECT 语句所查询的表称为视图的基表,而查询的结果集称为虚拟表,视图本身并不存储具体的数据,视图的数据存在于视图的基表中,基本表数据发生了改变,视图的数据也会跟着改变,因为查询语句时不变的,使用视图时会将sql语句再调用一次

-- 定义视图:
create view 视图名 as  查询语句(select 列1,列2...from 表)
-- 使用视图
select * from 视图名
-- 删除视图
drop view 视图名

存储过程


存储过程是什么?

如果实现用户的某些需求时,需要编写一组复杂的 SQL 语句才能实现,那么可以将这组复杂的 SQL 语句集编写在数据库中,由 JDBC 调用来执行这组 SQL语句。把编写在数据库中的 SQL 语句集称为存储过程。

存储过程也就是将逻辑处理的过程是放在数据库中,而不放在java后端代码中,就类似于java语言中的方法,需要先定义,使用时调用。将一些逻辑处理的代码可以事先存储在数据库中,然后使用时直接调用即可。可以减少应用程序与数据库之间的交互次数。

语法格式

存储过程事先需要创建好(包含逻辑),存储过程中可以传入参数。参数分为3种,in(输入参数) out(输出参数) inout(即可以输入还可以输出):

create procedure 存储过程名([in 变量名 类型,out 参数 2,…])

begin

[declare 变量名 类型 [DEFAULT 值];]

存储过程语句块;

end;

CREATE VIEW test ASSELECT * FROM admin;  -- 创建视图
SELECT * FROM test   -- 使用视图
DROP VIEW test       -- 删除视图
​
​
​
​
-- 创建存储过程
DELIMITER $$
CREATE PROCEDURE `gradedb`.`test1`(IN namess INT)
BEGIN
    DECLARE a INT DEFAULT 0;
    SELECT  a;
    SET namess=10;
    SELECT  namess;
    
END$$
DELIMITER ;
​
​
-- 调用存储过程
CALL test1(1);
​
​
-- 流程控制语句
DELIMITER $$
CREATE PROCEDURE `gradedb`.test2(IN t_day INT )
BEGIN
 IF t_day=1 THEN 
    SELECT"星期一";
    ELSEIF t_day =2 THEN 
     SELECT"星期二";
       ELSE SELECT"无效日期";
  END IF;
END$$
DELIMITER ;
​
-- 调用存储过程
CALL test2(2);
​
​
-- case when
DELIMITER $$
​
CREATE PROCEDURE `gradedb`.test3 (IN t_day INT)
BEGIN
  CASE
    WHEN t_day = 1
    THEN
    SELECT
      "星期一";
    WHEN t_day = 2
    THEN
    SELECT
      "星期二";
  END CASE;
END $$
        
-- 调用存储过程
 CALL test3(1);       
        
        
        
        
-- 循环
DELIMITER $$
​
CREATE PROCEDURE `gradedb`.test4 () 
BEGIN
DECLARE v_num INT DEFAULT 0;
-- 循环开始 
 addnum :LOOP
  SET v_num = v_num + 1;
  IF v_num = 10
  THEN LEAVE addnum;
  END IF;
END LOOP;
-- 循环结束 
SELECT
  v_num;
END $$
-- 调用存储过程
CALL test4()

举例:

创建存储过程,完成一个逻辑实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值