版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

指组合在一起的一堆SQL语句,用于简化数据处理流程。

可以将某个常用功能对应的一些语句封装成一个存储程序,之后只需要调用这个存储程序就可以完成这个常用功能,从而免去每次都要写好多语句的麻烦。

存储程序包含以下分类:

...

Jsmind
<?xml version="1.0" encoding="utf-8"?>

<map version="1.0.1"> 
  <node ID="aiRrV41m" TEXT="存储程序"> 
    <node ID="tzxlYvKW" TEXT="存储例程" POSITION="right"> 
      <node ID="rO72tK0L" TEXT="存储函数" POSITION="right"></node>  
      <node ID="K0e1zLOZ" TEXT="存储过程" POSITION="right"></node>  
    </node>  
    <node ID="7U20o0J9" TEXT="触发器" POSITION="right"></node>  
    <node ID="ETPVzxlF" TEXT="事件" POSITION="right"></node>  
  </node> 
</map>

用户自定义变量

代码块
SET @a = 1;
SELECT @a;
SET @a = 2;
SET @b = @a;
SET @a = (SELECT m1 FROM t1 LIMIT 1);
SELECT n1 FROM t1 LIMIT 1 INTO @b;
SELECT m1, n1 FROM t1 LIMIT 1 INTO @a, @b;
提示

如果定义变量时没有加@符号,则MySQL会把这个变量当成系统变量来对待。

存储函数

创建存储函数

格式如下:

代码块
DELIMITER $  # 将MySQL客户端语句分隔符替换为$

CREATE FUNCTION 存储函数名称([参数列表])
RETURNS 返回值类型
BEGIN
    函数体内容
END

DELIMITER ;  # 恢复MySQL客户端语句分隔符为;

比如:

代码块
DELIMITER $

CREATE FUNCTION avg_score(s VARCHAR(100))
RETURNS DOUBLE
BEGIN
    RETURN (SELECT AVG(score) FROM student_score WHERE subject = s);
END

DELIMITER ;

调用上面的存储函数的语句如下:

代码块
SELECT avg_score('MySQL是怎样运行的');

查看和删除存储函数

查看已定义的存储函数:

代码块
SHOW FUNCTION STATUS [LIKE 需要匹配的函数名];

查看某个存储函数的具体定义:

代码块
SHOW CREATE FUNCTION 函数名\G

删除存储函数:

代码块
DROP FUNCTION 函数名

函数体的定义











目录