mysql Event、存储过程、表命令
Mysql事件调度器(Event Scheduler)类似于定时器,可以在某一个时间点执行一个SQL语句或一个语句块(BEGIN ... END);或者每隔固定间隔重复执行。类似于Linux下的crontab,或Windows下的Task Scheduler。
Mysql使用存储过程和Event事件定期删除数据
整个过程总共分为三步:
1. 写存储过程
2. 写Event事件
3. 把Event事件设置成Enable并打开事件任务
1. 存储过程
首先定义一个存储过程,del_data,传入一个int参数就是保留的log内容天数,过程的内容就是删除t_xxx表一周外的数据和删除t_log表的保留天数外的数据。
create procedure del_data(IN `date_inter` int)
begin
delete from t_xxx where date < date_sub(curdate(),interval 7 day);
delete from t_log where date < date_sub(curdate(),interval date_inter day);
end
2. 写Event事件
定义del_event,在Event事件中定义事件执行的开始事件和频率,事件设置成Enable,并且到点的时候执行del_data存储过程(传进去的天数是30天)。
create event del_event
on schedule
EVERY 1 day
STARTS '2014-01-01 03:00:00'
ON COMPLETION PRESERVE ENABLE
do call del_data(30)
还可以控制事件的开启个关闭:
关闭事件任务: alter event del_event ON COMPLETION PRESERVE DISABLE;
开户事件任务: alter event del_event ON COMPLETION PRESERVE ENABLE;
你也可以使用show events看看刚才新建的事件。
3. 打开事件任务
查看event是否开启: show variables like '%sche%';
将事件计划开启: set global event_scheduler = ON;
当然,你也可以把存储过程写在Event事件中,就是不太规范啦:
delimiter | CREATE EVENT e_daily
ON SCHEDULE
EVERY 1 DAY
COMMENT 'Saves total number of sessions then clears the table each day'
DO
BEGIN
INSERT INTO site_activity.totals (time, total)
SELECT CURRENT_TIMESTAMP, COUNT(*)
FROM site_activity.sessions;
DELETE FROM site_activity.sessions;
END | delimiter ;
http://www.2cto.com/database/201402/278096.html
1.显示数据库中所有的存储过程
- show procedure status;
2.显示某个存储过程的详细信息(sp为存储过程名称)
- show create procedure sp;
3.显示当前库中所有表
- show tables;
4.显示某个表的建表语句(test为表名)
- show create table test;
5.删除存储过程(sp为存储过程名称)
- drop procedure if exists sp;
6.先建表
- --设置分隔符为双斜杠(//),默认为分号(;),由于存储过程中要用到分号,固将结束分隔符设置为双斜杠
- delimiter//
- DROP TABLE if exists test //
- CREATE TABLE test(id int(11) NULL) //
7.最简单的存储过程
- drop procedure if exists sp//
- CREATE PROCEDURE sp() select 1 //
- --调用存储过程
- call sp()//
8.带输入参数的存储过程
- drop procedure if exists sp1 //
- create procedure sp1(in p int)
- begin
- --声明一个int类型的变量
- declare v1 int;
- --将参数传给声明的变量,此步骤多余,可不要
- set v1 = p;
- insert into test(id) values(v1);
- end
- //
- --调用这个存储过程
- call sp1(1)//
- --去数据库查看调用之后的结果
- select * from test//
9.带输出参数的存储过程
- drop procedure if exists sp2 //
- create procedure sp2(out p int)
- begin
- select max(id) into p from test;
- end
- //
- --调用该存储过程,注意:输出参数必须是一个带@符号的变量
- call sp2(@pv)//
10.带输入和输出参数的存储过程
- drop procedure if exists sp3 //
- create procedure sp3(in p1 int , out p2 int)
- begin
- if p1 = 1 then
- --用@符号加变量名的方式定义一个变量,与declare类似
- set @v = 10;
- else
- set @v = 20;
- end if;
- --语句体内可以执行多条sql,但必须以分号分隔
- insert into test(id) values(@v);
- select max(id) into p2 from test;
- end
- //
- --调用该存储过程,注意:输入参数是一个值,而输出参数则必须是一个带@符号的变量
- call sp3(1,@ret)//
- select @ret//
11.既做输入又做输出参数的存储过程
- drop procedure if exists sp4 //
- create procedure sp4(inout p4 int)
- begin
- if p4 = 4 then
- set @pg = 400;
- else
- set @pg = 500;
- end if;
- select @pg;
- end//
- call sp4(@pp)//
- --这里需要先设置一个已赋值的变量,然后再作为参数传入
- set @pp = 4//
- call sp4(@pp)//
http://weidongke123-126-com.iteye.com/blog/1675375
mysql Event、存储过程、表命令的更多相关文章
- sql语句备份/导入 mysql数据库或表命令
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/qq1355541448/article/details/30049851
- MySQL中将数据库表名修改成大写的存储过程
原文:MySQL中将数据库表名修改成大写的存储过程 MySQL中将数据库表名修改成大写的存储过程 创建存储过程的代码: DROP PROCEDURE IF EXISTS uppercaseTablen ...
- mysql详解常用命令操作,利用SQL语句创建数据表—增删改查
关系型数据库的核心内容是 关系 即 二维表 MYSQL的启动和连接show variables; [所有的变量] 1服务端启动 查看服务状态 sudo /etc/init.d/mysql status ...
- MYSQL 使用存储过程批量更新表数据
功能:实现将表result_good_city_dzl中的字段lat更新为表 result_good_city_lh中的lat,条件是两个表中的id一样 即: update result_good_c ...
- mybatis调用mysql的存储过程(procedure),实现查询操作(student表中的某个年级中的总人数 select (1) 或者 select (*))
step1:在mysql cmd中新建存储过程: drop procedure if exists queryCountByGrade ; delimiter // -- 定义存储过程结束符号为// ...
- mysql的存储过程,函数,事件,权限,触发器,事务,锁,视图,导入导出
1.创建过程 1.1 简单创建 -- 创建员工表 DROP TABLE IF EXISTS employee; CREATE TABLE employee( id int auto_increment ...
- MySQL数据库以及表的管理
MySQL数据库以及表的管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 今天我们探讨的话题就是如何使用MySQL做开发,我们运维的主要工作不是去开发SQL的,但尽管如此,我们有 ...
- 高可用Mysql架构_Mysql主从复制、Mysql双主热备、Mysql双主双从、Mysql读写分离(Mycat中间件)、Mysql分库分表架构(Mycat中间件)的演变
[Mysql主从复制]解决的问题数据分布:比如一共150台机器,分别往电信.网通.移动各放50台,这样无论在哪个网络访问都很快.其次按照地域,比如国内国外,北方南方,这样地域性访问解决了.负载均衡:M ...
- MySql创建存储过程,并使用事件定时调用
一.使用命令行创建存储过程的步骤 :参数详情参考 https://www.mysqlzh.com/ 1.模板 delimiter $$ # 设置分隔符为 '$$' ,mysql默认的语句分隔符为 ' ...
随机推荐
- linux 下的对拍
搞了一上午终于弄好了一个对拍,估计以后调试会方便很多. #!/bin/bash while true; do ./makedate>tmp.in ./XXXXX<tmp.in>tmp ...
- 数字积分法DDA(DDA(Digital Differential Analyzer)
数字积分法DDA(DDA(Digital Differential Analyzer) 数字积分法又称数字微分分析法DDA(Digital differential Analyzer),是在数字 ...
- SOA 新业务语言 新系统架构——什么是SOA
原文地址:http://blog.csdn.net/ichaos/archive/2008/01/20/2054377.aspx SOA的概念是Gartner在1996年提出来的,并于2002年12月 ...
- Java 8 新特性终极版
声明:本文翻译自Java 8 Features Tutorial – The ULTIMATE Guide,翻译过程中发现并发编程网已经有同学翻译过了:Java 8 特性 – 终极手册,我还是坚持自己 ...
- MVC 校验
校验保障了MVC 应用程序安全性. Models 文件夹包含表示应用程序模型的类 1,创建一个项目MvcValidateDemo. 2,创建一个实体类UserInfo在Models中,包含Id.Use ...
- Open Session In View
Open Session In View模式的主要思想是:在用户的每一次请求过程始终保持一个Session对象打开着 实现步骤: 步骤一.创建一个Web项目,创建包cn.happy.util,创建Hi ...
- NetAnalyzer笔记 之 九 使用C#对HTTP数据还原
[创建时间:2016-05-12 00:19:00] NetAnalyzer下载地址 在NetAnalyzer2016中加入了一个HTTP分析功能,很过用户对此都很感兴趣,那么今天写一下具体的实现方式 ...
- XPath详解
xPath技术 1 引入 问题:当使用dom4j查询比较深的层次结构的节点(标签,属性,文本),比较麻烦!!! 2 xPath作用 主要是用于快速获取所需的节点对象. 3 在dom4j中如何使用 ...
- 总结下java经常犯的错误
编写代码是一种艺术,认识错误是我们代码改进的重要途径之一.以下情况并非大家都能碰到过,但希望提高代码质量的人都引以为戒.以下各种情况,都是初学者经常犯的错误. 1.1 字符串没有判断是否为 ...
- 你必须掌握的Java基础:JSON解析工具-json-lib
一.简介 json-lib是一个Java类库,提供将Java对象,包括beans,maps,collections,java arrays和xml等转换成JSON,或者反向转换的功能. 二.准备 在 ...