-- 创建一个存储过程
DELIMITER $
CREATE
PROCEDURE存储过程名称(返回类型参数名1参数类型1,....)
[......]
BEGIN
-- 具体组成存储过程的SQL语句....
END $
DELIMITER ;
-- 创建一个存储函数
DELIMITER $
CREATE
FUNCTION存储函数名称(参数名1参数类型1,....)
RETURNS数据类型
[NOT]DETERMINISTIC statements
BEGIN
-- 具体组成存储函数的SQL语句....
END $
DELIMITER ;
-- 创建一个触发器
CREATETRIGGER触发器名称
{BEFORE | AFTER}{INSERT|UPDATE|DELETE}ON表名
FOREACHROW
-- 触发器的逻辑(代码块);
-- ------------- 用户变量与局部变量 ---------------
-- 定义、修改用户变量
set@变量名称=变量值;
-- 查询用户变量
select@变量名称;
-- 定义局部变量
DECLARE变量名称数据类型default默认值;
-- 为局部变量赋值(方式1)
SET变量名=变量值;
-- 为局部变量赋值(方式2)
SET变量名:=变量值;
-- 为局部变量赋值(方式3)
select查询结果字段into变量名from表名;
-- ------------- 流程控制 ---------------
-- if、elseif、else条件分支语法
IF 条件判断THEN
-- 分支操作.....
ELSEIF 条件判断 THWN
-- 分支操作.....
ELSE
-- 分支操作.....
END IF
-- case分支判断语句
-- 第一种语法
CASE变量
WHEN值1THEN
-- 分支操作1....
WHEN值2THEN
-- 分支操作2....
.....
ELSE
-- 分支操作n....
ENDCASE;
-- 第二种语法
CASE
WHEN条件判断1THEN
-- 分支操作1....
WHEN条件判断2THEN
-- 分支操作2....
.....
ELSE
-- 分支操作n....
ENDCASE;
-- 循环:LOOP、WHILE、REPEAT
-- loop循环
循环名称:LOOP
-- 循环体....
END LOOP 循环名称;
-- while循环
【循环名称】:WHILE 循环条件 DO
-- 循环体....
END WHILE 【循环名称】;
-- repeat循环
【循环名称】:REPEAT
-- 循环体....
UNTIL 结束循环的条件判断
END REPEAT 【循环名称】;
-- 循环跳转
LEAVE 【循环名称】;-- 结束某个循环体
ITERATE 【循环名称】;-- 跳出某个循环体,继续下次循环
-- ------------- 存储过程的游标 ---------------
-- ①声明(创建)游标
DECLARE游标名称CURSORFORselect...;
-- ②打开游标
OPEN游标名称;
-- ③使用游标
FETCH游标名称INTO变量名称;
-- ④关闭游标
CLOSE 游标名称;
在上面列出了MySQL
中存储过程、存储函数与触发器的相关语法,接着再来聊聊管理的命令:
• SHOW PROCEDURE STATUS;
:查看当前数据库中的所有存储过程。
• SHOW PROCEDURE STATUS WHERE db = '库名' AND NAME = '过程名';
:查看指定库中的某个存储过程。
• SHOW CREATE PROCEDURE 存储过程名;
:查看某个存储过程的源码。
• ALTER PROCEDURE 存储过程名称 ....
:修改某个存储过程的特性。
• DROP PROCEDURE 存储过程名;
:删除某个存储过程。
• SHOW FUNCTION STATUS;
:查看当前数据库中的所有存储函数。
• SHOW CREATE FUNCTION 存储过程名;
:查看某个存储函数的源码。
• ALTER FUNCTION 存储过程名称 ....
:修改某个存储函数的特性。
• DROP FUNCTION 存储过程名;
:删除某个存储函数。
• SHOW TRIGGERS;
:查看当前数据库中定义的所有触发器。
• SHOW CREATE TRIGGER 触发器名称;
:查看当前库中指定名称的触发器。
• SELECT * FROM information_schema.TRIGGERS;
:查看MySQL
所有已定义的触发器。
• DROP TRIGGER IF EXISTS 触发器名称;
:删除某个指定的触发器。