![3053537fc1695b11768d15e95d3aca29.png](https://img-blog.csdnimg.cn/img_convert/3053537fc1695b11768d15e95d3aca29.png)
创建数据表
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
CREATE TABLE `test_demo_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 21 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
创建函数或者存储过程
存储过程
基本语法
create procedure name ([params])
UNSIGNED [characteristics] routine_body
params : in|out|inout 指定参数列表 代表输入与输出
routine_body: SQL代码内容,以begin ........ end
characteristics: 指定存储过程特性,包含5种
1 DETERMINISTIC 不确定的
2 NO SQL 没有SQl语句,当然也不会修改数据
3 READS SQL DATA 只是读取数据,当然也不会修改数据
4 MODIFIES SQL DATA 要修改数据
5 CONTAINS SQL 包含了SQL语句
Demo
CREATE DEFINER = `root` @`%` PROCEDURE `test_1`() MODIFIES SQL DATA
BEGIN
INSERT INTO test_demo_table ( id, `name` ) VALUES ( 0, 'xiaosan' );
END
存储过程函数中可以通过mysql查询结果为其参数复制: 其语句为select .... into
函数
基本语法
CREATE FUNCTION name ([params])
UNSIGNED [characteristics] routine_body
注意: 创建函数需要注意3个地方,
- RETURNS: 需指定返回类型
- UNSIGNED NO SQL 需指定存储过程特性
3.return: 返回需要的数据
Demo
CREATE DEFINER=`root`@`%` FUNCTION `test_2`(f_id INT(3)) RETURNS VARCHAR(20) CHARSET utf8mb4
BEGIN
DECLARE o_name VARCHAR(20);
SELECT name INTO o_name FROM test_demo_table WHERE id = f_id;
RETURN o_name;
END
DEFINER:指明谁有权力来执行。
DELIMITER 的使用
”DELIMITER //“ 表示设置“//”符号为结束语,因为mysql中默认语句结束为分号‘;’,为了避免存储过程与mysql语句符号冲突,所以有时使用DELIMITER来改变结束语符号,要配合end //来使用;
示例:创建一个root账户执行的存储过程,输出给定字符串的长度
declare: 存储过程及函数内部定义变量
default:默认值
查看数据库是否开启了定时任务
# 返回on就是开启了
show variables like '%event_scheduler%';
创建定时任务计划
数据库配置my.cnf里面添加配置信息
# 开启定时任务
event_scheduler=ON
启动定时任务
alter event finish_data on completion preserve enable;