以下为个人作为初学者的自己看书总结,访客看到有不足或差错之处,欢迎交流指正。

day9 2020/10/23


目录

  • 12.1 使用存储过程
  • 12.1.1 创建存储过程
  • 12.1.2 修改分隔符的设置
  • 12.1.3 执行存储过程
  • 12.1.4 创建只显示大于等于指定值的记录的存储过程
  • 12.2 显示、删除
  • 12.3 存储函数
  • 12.3.1 创建存储函数
  • 12.3.2 显示、删除
  • 12.4 触发器
  • 12.4.1 创建
  • 12.4.2 确认、删除


12.1 使用存储过程

将多个 SQL 语句组合成在一起,只需要使用 “CALL XX” 就可以执行的集合,该集合就是存储过程。

12.1.1 创建存储过程
CREATE PROCEDURE 存储过程名()
BEGIN
    SQL语句1
    SQL语句2
END
12.1.2 修改分隔符的设置
delimiter //

如:delimiter //
CREATE PROCEDURE pr1()
BEGIN
SELECT * FROM tb;
SELECT * FROM tb1;
END
//

delimiter ;
12.1.3 执行存储过程
CALL 存储过程名;
12.1.4 创建只显示大于等于指定值的记录的存储过程
1. 存储过程中参数的编写
CREATE PROCEDURE 存储过程名(参数名  数据类型);

如:delimiter //
CREATE PROCEDURE pr2(d INT)
BEGIN
SELECT * FROM tb WHERE sales>=d;
END
//

delimiter ;

12.2 显示、删除

SHOW CREATE PROCEDURE 存储过程名;

DROP PROCEDURE 存储过程名;

12.3 存储函数

存储函数的方式和存储过程基本相同,但存储函数在执行后会返回一个值。

12.3.1 创建存储函数

注意是 RETURNS 有 S

1. CREATE FUNCTION 存储函数名(参数 数据类型) RETURNS 返回值的数据类型
BEGIN
    SQL 语句...
    RETURN 返回值·表达式
END

2. 定义变量
DECLARS 变量名 数据类型;


如:返回记录平均值的存储函数
delimiter //
CREATE FUNCTION fu2() RETURNS DOUBLE
BEGIN
DECLARE r DOUBLE;
SELECT AVG(sales) INTO r FROM tb;
RETURN r;
END
//

delimiter ;

SELECT fu2();
12.3.2 显示、删除
DROP FUNCTION 存储函数名;

SHOW CREATE FUNCTION 存储函数名;

12.4 触发器

12.4.1 创建
CREATE TRIGGER 触发器名 BEFORE(或者AFTER) DELETE等命令
ON 表名 FOR EACH ROW 
BEGIN
    使用更新前(OLD.列名)或者更新后(NEW.列名)的处理
END
12.4.2 确认、删除
SHOW TRIGGERS;

DROP TRIGGER 触发器名;

接下来一系列会每天记录《MySQL基础教程》的学习总结。挑战半个月看书,动手,写博客