MYSQL存储 、创建存储Create、查看存储、更新/修改存储、删除存储 以及实例讲解

1.存储

存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。

存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。

存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。

创建存储

1)向导创建

选择对应数据库下函数右键新建函数->选择过程->填写输入/输出参数->填写函数体信息->保存->填写函数名

  1. 使用SQL创建

语法:

CREATE PROCEDURE  过程名([IN|OUT|INOUT] 参数名 数据类型],[IN|OUT|INOUT] 参数名 数据类型,…)
[特性 ...] 过程体 

参数说明:

IN 输入参数
表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值

​ OUT 输出参数
该值可在存储过程内部被改变,并可返回

​ INOUT 输入输出参数
调用时指定,并且可被改变和返回

过程体说明:过程体的开始与结束使用BEGIN与END进行标识。

实例说明:

IN

# SELECT在存储过程中 是将变量返回的作用
CREATE PROCEDURE in_param(IN p_in int)
    BEGIN
    SELECT p_in;
    SET p_in=2;
    SELECT p_in;
    END;
  
 CREATE PROCEDURE in_param2(IN p_in int)
    BEGIN
    SET p_in=2;
    SELECT p_in;
    END;

#调用
SET @p_in=1;
CALL in_param(@p_in);
SELECT @p_in;
结果为:1,1

CALL in_param2(@p_in);
SELECT @p_in;
结果为:2,1

以上可以看出,p_in虽然在存储过程中被修改,但并不影响@p_id的值

OUT

# SELECT在存储过程中 是将变量返回的作用
CREATE PROCEDURE in_param3(OUT p_in int)
    BEGIN
    SELECT p_in;
    END;
  
 CREATE PROCEDURE in_param4(OUT p_in int)
    BEGIN
    SET p_in=2;
    SELECT p_in;
    END;

#调用
SET @p_in=1;
CALL in_param3(@p_in);
SELECT @p_in;
结果为:null,null

CALL in_param4(@p_in);
SELECT @p_in;
结果为:2,2

以上可以看出,p_in在存储过程中被修改,并影响@p_id的值
当p_in被直接返回时为空,因为p_in是输出变量,中途中变量没有被赋值,相当于没有定义直接被返回了。

INOUT

CREATE PROCEDURE in_param5(INOUT p_in int)
    BEGIN
    SELECT p_in;
    END;
  
 CREATE PROCEDURE in_param6(INOUT p_in int)
    BEGIN
    SET p_in=2;
    SELECT p_in;
    END;
    
#调用
SET @p_inout=1;
CALL in_param5(@p_inout) ;
SELECT @p_inout;
结果为:1,1

CALL in_param6(@p_inout) ;
SELECT @p_inout;
结果为:2,2
当p_inout被直接返回时,变量值不变,当中途中变量被赋值,@p_inout的原始值也被改变了时。
查看存储

1)选中想要查看的存储->设计存储

2) sql 查看

// 展示所有函数/ 存储
SELECT * FROM mysql.proc ;

// 查看自定义的所有存储
SHOW PROCEDURE STATUS

SHOW PROCEDURE STATUS where Db ="py_etl"
 
// 可以根据名称查看所有自定义的存储,支持模糊查询
show PROCEDURE status like '名字';
show PROCEDURE status like '%me';
show PROCEDURE status like "in_param"
 
// 查看函数的创建语句
show create PROCEDURE '函数名字';
show create PROCEDURE ym_datesql

//使用函数
call PROCEDURE(参数)
更改存储

1)选中想要更改的过程> 右键设计函数>写过程主体 -> 保存

2)更改函数的时候,他是将你原来的过程进行了删除,至更新过程的主体内容,所以当我们想要更新过程时,不如重新建立一个过程。怎么验证呢,在设计函数将过程主体内容进行更改,点击SQL预览,就可以看到执行的SQL语句了,例如:之前 in_param ,注释掉后面两句赋值代码,他的sql内容就是

DROP PROCEDURE IF EXISTS `in_param`;

CREATE DEFINER = `root`@`localhost` PROCEDURE `in_param`(IN p_in int)
BEGIN
    SELECT p_in;
    
    END;

可以清楚地看到 它是将原有的函数进行删除,但 参数没变的情况下 进行更改主体内容,所以我们要更改过程不如之间重新创建一个,避免参数上的一个问题。

删除存储

1)选中想要更改的过程-> 右键删除函数

2)

// 删除对应函数
drop PROCEDURE '函数名'drop PROCEDURE in_param ;

你可能感兴趣的:(学习,mysql)