MySQL中的变量、存储过程、自定义函数

本文详细介绍了MySQL中的变量类型,包括系统变量、用户变量和局部变量的声明、赋值及使用。此外,还深入讲解了存储过程的概念、创建语法、参数模式以及示例。存储过程有助于代码重用和效率提升。同时,文章提到了自定义函数的创建、调用和删除,以及与存储过程的区别。最后,通过实例展示了如何在MySQL中操作和管理这些元素。
摘要由CSDN通过智能技术生成

变量

系统变量

全局变量、会话变量

  • 查看系统变量:
    • show variables

自定义变量

包括用户变量与局部变量

  • 变量是用户定义的,不是由系统定义
  • 使用步骤:
    • 声明 赋值 使用

用户变量

  • 用户变量:
    • 针对于当前连接,等同于会话变量的作用域
    • 声明并初始化
      • set @用户变量名 = 值
      • set @用户变量名 :=值
      • select !@用户变量名 :=值
  • 更新用户变量值
    • 方式一:
      • set @用户变量名 = 值
      • set @用户变量名 :=值
      • select !@用户变量名 :=值
    • 方式二:
      • select字段 into 变量名 from 表
  • 查看用户变量值
    • select @用户变量名

局部变量

作用域 :仅仅在定义它的begin end中有效

应用在begin end中的第一句话

  • 声明
    • declare 变量名 类型·
    • declare 变量名 类型 default 值
  • 赋值
    方式一
    • set 局部变量名 =值
    • set 局部变量名 :=值
    • select @局部变量名:=值
      方式二:
    • select 字段 into 局部变量名 from 表
  • 使用 :
    • select 局部变量名

存储过程

  • 含义:一组预先编译好的SQL语句的集合,理解成批处理语句

  • 好处:

    • 提高代码的重用性
    • 简化操作
    • 减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率

创建语法

  • create procedure 存储过程名(参数列表)
    begin 
    		存储过程体(一组合法的SQL语句)
    
    end 
    
  • 参数列表包括三部分:

    ​ 参数模式 参数名 参数类型

  • 范例:

    in  stuname varchar(20)
    
    参数模式:
    IN: 该参数可以作为输入,也就是该参数需要调用传入值
    OUT :该参数可以作为输出,也就是该参数可以作为返回值
    INOUT :该参数既可以作为输入,也可以作为输出,既需要传入值,又可以返回值
    
  • 存储过程体中仅仅只有一句话时,begin end 可以省略

  • 存储过程体中的每条SQL语句的结尾都必须加分号

  • 存储过程的结尾可以用DELIMITER重新设置

范例

create procedure test5(in idd int)
begin 
		select * from tab where id = idd ;
		select * from student where id =id  ;
end 




CREATE PROCEDURE test(in id int)
begin
		DECLARE sum int DEFAULT 0;
		
		select count(*) into sum
		from ssm where ssm.id=id;
		select sum;
end




CREATE PROCEDURE test2(in name varchar(20),out sum int,out onename varchar(20))
begin
		select ssm.id,ssm.email into sum,onename
		from ssm where ssm.onename =name;
end;

set @num=0;
set @onename =null;
call test2("张三",@num,@onename);
select @num,@onename;




create PROCEDURE test3(inout a int,inout b int)
begin
		set a=a*2;
		set b=b*2;
END;

set @a=1;
set @b=2;
call test3(@a,@b);
select @a,@b




删除存储过程

  • 语法:drop procedure 存储过程名

  • drop PROCEDURE test
    
    drop procedure test2
    
  • 不能同时删除多个存储过程

查看存储过程的信息

  • show create procedure 存储过程名
show create procedure test3

自定义函数

  • 含义:一组预先编译好的SQL语句的集合,理解成批处理语句

函数与存储过程区别

  • 存储过程:可以有0个返回,也可以有多个返回,适合做批量插入、批量更新
  • 函数:有且仅有一个返回,适合做数据处理后返回一个结果

创建语法

  • create function 函数名(参数列表) returns 返回类型
    begin
    函数体
    end
  • 参数列表包含两部分:参数名 参数类型
  • 函数体 :肯定会有return 语句,放在函数体最后

调用语法:

  • select 函数名(参数列表)

查看函数

  • show create function 函数名

删除函数

  • drop function 函数名

范例

  • create FUNCTION num() RETURNS  int
    BEGIN
    		DECLARE c int DEFAULT 0;
    		select count(*) into c from ssm;
    		return c;
    END
    
    select num()
    
    
    
    create FUNCTION num(id int) RETURNS  int
    BEGIN
    		DECLARE c int DEFAULT 0;
    		select count(*) into c from ssm  where ssm.id=id; 
    		return c;
    END;
    
    select num(1)
    
    
    
    
    show create function num
    
    drop function num
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值