mysql删除like_MySQL定时删除数据
存储过程:
1. MySQL 5.0 以后开始⽀持存储过程。
2. 我们常⽤的SQL语句在执⾏的时候需要先编译,然后执⾏,⽽存储过程是⼀组为了完成特定功能的SQL语句集,经编译后存储在数据库中(因⽽执⾏速度⽐较快),⽤户通过制定存错过程的名字并给定参数来调⽤执⾏它。
Event事件:
1. MySQL 5.1以后开始引⼊event概念;
2. event 即“时间触发器”,通过在特定时间触发SQL语句或者存储过程执⾏。
MySQL 定时删除数据实现⽅法:mysql存储过程 + event事件
1. 写存储过程
DELIMITER //
create procedure del_data(IN `date_inter` int) //创建存储过程, IN表⽰需要传⼊⼀个参数
begin
delete from EPISODE_CCM_GENERAL_INFO where time < date_sub(curdate(), interval date_inter day);
delete from EPISODE_CEM_GENERAL_INFO where time < date_sub(curdate(),interval date_inter day);
end //
DELIMITER ;
格式注意:
a. 这⾥的DELIMITER // :
DELIMITER是关键字,这句的作⽤是声明分隔符为//,由于MySQL默认以“;”为分隔符,如果没有声明新的分隔符,编译器会把存储过程当做SQL语句进⾏处理,存储过程的编译过程就会报错。所以事先声明当前段的分隔符是'//', 存储过程不会执⾏这些代码。DELIMITER ;是将分隔符还原。
b. IN 输⼊参数,OUT输出参数,INOUT表⽰输⼊输出参数
c. 存储过程体的开始与结束⽤begin,end来标识;
d. curdate()返回当前的⽇期,
< 2015-06-18mysql删除重复的数据保留一条
curtime()返回当前时间,e.g. 14:12:09
now() 返回当前⽇期和时间,e.g. 2015-06-18 14:12:09
date_sub()函数,从⽇期减去指定的时间间隔;
e. 查看存储过程命令:show procedure status where db = "dbname";
f. 删除存储过程命令:drop procedure;
g. delete语句表⽰删除date_inter天前的数据。
2. 写event事件
create event del_event
on schedule
EVERY 1 day
STARTS '2015-05-11 13:00:00'
ON COMPLETION  PRESERVE ENABLE
do  call del_data(90)
a. 查看是否开启event:
show variables like "event_scheduler";
b. 开启event: (1: on 0 :off)
set global event_scheduler = 1;
c. on schedule 计划任务,有两种⽅式:
i). at 时间戳,⽤来完成单次的计划任务;
ii). every 时间,⽤来完成重复的计划任务;时间可以使⽤:year, month, day, hour, minute,seconds等。
d. on completion [not] preserve
on completion 表⽰当这个事件不会再发⽣的时候,preserve表⽰事件执⾏完毕后不会被drop掉。
enable /disable表⽰开启/关闭事件。
可以通过alter event event_name enable/disable更改事件的开启或关闭;
e. call del_data是调⽤存储过程;
f. show events 查看事件;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。