版本比较
比较
标识
- 该行被添加。
- 该行被删除。
- 格式已经改变。
指组合在一起的一堆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 函数名 |
函数体的定义
目录 |
---|